AndroidSutdio3.0利用友盟实现多渠道打包
<Excerpt in index | 首页摘要>
AndroidSutdio3.0利用友盟实现多渠道打包
<The rest of contents | 余下全文>
概要
运营统计开始需要统计不同的渠道app用户数量,和安装app来源的占比关系。
所以就需要在安装包上做手脚。多渠道打包就是用来解决这个问题的。
多渠道打包实现其实是比较容易的,方案也不只一个,目前来说应该有两种类型的方式。一种是在打包的时候打不同渠道的包(我们采用这种方式),还有一种是利用apk包做手脚。
前者慢等于一次要生成N个包,假设一个包生成时间是1分钟,那么10个包就是10分钟。后者快,因为是生成一个包,然后对这个包做手脚。10个包一般也就1分钟+5-6秒的时间。但是前者相对安全。
我们没有那么多的渠道需求,前者相对来说比较好。
配置
首先引入友盟统计sdk
然后按照友盟的文档配置好。
在AndroidManifest文件种有这么一条。
1
| <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
|
value 按照这个格式填写,里面的内容自定义 后面需要用。
打开app/build.gradle文件
在android节点下,defaultConfig节点的versionCode、versionName 后加入
1
| flavorDimensions "default"
|
AndroidStudio3.x 需要
在android节点下配置签名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| signingConfigs { release { v1SigningEnabled true v2SigningEnabled true storeFile file("../keystore/keystore.jks") storePassword "######" keyAlias "####" keyPassword "######" } debug { storeFile file("../keystore/keystore.jks") storePassword "######" keyAlias "####" keyPassword "######" } }
|
在android节点下配置debug、release包配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| buildTypes { debug { minifyEnabled false zipAlignEnabled true jniDebuggable true
signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' buildConfigField "boolean", "APP_DEBUG", "true" } release { minifyEnabled false zipAlignEnabled true
signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' buildConfigField "boolean", "APP_DEBUG", "false" } }
|
在android节点下配置渠道
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| productFlavors { xpro { } huawei { } oppo { } tencent { } vivo { } oneplus { } smartisan { } baidu { } qihu360 { } xiaomi { } wandoujia { } meizu { } }
productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }
|
在android节点下配置生成的apk文件名(可选)
1 2 3 4 5
| applicationVariants.all { variant -> variant.outputs.all { output -> outputFileName = "unreinforced_name:${defaultConfig.versionName}_code:${defaultConfig.versionCode}_${variant.productFlavors[0].name}.apk" } }
|
生成包
命令方式
在项目根目录下
多渠道打包命令
打所有debug
./gradlew assembleDebug
打所有release
./gradlew assembleRelease
打单个debug 比如豌豆荚
./gradlew assembleWandoujiaDebug
打单个release 比如豌豆荚
./gradlew assembleWandoujiaRelease
我是Linux 命令执行规则请按照自己系统
图形化操作
在工具栏找到build
build->generate signed bundle/APK->选择APK Next->配置签名 Next->选择apk输出目录 -> 选择build type -> 选择要打的渠道(多选)-> 勾选v1&v2 -> 点击finish