gradle打包教程

需求:开发了一个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等
…… …… ……
可以看到大部分功能都是相同的,我们可以在一个项目中把功能全做了,后期打包时通过配置项分别打出满足要求的app,还可以为CDE公司做私人定制……
gradle可以做这样的事情,现在知道的有两种方法:
1、创建文件方法
2、不需要创建文件,使用gradle的manifestPlaceholders方法
主要步骤:
1、添加不同的signing
打开project structure选择signing tab添加不同的签名key,如下图:
gradle打包教程
文章图片

2、添加不同的打包信息
打开flavors tab,添加flavor,添加包名、签名配置、版本名等,如下图:
gradle打包教程
文章图片

修改之后,打开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名称一致的文件夹,如下图:
gradle打包教程
文章图片

按照目录结构把我们想要进行替换或修改的资源放进来:
gradle打包教程
文章图片

这里简单修改了图片的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插件用户指南中文版

    推荐阅读