友盟多渠道打包及上线
2019-01-14 本文已影响13人
wuchao226
打包方法是基于友盟统计,按官方文档(https://developer.umeng.com/docs/66632/detail/66890#h3-androidmanifest-appkey-channel)需要在AndroidManifest.xml清单配置中设置了AppKey和Channel,如下:
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
上面的value值Channel_ID就是渠道标识。我们的期望的就是在编译时候这个值能够自动变化以满足区分多渠道的需求
1、在AndroidManifest.xml里设置动态渠道变量
<!-- 友盟统计相关meta-data -->
<meta-data
android:name="UMENG_APPKEY"
android:value="57bfe3cbe0f55a0b2e0025b8" />
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
2、在build.gradle设置productFlavors
假定我们需要打包的渠道为酷安市场、360、小米、百度、豌豆荚
android {
productFlavors {
kuan {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "kuan"]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
qh360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
}
}
或者批量修改
android {
//多渠道脚本支持
productFlavors {
kuan {}
xiaomi {}
qh360 {}
baidu {}
wandoujia {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
ProductFlavors其实就是可定义的产品特性,配合 manifest merger 使用的时候就可以达成在一次编译过程中产生多个具有自己特性配置的版本。上面这个配置的作用就是,为每个渠道包产生不同的 UMENG_CHANNEL_VALUE 的值。
3、自定义所打APK包名称
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
android {
//签名
signingConfigs {
debug {
storeFile file("youdo.jks")//签名文件
storePassword "rzq123456"
keyAlias "qndroid"
keyPassword "rzq123456"//签名密码
}
//签名打包
release {
storeFile file("youdo.jks")//签名文件
storePassword "rzq123456"
keyAlias "qndroid"
keyPassword "rzq123456"//签名密码
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
//指定我们release包的输出文件名就是我们的渠道名字
applicationVariants.all { variant ->
variant.outputs.all {
// 输出apk名称为app_kuan_v1.0_2015.01.15.apk
outputFileName = "app_${variant.productFlavors[0].name}_v${variant.versionName}_${releaseTime()}.apk"
}
}
}
}
}
4、执行打包命令
除了使用AndroidStudio图形打包操作以外,我们也可以使用命令行进行打包操作,具体步骤如下:
在AndroidStudio窗口左下角打开Terminal面板.
- 打全部Release版本:
//这条命令会把Product Flavor下的所有渠道的Release版本都打出来。
./gradlew assembleRelease
assemble是Gradle中的编译打包命令,还有如下用法:
- 打包所有渠道debug版本,执行如下命令:
./gradlew assembleDebug
- 打包kuan渠道的release版本,执行如下命令:
./gradlew assemblekuanRelease
- 打包kuan渠道的debug版本,执行如下命令:
./gradlew assemblekuanDebug
- 只打wandoujia渠道版本,执行如下命令:
//此命令会生成kuan渠道的Release和Debug版本
./gradlew assemblekuan