不同 string.xml 文件根据应用构建变体
Different string.xml files according to app Build Variants
我想根据构建 Variant/buildType 为 string.xml 不同值中的字符串分配一个值。我想象这样的事情:
res/values-debug/string.xml
<string name="my_string">some debug value</string>
res/values-release/string.xml
<string name="my_string">some release value</string>
但我在外面看不到这样的东西。
这可能吗?
resValue 'string', '<string_name>', "some string"
在 build.gradle 中为不同的构建 variants/product 风格定义不同的
可以通过您的 build.gradle 文件
buildTypes {
release {
resValue "string", "my_string", "some release value"
}
debug {
resValue "string", "my_string", "some debug value"
}
}
然后你就可以像@string/my_string
一样在你想要的地方使用这个值
是的,这是可能的!
在您的 build.gradle 中,您可以添加如下内容:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
debug {
applicationIdSuffix ".debug"
minifyEnabled false
debuggable true
signingConfig signingConfigs.release
}
}
然后在项目的 src
文件夹中应该有一个名为 main 的文件夹,在它旁边添加一个名为 debug
的文件夹。只要您正在构建调试风格,调试文件夹中的任何资源都会替换 main 中的资源,即发布文件夹。
应该是这样的:
src/
main/
java/ -- all your java code
res/
...
values/
strings.xml
debug/
res/
...
values/
strings.xml
编辑:其他两个答案中的方法也可以正常工作。但是如果你有很多字符串,将它们保持为 xml 可能更容易处理。
您可以直接从 Android Studio 进行。例如,如果您的 "staging" 风格需要不同的应用程序名称,您可以 (Android Studio v3.5):
- 右键单击值文件夹 -> 新建 -> 值资源文件
- Select "staging" 在源设置菜单中
- 指定 strings.xml 作为文件名
此时 Android Studio 会为您的特定构建变体生成一个额外的 strings.xml
文件。使用您的 "staging" 应用程序名称编辑创建的文件(例如 MyAppName - Staging)
build.gradle(应用程序)
productFlavors {
stage {
applicationIdSuffix ".staging"
buildConfigField 'String', 'SITE_URL', '"[staging_link_here]"'
}
prod {
buildConfigField 'String', 'SITE_URL', '"[production_link_here]"'
}
}
我想根据构建 Variant/buildType 为 string.xml 不同值中的字符串分配一个值。我想象这样的事情:
res/values-debug/string.xml <string name="my_string">some debug value</string> res/values-release/string.xml <string name="my_string">some release value</string>
但我在外面看不到这样的东西。 这可能吗?
resValue 'string', '<string_name>', "some string"
在 build.gradle 中为不同的构建 variants/product 风格定义不同的
可以通过您的 build.gradle 文件
buildTypes {
release {
resValue "string", "my_string", "some release value"
}
debug {
resValue "string", "my_string", "some debug value"
}
}
然后你就可以像@string/my_string
一样在你想要的地方使用这个值
是的,这是可能的!
在您的 build.gradle 中,您可以添加如下内容:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
debug {
applicationIdSuffix ".debug"
minifyEnabled false
debuggable true
signingConfig signingConfigs.release
}
}
然后在项目的 src
文件夹中应该有一个名为 main 的文件夹,在它旁边添加一个名为 debug
的文件夹。只要您正在构建调试风格,调试文件夹中的任何资源都会替换 main 中的资源,即发布文件夹。
应该是这样的:
src/
main/
java/ -- all your java code
res/
...
values/
strings.xml
debug/
res/
...
values/
strings.xml
编辑:其他两个答案中的方法也可以正常工作。但是如果你有很多字符串,将它们保持为 xml 可能更容易处理。
您可以直接从 Android Studio 进行。例如,如果您的 "staging" 风格需要不同的应用程序名称,您可以 (Android Studio v3.5):
- 右键单击值文件夹 -> 新建 -> 值资源文件
- Select "staging" 在源设置菜单中
- 指定 strings.xml 作为文件名
此时 Android Studio 会为您的特定构建变体生成一个额外的 strings.xml
文件。使用您的 "staging" 应用程序名称编辑创建的文件(例如 MyAppName - Staging)
build.gradle(应用程序)
productFlavors {
stage {
applicationIdSuffix ".staging"
buildConfigField 'String', 'SITE_URL', '"[staging_link_here]"'
}
prod {
buildConfigField 'String', 'SITE_URL', '"[production_link_here]"'
}
}