前言
在很多项目开发完成,都是需要上架很多应用市场和一些推广渠道的。那么我们要怎么辨别用户的渠道来源呢?友盟的多渠道打包就能解决我们手动打包的难题,那样我们就不用一个个包去打了。
友盟多渠道打包
友盟就提供了多渠道打包的方式,可用于渠道统计等。 我们可以通过Android studio的build.gradle
文件,简单配置后就可以实现自动打所有渠道包。下面是友盟多渠道打包的实现步骤
1.按照友盟的要求,AndroidManifest文件中需要有
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
//UMENG_CHANNEL是友盟中代表渠道号的意思
这里的配置,value那里就是小米,360之类的渠道名称,但是我们在这里不会去写渠道名,写的是一个占位符,后面gradle编译的时候会动态的替换掉它。
2.在module(一般也就是app)的build.gradle的android{}中添加如下内容:
defaultConfig {
// AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE},添加一个默认渠道号
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
}
productFlavors{
xiaomi{}
vivo{}
huawei{}
Tencent{}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
productFlavors
是android节点的一个自节点。你需要打什么渠道的包,就在这里按友盟
的要求用渠道名给UMENG_CHANNEL_VALUE
赋值。
3.执行签名打包
打包完成时,就可以去app/Tencent/release中拿到我们腾讯应用宝的渠道包。
4.自定义包名
/自定义包名
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
outputFileName = defaultConfig.applicationId.subSequence(defaultConfig.applicationId
.lastIndexOf(".") + 1, defaultConfig.applicationId.length()) + "-v" + defaultConfig
.versionCode + "-" + output.baseName + ".apk"
}
}
}
加入这段配置,可以自定义我们打包成功输入的包名,输出包名结果为xxx-v1-xiaomi-release.apk
。