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打包教程_第1张图片

2、添加不同的打包信息
打开flavors tab,添加flavor,添加包名、签名配置、版本名等,如下图:
gradle打包教程_第2张图片
修改之后,打开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文件,添加如下代码:

data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL}"/>

打开app的build.gradle文件,在productFlavors中的lestore和baidustore的{}中分别添加

manifestPlaceholders = [UMENG_CHANNEL: "LESTORE"]
manifestPlaceholders = [UMENG_CHANNEL: "BAIDUSTORE"]

这里使用的是gradle的manifestPlaceholders方法

4、修改应用名称和资源
在app/src目录下创建和Flavor名称一致的文件夹,如下图:
gradle打包教程_第3张图片
按照目录结构把我们想要进行替换或修改的资源放进来:
gradle打包教程_第4张图片
这里简单修改了图片的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插件用户指南中文版

你可能感兴趣的:(Android)