我们正在开发Android应用程序,我们需要分别指出两种不同的环境。让我们说它的分期和生产,但由于合规性要求,我们需要提供一个apk文件,应该有一种方法来改变环境 当它被要求时,他们可以确保同一个文件进行他们在分期测试时的生产。
我们在URL.xml中保留url详细信息,通常我们会给两个apks指向两个不同的环境。
所以我们只是徘徊是否有任何工具或任何其他方法,我们可以更改apk内的string.xml值。这样他们就可以使用该工具了 他们需要时更改网址。
答案 0 :(得分:1)
使用这种方式分隔网址
buildTypes {
debug {
buildConfigField "Boolean", "IS_DEBUG", 'true'
buildConfigField "String", "URL", 'https://appsgit.com/debugurl'
}
release {
buildConfigField "Boolean", "IS_DEBUG", 'false'
buildConfigField "String", "URL", 'https://appsgit.com/releaseurl'
}
}
请查看blog post以获取更多信息..
如果此解决方案不起作用。您可以尝试 Gradle BuildFlavor 。
像下面一样添加ProductFlavor(免费和付费)。
productFlavors {
free {
applicationId "com.appsgit.freeapp"
buildConfigField 'boolean', 'IS_PAID', 'false'
buildConfigField 'boolean', 'URL', 'http://freeversion.com'
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "app-free-" + defaultConfig.versionName + ".apk"))
}
}
}
paid {
applicationId "com.appsgit.paidapp"
buildConfigField 'boolean', 'IS_PAID', 'true'
buildConfigField 'boolean', 'URL', 'https://paidversion.com'
versionCode 1
versionName "1.0"
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "app-paid-" + defaultConfig.versionName + ".apk"))
}
}
}
}
并像这里一样创建代码库,
不要忘记Main
与所有口味共享。
答案 1 :(得分:0)
由于你的apk中的strings.xml会被更改,所以它将是两个不同的apk用于登台和制作(不同的sha256总和)。
如果不是问题,那么你可以使用" flavor"适用于两种不同的环境。
https://developer.android.com/studio/build/build-variants.html#flavor-dimensions
如果只需要一个apk用于登台和制作,那么你可以添加某种杀戮开关。例如,它可能是具有特殊名称的文件。如果文件存在于设备上,则apk使用登台路径以其他方式使用apk生产方式。
希望它对你有所帮助。
答案 2 :(得分:0)
您应该让用户在运行时选择环境。
为此,您应该从共享首选项中读取环境选项。
最简单的方法是创建一个Preferences Activity,其中包含一个复选框,用于选择是使用生产还是暂存环境。然后,映射逻辑以在选中或不选中复选框时使用适当的基本URL。