Walle(瓦力)多渠道打包(含加固)
1项目地址
https://github.com/itang01/walle
2使用前提
1 使用V2签名 (walle必须要V2签名的包才行,所以在加固的时候要注意,不能用梆梆或者360的签名工具(他们使用的签名方式一般还是V1的)要不会使用不了walle)
3配置build.gradle
在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖,如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.0.3'
}
}
并在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.0.3'
}
4获取渠道信息
在需要渠道等信息时可以通过下面代码进行获取
String channel =WalleChannelReader.getChannel(this.getApplicationContext());
如果使用友盟渠道,需要在代码里设置
MobclickAgent.startWithConfigure(new MobclickAgent.UMAnalyticsConfig(getApplicationContext(), "友盟渠道KEY", channel));
5 加固
如果需要加固,可以上传基础包到目标页面上加固,并下载。(别使用它们的签名方式)
以360渠道为例:
将应用上传360加固(网页-上传和加固(不签名),加固完后下载到本地备用。注:不是使用360加固助手(因为PC版会 加固并签名应用,而且使用的是V1(传统)签名))
6 zipalign 对齐
(利用tools文件夹下的zipalign工具。首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。
检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 androidres.apk)
a. 打开CMD,进入Android SDK-> build-tools -> 25.+目录,
b. 执行命令:
zipalign -v 4 C:\Users\Administrator\Desktop\_360jiagu\奇鱼旅行_qiyu_v1.2.5_7_20170124_jiagu_nosign.apkC:\Users\Administrator\Desktop\_360jiagu\奇鱼旅行_qiyu_v1.2.5_7_20170124_jiagu_zipalign_nosign.apk
7 签名
a. 打开CMD,进入Android SDK -> build-tools -> 25.+目录,
b. 执行命令:
apksignersign --ks D:\Test\qy_trip.jks C:\Users\Administrator\Desktop\apksigner\奇鱼旅行20170209_v1.2.5_qiyu_jiagu_no_zipalign_v2_sign_pre.apk
apksignersign --ks [你的签名文件] [apk路径]
c. 检查是否使用V2签名
需要jar包,CheckAndroidV2Signature.jar 下载链接:https://github.com/bihe0832/AndroidGetAPKInfo/blob/master/CheckAndroidV2Signature.jar
执行命令:
java -jar C:\Users\Administrator\Desktop\apksigner\CheckAndroidV2Signature.jarC:\Users\Administrator\Desktop\_360jiagu\奇鱼旅行_qiyu_v1.2.5_7_20170124_jiagu_zipalign_sign_pre.apk
执行命令后返回:
{"ret":0,"msg":"ok","isV2":true,"isV2OK":true} 是 V2 签名的App
{"ret":0,"msg":"ok","isV2":false,"isV2OK":false}不是 V2 签名的App
Walle需要V2签名
8 打多渠道包
下载walle-cli-all.jar文件
https://github.com/Meituan-Dianping/walle/blob/master/walle-cli/walle-cli-all.jar
执行命令:
命令一:(单个写入,如果未指定目录,生成的新Apk与[apk路径]同级目录)
java -jar walle-cli-all.jar put -cqiyu C:\Users\Administrator\Desktop\apksigner\qiyu_jiagu_zipalign_v2_sign_walla_channel_tools.apk
java -jar walle-cli-all.jar put -c[渠道名] [apk路径]
java -jar walle-cli-all.jar put -c[渠道名] [apk路径] [生成的apk路径(可选)]
命令二:(批量写入,如果未指定目录,生成的新apk与[apk路径]同级目录)
java -jar walle-cli-all.jar batch-f C:\Users\Administrator\Desktop\apksigner\channelC:\Users\Administrator\Desktop\apksigner\qiyu_jiagu_zipalign_v2_sign_walla_channel_tools.apkC:\Users\Administrator\Desktop\apksigner\apk
java -jar walle-cli-all.jar put -c[渠道文件] [apk路径] [生成的新apk路径(可选)]