Android用于发布和调试版本的单独字符串值

时间:2016-03-16 15:18:22

标签: android gradle android-build android-build-flavors

每次我发布我的应用时,我都会将所有网址字符串和一些密钥从测试更改为生产。我这样做的方法就是在发布之前注释掉测试字符串。有没有更好的方法来处理基于构建类型的字符串?

3 个答案:

答案 0 :(得分:23)

假设您使用Android Studio,默认情况下系统会创建基本的debugdebug风格。因此,如果您在项目的release文件夹中添加app/srcproject -app -src -debug -java ... -res -values -strings.xml -release -java ... -res -values -strings.xml -main -java ... -res -values -strings.xml 文件夹,则可以在那里声明单独的值。

所以你的结构应该是这样的:

debug

我还应该补充一点,如果您的字符串未在releasemain文件夹中定义,那么它将回退到您的DynamicComponentLoader文件夹。

答案 1 :(得分:4)

好吧,如果需要使用一些字符串,可以使用Gradle

buildTypes {
    release {
        resValue 'string', 'adUnitIdMain', '"production-id-value-should-be-here"'
        resValue 'string', 'adUnitIdList', '"production-id-value-should-be-here"'
        resValue 'string', 'adUnitIdDetail', '"production-id-value-should-be-here"'
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug {
        resValue 'string', 'adUnitIdMain', '"test-id-value-should-be-here"'
        resValue 'string', 'adUnitIdList', '"test-id-value-should-be-here"'
        resValue 'string', 'adUnitIdDetail', '"test-id-value-should-be-here"'
    }
}

答案 2 :(得分:1)

在build.gradle中创建两种风格。然后是两个目录,再次在链接(developer.android.com/tools/building/configuring-gradle.html)中给出。 由于您只需要更改字符串,只需将strings.xml文件复制到新目录(即开发和生产)中 删除原始strings.xml

就是这样。 :)

无需移动您的java文件或其他布局文件。

简而言之,将“main”目录中的所有内容保留在所有构建版本中应保持一致。 将依赖于构建flavor的值覆盖到它们各自的目录中。