最近使用walle+tinker的方式來實現(xiàn)多渠道打包和熱修復,但是遇到一個問題:使用walle生產的渠道包進行360加固后獲取不到渠道信息?。?!
怎么解決?walle官方推薦了兩種辦法:
方法一:操作步驟http://blog.csdn.net/jason_2016/article/details/58137497
方法二:ay-Goo同學寫了一個工具,專門修復類似360加固重簽名和批量注入渠道,2秒搞定。支持全平臺 https://github.com/Jay-Goo/ProtectedApkResignerForWalle

應該改為下面這樣:
apksigner sign //執(zhí)行簽名操作
--ks 你的jks路徑 //jks簽名證書路徑
--ks-key-alias 你的alias //生成jks時指定的alias
--ks-pass pass:你的密碼 //KeyStore密碼
--key-pass pass:你的密碼 //簽署者的密碼,即生成jks時指定alias對應的密碼
--out output.apk //輸出路徑
input.apk //被簽名的apk
示例:
apksigner sign --ks key.jks --ks-key-alias releasekey --ks-pass pass:pp123456 --key-pass pass:pp123456 --out output.apk input.apk
下面回到本篇文章的主題!!!
因為方法一操作步驟過于復雜,而方法二又過于簡單。。。so,選擇方法二。
下面就講一下方法二ProtectedApkResignerForWalle的操作步驟:
1、按照config.py文件中的注釋改成自己項目配置
2、將已經加固好的包【未簽名的包,請不要使用加固客戶端簽名工具】放到腳本工具根目錄下,即app-release.encrypted.apk
3、各種渠道的定義是在channel這個文件中,請根據項目情況修改
4、運行命令 python ApkResigner.py,即可自動生成所有渠道包。

keystorePath、keyAlias、keystorePassword、keyPassword:就按項目中簽名那里配置的信息填寫
protectedSourceApkName:加固后的apk的名字(記得要帶.apk)
protectedSourceApkDirPath、channelsOutputFilePath、channelFilePath:不填寫即代表在默認路徑上
sdkBuildToolPath:sdk/build-tools目錄下的25.0.0以上的版本路徑

步驟3:

打開channel,在里面寫上渠道
步驟4:進入到腳本的文件夾下,然后運行python ApkResigner.py命令即可。

那么,如何驗證用此方法生成的渠道包可以獲取到渠道信息呢???
通過String umeng_channel = WalleChannelReader.getChannel(mContext);獲取渠道信息,然后吐司看下是否有實際信息。
