http://frank-zhu.github.io/android/2015/06/15/android-release_app_build_gradle/
前言
什么是多渠道打包?为什么要多渠道打包?
- 多渠道打包简单的说打多个应用平台的包(比如应用宝,安智市场,机锋等等)
- 多渠道打包的意义在于:
* 通过多渠道,可以更详细的统计app被下载的途径
* 通过多渠道,可以查看app在每个渠道的表现
* 通过多渠道,更有利于我们app的推广
多渠道打包的原理
- 为我们每个平台或市场的apk指定唯一的标识符
- Android中我们通常在Manifest.xml中指定唯一的标识符
集成友盟多渠道打包
-
上友盟官网注册并创建新应用,获取AppKey(下图是我的账号已经注册登录过)
- 在你的module的build.gradle中添加友盟的依赖
compile 'com.umeng.analytics:analytics:latest.integration'
如果无法正常集成,请添加如下代码
allprojects {
repositories {
mavenCentral()
}
}
- 在Manifest.xml中配置渠道号和AppKey (包含在application中)
<!-- 友盟统计的相关meta——data -->
<meta-data android:name="UMENG_APPKEY"android:value="584fbff6b27b0a0b7c00026f"></meta-data>
<meta-data android:name="UMENT_CHANNEL" android:value="$ {UMENG_CHANNEL_VALUE}"></meta-data>
注意:这里的占位符$和中括号{}之间要有个空格,不然编译报错:Manifest merger failed with multiple errors, see logs;
-
在Module的build.gradle中编写多渠道的脚本
第一步:
第二步:
生成签名文件,并将签名文件复制到你的module中
第三步:注意这里的签名文件路径,如果签名文件**.jks已经拷贝到项目中,就像图这样,直接写签名文件的名就可以了,如果没有复制到项目中,要写全路径。
第四步:
第五步:
在Terminal中输入命令:gradlew assembleRelease(注意别写错,如果是Mac 命令为:./gradlew assembleRelease),如果指给一个渠道打包,命令如下,比如指给小米的打包:./gradlew assembleXiaoMiRelease进行打包,等待有BUILD SUCCESSFUL说明打包成功。
如何指定打包以后APK的文件名
//自定义打包后apk的文件名
applicationVariants.all{variant ->
variant.outputs.each{output ->
def outFile = output.outputFile
if (outFile!=null && outFile.name.endsWith(".apk")){
def fileName = "${variant.productFlavors[0].name}"+".apk"
output.outputFile = new File(outFile.parent,fileName);
}
}
}