以前項目一直使用Python腳本進行打包示启,自打Android7.0出來之后發(fā)現Python腳本打出來的包,不能以adb install 方式安裝到7.0 的手機上竿开,于是市場毫不留情的就把Apk打回來了,原來Android 7.0 引入一項新的應用簽名方案 APK Signature Scheme v2,它能提供更快的應用安裝時間和更多針對未授權 APK 文件更改的保護虱咧。原來的Python腳本打出來的包都是基于v1打的,不適用于Android7.0锚国。這個時候發(fā)現Android Studio 自身的打包可以打V2的包腕巡,但是試了一次打三個渠道包,速度真是不忍直視绘沉,打個包出來速度出奇的慢,Android 的渠道有多,這種方式打包太費時間,于是找到了美團的walle 打包哪轿,集成后發(fā)現速度杠杠的杨耙。下面來介紹一下walle的集成步驟吧
1、配置gradel
在位于項目的根目錄 build.gradle 文件中添加Walle Gradle插件的依賴车柠, 如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.5'
}
}
在當前App的 build.gradle 文件中apply這個插件羊苟,并添加上用于讀取渠道號的AAR
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.1.5'
}
2、配置插件
在當前App的 build.gradle 文件中配置
walle {
apkOutputFolder = new File("${project.buildDir}/outputs/channels")
apkFileNameFormat = '${appName}-${channel}.apk'
//configFile與channelFile兩者必須存在一個,否則無法生成渠道包。兩者都存在時優(yōu)先執(zhí)行configFile
channelFile = new File("${project.getProjectDir()}/channel")
//configFile = new File("${project.getProjectDir()}/config.json")
}
配置解釋:
apkOutputFolder apk輸出目錄 例子中的最終Apk 目錄是在 app/build/outputs/channels 下搔啊,這個目錄不需要我們自己建,打包完成會自己建好的
apkFileNameFormat 打包出來的App名字
channelFile 渠道包信息文件目錄
渠道包信息文件配置,上述例子中的文字路徑是app/channel
#自定義的
#自定義的
line
#應用寶
myapp
#360市場
market360
#豌豆莢
wandoujia
#小米
xiaomi
#華為
huawei
#百度
baidu
#vivo
vivo
#open
oppo
#酷安
kuan
貼一張我的項目結構出來,看一下配置文件對應的目錄
到這里我們配置信息就完成了,接下來就可以直接打包了
在Android studio 的Terminal 中輸入 ./gradlew clean assembleReleaseChannels 回車即可
回車后看見下列信息就表示打包完成了
10個渠道只用了三分多鐘是不是挺快脑奠,如果使用Android studio自帶打包工具,至少30+分鐘幅慌。
渠道包是可以打好了宋欺,但是這個渠道umeng并不知道,所以我們還需要將這個渠道名配置到umeng中去
walle 提供了獲取渠道信息的類
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
我們需要做的是將它賦值給umeng
在Application 中初始化umeng
String channel = Const.DEBUG ? "line" : WalleChannelReader.getChannel(this.getApplicationContext());
String umengAppkey = "1111111111111111";
MobclickAgent.UMAnalyticsConfig umAnalyticsConfig = new MobclickAgent.UMAnalyticsConfig(this,
umengAppkey,
channel,
MobclickAgent.EScenarioType.E_UM_NORMAL,
true);
MobclickAgent.startWithConfigure(umAnalyticsConfig);
MobclickAgent.setDebugMode(Const.DEBUG);
這樣我們就可以在umeng里統(tǒng)計到渠道信息了
walle 更多使用可以去看官方的文檔:https://github.com/Meituan-Dianping/walle
APK Signature Scheme v2介紹可以去這里:http://blog.csdn.net/vane918/article/details/54099373