需求
在开发中,往往会遇到同一个工程需要打出不同包的情况,此时可以选择进行渠道打包,但在某些情况下,如需要打包出的apk名称不同,或其中某处显示文字不同,此时,使用渠道配置显得繁琐,如何简单明了的配置不同的字符串资源,下面介绍解决此问题的一种方式
分析
在开发android项目中,以eclipse与android studio为多,官方推荐使用studio,而studio最大的特点便是有gradle,在gradle.build中进行相应配置,可以解决很多问题,而此问题的解决在gradle中非常容易
解决方案
1. 问题设定
为更好的讲明解决方案,本次设定需求为:使用android studio在build apk时不需要改动代码就能自动输出两个或者多个apk,且各个apk在安装后的应用名各不相同
2. 配置介绍
当新建工程时在gradle中就会有这样的一段
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
其中debug与release 为默认的两种 Build Type,此处可以自己添加n个自定义编译选项集合
其中当在其中这样配置的时候
在res->values->strings.xml中就相当于存在了一条
<string name="app_name">名称1_debug版本</string>
注:此时 Build Variants 的 Build Variant 选定为 debug
在此时,必须保证strings.xml中没有此标签的字符串资源,否则会报错,错误信息如下
Error:Execution failed for task ':app:mergeDebugResources'.
> [string/app_name] E:\Android\Space\Demo\app\build\generated\res\resValues\debug\values\generated.xml [string/app_name] E:\Android\Space\Demo\app\src\main\res\values\strings.xml: Error: Duplicate resources
只需将strings.xml中此标签删掉即可
如此打出来的包就会在安装后显示不同名称,如果想要修改包名,那此时就要配置渠道信息,不在此问题涉及范围内,可参考Android Studio 渠道打包 小试