androidAndroid热修复技术Android开发经验谈

2.集成tinker后使用360加固并使用walle进行多渠道打

2017-07-27  本文已影响320人  瓦雷

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.+的目录中

zipalign.png

我们只需要在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 

232323.png

检查当前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路径]    

大功告成....
33333.png

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" />
上面的不能去掉,否则友盟登陆和友盟分享会崩溃
上一篇下一篇

猜你喜欢

热点阅读