如何使用构建类型(调试与发布)来设置不同的样式和应用程序名称?
How to use build types (debug vs release) to set different styles and app names?
背景
在AndroidStudio上,你可以有不同的构建类型,每个都有自己的配置,类似于product-flavors(如图here)
问题
我希望每次我在某个地方安装我的应用程序时,我都能立即知道它是哪种类型 - 发布或调试,只需查看它。
为此,我想我可以使用 build.gradle 文件:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
问题是,我不知道该放什么。我希望应用程序名称不同(但在字符串文件中有字符串,因为它是翻译的),我想将应用程序中的某些内容的样式设置为不同(例如,操作栏的颜色) .
我发现我可以使用 "resValue"(找到它 ),但出于某种原因,无论我做什么,它都不会编译:
- 如果资源已经被声明(比如在 app-name 中,它是翻译的),它说资源是重复的
- 如果未声明资源,我无法通过 code/xml 访问它。
问题
如何为构建类型使用不同的资源值,即使它们已经存在?
How do I use different resource values for the build types, even if they already exist?
它们已经存在于 main
源集中。为您感兴趣的其他构建类型添加其他源集,您可以在其中覆盖所需的资源。
例如,在 this sample project 中,我有一个 main
源集和一个 debug
源集。两者在 res/values/strings.xml
中都有 app_name
字符串资源,但具有不同的值。在 debug
构建中,将使用资源的 debug
源集版本;在任何其他构建中(例如 release
),debug
源集将被完全忽略,并使用资源的 main
源集版本。
请注意,我没有 release
源集。特别是在覆盖资源时,这非常好——当您想要为构建类型更改某些内容时,您只需要一个构建类型的源集,而不是为您正在使用的每个构建类型。
在文件|项目结构|应用程序|风格中我们有:
Version Name: 1.3
在字符串资源文件中我们有:
<string name="app_name">MyAppTitle</string>
在 MainActivity "onCreate" 中 class:
...
//add version to application title
int versionCode = BuildConfig.VERSION_CODE; // unused in my application
String versionName = BuildConfig.VERSION_NAME;
this.setTitle(this.getTitle() + " v"+ versionName);
...
结果是"MyAppTitle v1.3"
背景
在AndroidStudio上,你可以有不同的构建类型,每个都有自己的配置,类似于product-flavors(如图here)
问题
我希望每次我在某个地方安装我的应用程序时,我都能立即知道它是哪种类型 - 发布或调试,只需查看它。
为此,我想我可以使用 build.gradle 文件:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
问题是,我不知道该放什么。我希望应用程序名称不同(但在字符串文件中有字符串,因为它是翻译的),我想将应用程序中的某些内容的样式设置为不同(例如,操作栏的颜色) .
我发现我可以使用 "resValue"(找到它
- 如果资源已经被声明(比如在 app-name 中,它是翻译的),它说资源是重复的
- 如果未声明资源,我无法通过 code/xml 访问它。
问题
如何为构建类型使用不同的资源值,即使它们已经存在?
How do I use different resource values for the build types, even if they already exist?
它们已经存在于 main
源集中。为您感兴趣的其他构建类型添加其他源集,您可以在其中覆盖所需的资源。
例如,在 this sample project 中,我有一个 main
源集和一个 debug
源集。两者在 res/values/strings.xml
中都有 app_name
字符串资源,但具有不同的值。在 debug
构建中,将使用资源的 debug
源集版本;在任何其他构建中(例如 release
),debug
源集将被完全忽略,并使用资源的 main
源集版本。
请注意,我没有 release
源集。特别是在覆盖资源时,这非常好——当您想要为构建类型更改某些内容时,您只需要一个构建类型的源集,而不是为您正在使用的每个构建类型。
在文件|项目结构|应用程序|风格中我们有:
Version Name: 1.3
在字符串资源文件中我们有:
<string name="app_name">MyAppTitle</string>
在 MainActivity "onCreate" 中 class:
...
//add version to application title
int versionCode = BuildConfig.VERSION_CODE; // unused in my application
String versionName = BuildConfig.VERSION_NAME;
this.setTitle(this.getTitle() + " v"+ versionName);
...
结果是"MyAppTitle v1.3"