【问题标题】:Define buildConfigField for androidTest为 androidTest 定义 buildConfigField
【发布时间】:2015-11-25 05:25:07
【问题描述】:

我在BuildConfig 中定义了一个特定字段,用于在运行时获取URL。因此,对于每种构建类型,我使用不同的字符串:

    prod {
        buildConfigField "String", "BASE_URL", "\"abc.com\""
    }

    debug {
        buildConfigField "String", "BASE_URL", "\"efg.com\""
    }

是否可以在运行 android 测试时定义不同的 URL?我尝试将此设置放在sourceSets->androidTest 下,但不被接受。

【问题讨论】:

    标签: android gradle android-gradle-plugin android-testing gradle-plugin


    【解决方案1】:

    您必须将其作为参数传递给connectedAndroidTest 任务。

    android {
        ...
        buildTypes {
            prod {
                buildConfigField "String", "BASE_URL", "\"${getBaseUrl("abc.com")}\""
            }
            debug {
                buildConfigField "String", "BASE_URL", "\"${getBaseUrl("efg.com")}\""
            }
        }
    }
    
    def getBaseUrl(String fallback) {
        return project.hasProperty("base_url") ? project.getProperties().get("base_url") : fallback
    }
    

    然后通过-P传递参数:

    ./gradlew connectedDebugAndroidTest -Pbase_url="xxx.com"
    ./gradlew connectedProdAndroidTest  -Pbase_url="yyy.com"
    

    【讨论】:

    • 很好的解决方案,谢谢。函数可以简化为 return project.getOrDefault().get("base_url", fallback)
    【解决方案2】:

    在 test/androidTest 目录中添加自定义 BuildConfig.javayour.app.package

    Android Studio 将其标记为红色,但可以正常工作。

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      相关资源
      最近更新 更多