需求:开发了一个App,除了在各大市场(baidustore)发布普通版本外,还需在某些市场发布(lestore)发布一个定制版本,满足手机厂商的定制要求……
统计一下这两个需求可能区别
名称 | baidustore | lestore |
---|---|---|
包名 | com.baudustore.test | com.lestore.test |
Umeng渠道号 | BAIDUSTORE | LESTORE |
应用名 | AndroidDemoForBaidu | AndroidDemoForLeStore |
资源 | res | res |
版本号 | 1.0_baidu | 1.0_lestore |
签名 | huangyanan.keystore | huangyn1.keystore |
功能A | 有 | 无 |
功能B | 无 | 有 |
功能CDEFG等 | 有 | 有 |
…… | …… | …… |
gradle可以做这样的事情,现在知道的有两种方法:
1、创建文件方法
2、不需要创建文件,使用gradle的manifestPlaceholders方法
主要步骤:
1、添加不同的signing
打开project structure选择signing tab添加不同的签名key,如下图:
文章图片
2、添加不同的打包信息
打开flavors tab,添加flavor,添加包名、签名配置、版本名等,如下图:
文章图片
修改之后,打开gradle.build文件,可以看到如下内容:
android {
signingConfigs {
huangyanan {
storeFile file('/Users/huangyanan/huangyanan.keystore')
keyAlias 'huangyanan'
keyPassword '111111'
storePassword '111111'
}
huangyn1 {
storeFile file('/Users/huangyanan/Documents/huangyn1.keystore')
keyAlias 'huangyn1'
keyPassword '111111'
storePassword '111111'
}
}
……省略……
productFlavors {
baidustore {
minSdkVersion 21
applicationId 'com.baudustore.test'
signingConfig signingConfigs.huangyanan
targetSdkVersion 21
versionCode 1
versionName '1.0_baidu'
}
lestore {
minSdkVersion 21
applicationId 'test.lestore.test'
signingConfig signingConfigs.huangyn1
targetSdkVersion 21
versionCode 1
versionName '1.0_lestore'
}
}
}
……省略……
此时打包,就有不同的包名对应不同的签名key的release包了
3、修改umeng 渠道号:
打开AndroidManifest.xml文件,添加如下代码:
打开app的build.gradle文件,在productFlavors中的lestore和baidustore的{}中分别添加
manifestPlaceholders = [UMENG_CHANNEL: "LESTORE"]
manifestPlaceholders = [UMENG_CHANNEL: "BAIDUSTORE"]
【gradle打包教程】这里使用的是gradle的manifestPlaceholders方法
4、修改应用名称和资源
在app/src目录下创建和Flavor名称一致的文件夹,如下图:
文章图片
按照目录结构把我们想要进行替换或修改的资源放进来:
文章图片
这里简单修改了图片的launcher_icon和app_name
渠道号修改也可以用这种方法来做,去替换AndroidManifest.xml中某些节点的东西。
5、打包
先clean project,然后在项目所在目录输入命令
mac 和linux输入
./gradlew build
windows系统
gradlew.bat build
执行完毕,可以在app/build/outputs/apk目录下看到打包好的app了
6、问题
看有的人说可以使用manifestPlaceholders方法去替换activity名称,试了一下没有成功,后续看看怎么弄的。
demo下载地址
参考:
http://tools.android.com/tech-docs/new-build-system/user-guide
Gradle Android插件用户指南中文版