Android gradle 配置strings.xml资源

需求

    在开发中,往往会遇到同一个工程需要打出不同包的情况,此时可以选择进行渠道打包,但在某些情况下,如需要打包出的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个自定义编译选项集合

build type

其中当在其中这样配置的时候

这里写图片描述

在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 渠道打包 小试

猜你喜欢

转载自blog.csdn.net/jerycoupter/article/details/70159410