由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,就可以很方便的一键进行多渠道打包。
百度多渠道打包
此文将以项目中使用的百度统计为例,进行gradle配置多渠道打包讲解。使用其他友商进行多渠道打包同理。废话不多说,马上进入正题。
- androidManifest中有这么一段代码,其中百度统计给的备注很明朗了,name字段无需更改,不同的渠道只要修改value即可。
<!-- 百度统计 -->
<!-- 渠道商编号,其中 name 请不要改,将 value 修改为渠道商编号。渠道名称请到 mtj.baidu.com 的渠道管理中修改 -->
<meta-data
android:name="BaiduMobAd_CHANNEL"
android:value="CHANNEL_ID" />
- 在AndroidManifest中配置PlaceHolder,将value的值修改为${BAIDU_CHANNEL_VALUE},当然BAIDU_CAHNNEL_VALUE只是一名字而已,你也可以换成你喜欢的名字。目的就是要让我们的这个value在进行多渠道打包的时候自动变更。
<!-- 百度统计 -->
<!-- 渠道商编号,其中 name 请不要改,将 value 修改为渠道商编号。渠道名称请到 mtj.baidu.com 的渠道管理中修改 -->
<meta-data
android:name="BaiduMobAd_CHANNEL"
android:value="CHANNEL_ID" />
- 在项目gradle中配置各种渠道号,这里"android"、"android_sougou"等等就是你的渠道号,各自要求的渠道标志不一样,可以根据自己的项目进行命名。
android {
// 你的其他gradle配置信息省略...
// 配置所有的渠道名,如需增加其他渠道,则以类似的形式在productFlavors里面添加对应的即可
productFlavors {
android {
manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android"]
}
android_sougou {
manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android_sougou"]
}
android_huawei {
manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android_huawei"]
}
android_pp {
manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android_pp"]
}
}
}
- 在项目gradle中配置在打包时的一些信息,例如显示log日志、还可以配置打包之后输出的apk文件名根据渠道命名、apk文件的输出位置等等。
android {
// 其他的配置信息省略...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
minifyEnabled false
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为app_v3.0(45)_pp.apk
def fileName = "app_v${defaultConfig.versionName}(${defaultConfig.versionCode})_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
- 利用AS的Generate Build进行多渠道打包
在gradle配置完成之后,那么就可以进行一键多渠道打包了,在AS中利用Generate build即可,打包开始之后,静默等待打包完成就行啦!具体操作如下截图:
图1 在AS的build菜单中选择generate signed apk
进入generate signed apk之后会让你输入密码,这个密码是本机用户管理你的签名文件密码用的,用于校验是否本人操作。如果你还没设置过的话,AS会提醒让你完成该密码设置的。
图2 输入master password
进入之后,需要你填入你这个apk的签名文件和密码,相信这个应该不用详细讲解了吧,按要求填入然后点击next按钮即可。
图3 填入签名文件和密码
完成签名文件输入点击下一步之后,最重要的页面来了。这里就是选择你要打包的类型,两个选择:release/debug,release和debug有些区别,release模式会比debug模式严格一些。然后flavors这里显示的就是你在gradle中配置的所有渠道啦。如果需要全部打包,就全选即可。如果个别打包的,就只要选中其中一个或多个打包就行。最后点击finish,静静等待打包完成吧!!打包的速度取决于你的机子性能和你项目的一些其他依赖等等。
图4 选择渠道打包