android - 为 androidTest 定义 buildConfigField

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

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

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

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

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

最佳答案

您必须将它作为参数传递给 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"

关于android - 为 androidTest 定义 buildConfigField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33909021/

相关文章:

java - Android 库与本地 Maven 存储库一起使用

Android:如何保证文件上传到WCF服务?

android - Retrofit HEAD 必须使用 Void 作为 Kotlin 中的响应类型

java - Android 中的依赖项显示重复类错误

android - Android库-使用多种 flavor 并将其组合

android - 无法制作可执行的签名发布版本dexgaurd

java - 将同级项目资源添加到 Android 资源中,无需紧密耦合

android - android中是否有用于识别语音相同声音的库

android - 从 Android 应用程序打开 Gmail

gradle - 如何深入了解 "implementation"配置的依赖关系?