这可以通过使用产品风味来实现。
为了达到这个要求:
首先,在你的项目的 app 文件夹下创建 2 个文件,分别是 development.props 和 production.props。或者您可以将这两个文件添加到 app 文件夹下的一个包中,例如 config。
基本上,这两个文件包含键和值。这两个文件的密钥相同。但他们的价值观不同。这些文件包含一个键,例如“SERVER_URL”及其值。应该是这样写的:
SERVER_URL=”Server_url_value”
在这种情况下,只有 URL 不同。所以,我在 Props 文件中只添加了一个键值对。您可以添加更多。
然后,在 app build.gradle 文件中创建 ProductFlavours,例如开发和生产。现在,访问包含 URL 的不同 props 文件,如下所示:
productFlavors {
development {
getProps('./config/development.props').each { p ->
buildConfigField 'String', p.key, p.value
}
}
production {
getProps('./config/production.props').each { p ->
buildConfigField 'String', p.key, p.value
}
}
}
def getProps(path) {
Properties props = new Properties()
props.load(new FileInputStream(file(path)))
return props
}
现在,对于每种风格,都有一个构建类型,并且这个 BuildType 被添加到 app build.gradle 中。例如,构建类型为 Debug 和 release。我有两种口味,即开发和生产。因此,将使用风味和构建类型创建 gradle 任务,如下所示:
assemble{flavourName}{BuildType}
现在,您只需键入这些命令。它将生成所需的 APK 及其相应的 URL。命令是:
./gradlew assembleProductionRelease 将生成带有生产 URL 的发布版本。
./gradlew assembleDevelopmentDebug 将生成带有开发 URL 的调试版本。
./gradlew assembleProductionDebug 将使用生产 URL 生成调试版本。
./gradlew assembleDevelopmentRelease 将生成带有开发 URL 的发布版本。
前三个 gradle 任务将非常有帮助。但最后一个任务将生成带有开发 URL 的发布版本。但这不推荐。所以,我们应该阻止开发者执行这个任务,即./gradlew assembleDevelopmentRelease
现在要限制开发人员使用 Development URL 生成发布版本,请在您的应用 build.gradle 文件中添加此 sn-p:
android.variantFilter { variant ->
if(variant.buildType.name.equals('release')
&& variant.getFlavors().get(0).name.equals('development')) {
variant.setIgnore(true);
}
}
现在,如果我们尝试执行任务,即./gradlew DevelopmentRelease。 Gradle 将停止生成构建并抛出异常并会说:在根项目中找不到此任务 assembleDevelopmentRelease。