使用一个APK更改为两个环境

时间:2017-10-18 08:49:04

标签: java android apk

我们正在开发Android应用程序,我们需要分别指出两种不同的环境。让我们说它的分期和生产,但由于合规性要求,我们需要提供一个apk文件,应该有一种方法来改变环境 当它被要求时,他们可以确保同一个文件进行他们在分期测试时的生产。

我们在URL.xml中保留url详细信息,通常我们会给两个apks指向两个不同的环境。

所以我们只是徘徊是否有任何工具或任何其他方法,我们可以更改apk内的string.xml值。这样他们就可以使用该工具了 他们需要时更改网址。

3 个答案:

答案 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"))
        }
    }
}

}

并像这里一样创建代码库,

enter image description here

不要忘记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。