概述
一个app我们可能会在不同的应用市场发布,如果一个一个打包,岂不是很慢,下面就跟我来一步一步实现多渠道打包吧,以友盟多渠道打包为例子;
1.基本配置
添加依赖:
compile 'com.android.support:appcompat-v7:24.2.1'
在清单文件中配置友盟meta-data以及添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!--友盟meta-->
<meta-data
android:name="UMENG_APPKEY"
android:value="584cc6b7c62dca637500180f"/>
<!--使用$占位符-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"/>
2.在gradle中编辑脚本
在defaultConfig中添加以下两条信息
multiDexEnabled true;//突破应用方法数65535
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]//默认的渠道
添加签名文件
//文件配置生成签名文件(要在buildTypes之前配置)
signingConfigs {
debug {}
release {
storeFile file("common.jks")
storePassword "123456"
keyAlias "mutil"
keyPassword "123456"
}
}
编辑buildTypes配置
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定签名
signingConfig signingConfigs.release
//指定apk文件名
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "${variant.productFlavors[0].name}" + ".apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
添加需要发布的应用市场
productFlavors {
xiaomi {}
wandoujia {}
}
//动态替换UMENG_CHANNEL_VALUE的占位符
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
这样gradle中的配置也okay了;
3.执行多渠道打包命令
在terminal中执行gradlew assembleRelease
D:\as\studiodemo\MutilChannelDemo>gradlew assembleRelease
BUILD SUCCESSFUL
Total time: 23.031 secs
D:\as\studiodemo\MutilChannelDemo>
出现BUILD SUCCESSFUL即说明打包完成,
csdn下载:http://download.csdn.net/my
github下载:https://github.com/shenglintang/MutilChannelDemo