每当我发布我的应用程序时,我会更改所有的URL字符串和一些密钥,从测试环境变成生产环境。我的做法是在发布之前注释掉测试字符串。是否有更好的方法来处理基于构建类型的字符串?
release
和debug
版本。因此,如果您在项目的app/src
文件夹中添加debug
和release
文件夹,则可以在这些文件夹中声明不同的值。project
-app
-src
-debug
-java
...
-res
-values
-strings.xml
-release
-java
...
-res
-values
-strings.xml
-main
-java
...
-res
-values
-strings.xml
我应该补充一点,如果你有一个字符串没有在 debug
或者 release
文件夹中被定义,那么它会回退到你的 main
文件夹。
project/app/src/main/res/values/strings.xml
project/app/src/debug/res/values/url-strings.xml
project/app/src/release/res/values/url-strings.xml
- k3badmob.xml
的发布和主要版本相同(复制和粘贴),因为我正在将其移植到其他只能识别主文件夹中文件的操作系统上。 - aphoe如果只需要用几个字符串,可以使用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"'
}
}
resValue
的人,您可以在此处阅读DSL文档:https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html,该文档由Google文档链接提供:https://developer.android.com/studio/build/build-variants#build-types。 - Bruno Bieri在build.gradle中创建两个版本。然后按照链接中给出的方式再创建两个目录(developer.android.com/tools/building/configuring-gradle.html)。 由于只需要更改字符串,所以只需将strings.xml文件复制到新目录中(即dev和production) 删除原始的strings.xml即可。
就是这样。 :)
不需要移动java文件或其他布局文件。
简而言之,在所有构建版本中都应该保持一致的“main”目录中保留所有内容。 将依赖于构建版本的值覆盖到各自的目录中。