首先对多渠道打包进行说明:简单的来讲就是可以同时生成多个不同名字的apk,然后将不同的apk上传到不同的应用平台。
多渠道打包的意义:android应用市场五花八门,有豌豆荚、小米、应用宝等,当我们将apk上传到应用市场后,有时候可能需要知道不同应用市场的下载量等信息。如果我们在不同的应用市场上传的是同一个apk,那么将很难知道这些信息。所以我们需要生成不同的apk,这些apk并不是简单的重命名,更不是修改包名或者签名。而是要根据一个特殊的字段进行区分,这就是渠道号。
多渠道打包的实例:多渠道打包往往涉及到统计。本例就友盟统计进行说明,友盟具体的集成流程请看
http://dev.umeng.com/analytics/android-doc/integration。这里重点讲一下友盟在集成过程中清单文件的渠道号配置。
一、修改清单文件中的渠道号配置:
友盟渠道号官方文档配置如下:
由于我们的渠道号不是唯一的,所以需要将渠道配置修改为:
<meta-data android:name="UMENG_CHANNEL"android:value="${UMENG_CHANNEL_VALUE}" />
二、配置gradle文件
我们要对module下的build.gradle文件进行渠道号的配置,这里假定我们需要打包的渠道为酷安市场、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]
}
}
我们还可以对apk进行名称进行修改,也是在gradle目录下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 自定义输出配置
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为wooyun_v1.0_wandoujia.apk
def fileName = "wooyun_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
三、生成apk
配置完成之后,就可以生成apk了,这里有两种方式可以选择:
方法一:这是最常用的方式,通过build--->generate Signed APK,设置签名之后可以看到如下内容,构建方式有release和debug,flavors就是不同渠道了。
我在这里使用release并且全选所有的flavors,完成之后会在module根目录下得到apk,如下:
方法二、通过命令行打包apk
Android studio将cmd命令集成到了Terminal下,它会自动定位到我们的项目目录下,通过输入”gradlew assembleRellease“命令即可完成打包,还有其他的命令方式,这里不再说明。
如果不想输入命令,也可以通过android studio的gradle直接完成,生成的apk是未签名的,需要在gradle文件中做签名配置,这里不再赘述。
四、上传apk到应用平台