最近使用walle+tinker的方式来实现多渠道打包和热修复,但是遇到一个问题:使用walle生产的渠道包进行360加固后获取不到渠道信息!!!
怎么解决?walle官方推荐了两种办法:
方法一:操作步骤http://blog.csdn.net/jason_2016/article/details/58137497
方法二:ay-Goo同学写了一个工具,专门修复类似360加固重签名和批量注入渠道,2秒搞定。支持全平台 https://github.com/Jay-Goo/ProtectedApkResignerForWalle
应该改为下面这样:
apksigner sign //执行签名操作
--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: image.png
打开channel,在里面写上渠道
步骤4:进入到脚本的文件夹下,然后运行python ApkResigner.py命令即可。
那么,如何验证用此方法生成的渠道包可以获取到渠道信息呢???
通过String umeng_channel = WalleChannelReader.getChannel(mContext);获取渠道信息,然后吐司看下是否有实际信息。
image.png
网友评论