转载请标明出处:http://blog.csdn.net/donkor_/article/details/58587893
前言:
初登友盟官网,“【友盟+】全球领先的第三方全域大数据服务提供商。”这句话就醒目地显示在眼前。可以明确的知道,友盟在移动端app开发,确实具备了很大的影响力。而国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,如果一个一个去打包,那实在是麻烦。但如果这时候使用友盟,那简直是再简单不过了。通过本文,学习在Android Studio中以友盟为例进行多渠道打包。
▲ 基本使用
首先,在AndroidManifest.xml里配置PlaceHolder
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
value填的主要是360,应用宝之类的渠道名称,最好不要写中文!在这里先不用着急写渠道名,写一个占位符,后面gradle编译的时候会动态的替换掉它。
在app的build文件的defaultConfig里加上PlaceHolder定义
android {
...
defaultConfig {
...
manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"default_channel" ]
}
}
设置productFlavors
productFlavors {
default_channel{}
wandoujia{}
_360{}
yingyongbao{}
xiaomi{}
baidu{}
huawei{}
jifeng{}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
}
设置自动生成apk命名
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
File outputDirectory = new File(outputFile.parent);
def fileName
if (variant.buildType.name == "release") {
// fileName = "app_v${defaultConfig.versionName}_${packageTime()}_${variant.productFlavors[0].name}.apk"
fileName = "donkor_${variant.productFlavors[0].name}.apk"
} else {
// fileName = "app_v${defaultConfig.versionName}_${packageTime()}_beta.apk"
fileName = "donkor_${variant.productFlavors[0].name}_beta.apk"
}
output.outputFile = new File(outputDirectory, fileName)
}
}
}
在android studio底栏中有个命令行工具Terminal,直接输入命令“gradlew assembleRelease”导Release包。在app–>build–>outputs–>apk路径中就可以看到打包成功后的APK。成功效果图如下
其他的打包命令还包括:
- gradlew assemble:打所有渠道包
- gradlew assembleDebug:只打Debug包
- gradlew assemble_360:只打360的渠道包
- gradlew assemble_360Release:只打360的release渠道包
注意,此时这里的APK还是未签名的。我们需要配置gradle让APP自动签名,如果还有不会配置的话,可以参考我的另外一篇文章Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值 。然后再次在Terminal执行gradlew assembleRelease命令,此时生成的就是有签名的渠道包
配置文件与jks下载地址:http://download.csdn.net/detail/donkor_/9766524