28

每次我发布我的应用程序时,我都会更改我所有的url 字符串和一些从测试到生产的键。我这样做的方式只是在发布之前注释掉测试字符串。有没有更好的方法来处理基于构建类型的字符串?

4

3 回答 3

54

假设您使用 Android Studio,默认情况下,系统会创建基本releasedebug风味。因此,如果您在项目的文件夹中添加一个debugrelease文件app/src夹,您可以在那里声明单独的值。

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

project
  -app
    -src
      -debug
        -java
          ...
        -res
          -values
            -strings.xml
      -release
        -java
          ...
        -res
          -values
            -strings.xml
      -main
        -java
          ...
        -res
          -values
            -strings.xml

我还应该补充一点,如果您有一个未在文件夹debugrelease文件夹中定义的字符串,它将回退到您的main文件夹。

于 2016-03-16T17:03:27.043 回答
5

好吧,如果需要使用几个字符串,你可以使用 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"'
    }
}
于 2020-06-04T09:47:42.247 回答
1

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

就是这样。:)

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

简而言之,将所有构建风格的所有内容都保留在“主”目录中。将依赖于构建风格的值覆盖到它们各自的目录中。

于 2016-03-16T17:27:53.773 回答