这篇多渠道打包是看视频的时候整理的笔记。
如果我们的应用只针对某个平台,则不需要多渠道打包(不可能)。
为什么要多渠道打包?
答:通过多渠道1.可以更详细的统计app被下载的途径.
2.可以查看app在每个渠道上的表现
3.更有利于我们app的推广
多渠道打包原理?
答:就是我们为每个平台或市场的apk制定一个唯一的标识符。android通常在Manifest.xml中为其指定。也可以在代码中指定,但是一般不用。
友盟多渠道打包:
1.添加对友盟库的依赖
2.就是在Manifest.xml中去声明我们的appkey,以及我们的渠道占位符。
3.在我们应用的build.gradle中去动态的替换掉我们占位符的value即可。
4.在控制台使用 ./gradlew assembleRelease 去自动的打出所有的渠道包。
前几步集成就不说了。
下面直接看看核心:Gralde的一些基础的脚本语言。
defaultConfig {
applicationId "com.example.ge.xapractiveone"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
manifestPlaceholders = [UMENG_CHANNEL_CALUE:"umeng"]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定正式版本编译文件配置
signingConfig signingConfigs.release
//指定我们release包的输出文件名就是我们的渠道名字
applicationVariants.all{ variant ->
variant.outputs.each{ output ->
def outFile = output.outputFie
if (outFile != null && outFile.name.endWith(".apk")){
def fileName = "${variant.productFlavors[0].name}" + ".apk"
output.outputFie = new File(outFile.parent, fileName);
}
}
}
}
}
signingConfigs{
debug{}
//为我们的release包添加签名文件配置
release{
storeFile file("XXX.jks")
storePassword "store密码"
keyAlias "别名"
keyPassword "jks密码"
}
}
//指定
productFlavors{
xiaomi{
}
wandoujia{
}
}
//通过脚本动态修改productFlavors的值
productFlavors.all{
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_Value: name]
}
完成上面的步骤,打包需要在控制台输入指令,即第四步。