1.集成TinkerPatch注意事项
1.先修改app目录下build.gradle中的tinkerId
2.tinkerPatch.gradle 中的 appVersion 值应该与tinkerPatch后台创建的版本值相对饮
3.def baseInfo 该值填写基础apk的一级目录
4.def variantName 该值填写基础apk的二级目录
5.需要使用加固的时候记得将protectedApp设置为true
2.整合tinker+walle+360加固
tinker貌似对原来的友盟多渠道的集成方式不兼容,官方建议使用walle,
然后walle是针对android 7.0新出的一种签名机制( Signature V2 Scheme)的签名工具。
参考:
http://blog.csdn.net/blf09/article/details/72782795
http://blog.csdn.net/likuan0214/article/details/71682993
3.tinker+walle+360加固整合的初衷
在集成完tinker之后准备进行多渠道打包,
然而···
传统的多渠道打包方法是通过gradle配置productFlavors,在配合grade的manifestPlaceholders插件,就可以实现task打多渠道包。
如果使用这样的方式的话,基础包bakApk目录下会生成N个基础包,显然这样子要更新所有渠道的补丁的时候真的会疯掉(有实现方法的大神指点一二....)
官方的建议:#不然建议采用zip comment或者文件方式生成渠道信息(相关工具:walle 或者 packer-ng)
果断选择了walle,美团出品
4.集成
首先将打包好的应用上传360加固,注意使用的是网页版的加密,加密好后下载到本地备用,千万别用360pc版本的客户端,因为其使用的还是V1(传统)得签名方式。
注:下文中提及的路径都是指该文件的 文件夹的路径名称+文件名(包括文件后缀)
1.使用Android SDK中的zipalign - 对齐操作 - 优化 zipalign
该执行文件在sdk中build-tools文件25.+的目录中
我们只需要在cmd命名行中进入到该目录下cd D:\tools\sdk\build-tools\25.0.2中
执行命名 zipalign -v 4 [需要优化的apk路径] [优化后的apk路径]
例如: zipalign -v 4
C:\Users\Administrator\Desktop\fengzhuantoutiao_apk\app-release.encrypted.apk
空格
C:\Users\Administrator\Desktop\fengzhuantoutiao_apk\app-release.encrypted_zipalign.apk
检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 test.apk
提示:
Verification FAILED 说明没有优化
Verification succesful 说明优化成功
注:mac下命令行在开头加上./
2.使用V2签名工具再次签名加固后的Apk
打开cmd命令行进入到刚刚的目录下cd D:\tools\sdk\build-tools\25.0.2
执行命令...
apksigner sign --ks [签名文件路径] [apk路径]
回车之后会提示输入一次签名文件的密码
再次回车秒签好,签名完成的文件会覆盖原有的apk文件,不要不知道签完名的文件去哪了~~~,可以看看签名文件的时间验证下。
3。检查是否正确使用V2签名成功
需要jar包,CheckAndroidV2Signature.jar 下载链接:[https://github.com/bihe0832/AndroidGetAPKInfo/blob/master/CheckAndroidV2Signature.jar](https://github.com/bihe0832/AndroidGetAPKInfo/blob/master/CheckAndroidV2Signature.jar)
注:下载jar包最好把整个项目下载下来,单独下载可能导致jar包损坏
执行命令: [Java](http://lib.csdn.net/base/java) -jar CheckAndroidV2Signature.jar test.apk
在cmd根目录执行即可
执行命令后返回:
{“ret”:0,”msg”:”ok”,”isV2”:true,”isV2OK”:true} 是 V2 签名的App
{“ret”:0,”msg”:”ok”,”isV2”:false,”isV2OK”:false} 不是 V2 签名的App
4.写入渠道信息
需要 walle-cli-all.jar 包:[https://github.com/Meituan-Dianping/walle/blob/master/walle-cli/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 -c 360 base_zipalign.apk
java -jar [刚下载walle-cli-all.jar的路径] put -c [渠道名] [apk路径]
java -jar [刚下载walle-cli-all.jar的路径] put -c [渠道名] [apk路径] [生成的apk路径(可选)]
个人推荐使用这种方式比较方便:
指定渠道配置文件: java -jar [刚下载walle-cli-all.jar的路径] batch -f [项目里channel的路径] [apk路径]
大功告成....
5.使用walle多渠道打包友盟统计的处理
去掉以下的代码
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
在项目中添加代码进行统计
//这里填写通过walle打包生成的渠道包
String channel =WalleChannelReader.getChannel(getApplicationContext());
String umengAppkey = "填写你在友盟注册的key";
MobclickAgent.UMAnalyticsConfig umAnalyticsConfig = new MobclickAgent.UMAnalyticsConfig(context,
umengAppkey,
channel,
MobclickAgent.EScenarioType.E_UM_NORMAL,
true);
MobclickAgent.startWithConfigure(umAnalyticsConfig);
注意:
<meta-data
android:name="UMENG_APPKEY"
android:value="xxxx" />
上面的不能去掉,否则友盟登陆和友盟分享会崩溃