我有一个Android应用程序,我想更改调试和其他 buildTypes 的应用程序标签。我没有任何口味!
以下是我认为它应该工作的设置:
-src
|-debug
|-res
|-values
|-strings.xml
|-main
|-res
|-values
|-strings.xml
|-java
[...]
我没有自定义源集只是调试buildType:
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
所以我虽然
sourceSets.debug.res.srcDirs = ['src/debug/res']
会诀窍。但事实并非如此。有什么想法吗?
How to change app name per Gradle build type不再有用了......
答案 0 :(得分:21)
我找到了另一个很好的解决方案,使用明显的占位符:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="${applicationLabel}">
<activity
android:label="${applicationLabel}">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
并在您的gradle文件中:
android {
defaultConfig {
manifestPlaceholders = [ applicationLabel:"@string/app_name"]
}
buildTypes {
debug {
applicationIdSuffix ".debug"
manifestPlaceholders = [ applicationLabel:"MyApp Debug"]
}
}
}
答案 1 :(得分:8)
buildTypes {
release {
resValue 'string', 'APP_NAME', '"My App Release"'
}
debug {
resValue 'string', 'APP_NAME', '"My App Debug"'
}
}
值\ strings.xml中
&LT; string name =&#34; app_name&#34; &GT; @串/ APP_NAME&LT; /串GT;
并在任何地方使用app_name
答案 2 :(得分:4)
你必须使用
|-debug
|-res
|-values
|-strings.xml
在您的图片中,您有debug / res / strings.xml
你也不需要它(因为它是标准的,但问题不在这里)。
sourceSets.debug.res.srcDirs = ['src/debug/res']
答案 3 :(得分:2)
您可以在gradle中创建一个也可以在xml中使用的字符串:
buildTypes {
debug {
buildConfigField "String", "app_name", "AppDebug"
}
release {
buildConfigField "String", "app_name", "AppRelease"
}
然后在xml:
中使用它android:label="@string/app_name"
请确保app_name
中未指定strings.xml
。
答案 4 :(得分:0)
试试这个。
buildTypes {
debug {
applicationIdSuffix ".debug"
}
sourceSets.debug.resources.srcDirs = ['src/debug/res']
}
答案 5 :(得分:0)
您是否记得在应用程序的build.gradle中删除目录列表?
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDir 'src'
// res.srcDir 'res' <--- This line should be removed
assets.srcDir 'assets'
答案 6 :(得分:0)
我知道这是一个很老的问题,但是我遇到了同样的问题并且解决了它。
如果您的应用build.gradle
中有一个代码,则应更新这些代码。
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
这些代码会自动生成您的AppName.iml
,并将默认调试和发布目录设置为/build-types/debug/res
,这与src/debug/res
不同。