我的热修复(Tinker)之路

作为小公司小项目的Android菜鸟,我也想在项目中集成热修复,公司没有测试,都是自己测试的,有时候发新版后会出现一些小bug,错别字之类的还好,有时候因为一些bug直接导致APP闪退,甚至会导致公司经济利益的损失,是大家都不愿意看得到的。

所以我就开始尝试热修复,首选Tinker。相信腾讯,相信微信的实力。


对着官方文档一通Ctrl c,Ctrl v。将官方Demo代码全部copy到项目中。

遇到的问题:

1.程序启动时会加载默认的Application类,这导致我们补丁包是无法对它做修改了。需要自定义Application类。

2.多Flavor打包,配置了productFlavors后生成差异包时出现问题,如果只是多渠道的需求,建议不要使用flavor的方式。首先其打包很慢,其次需要维护多个基线包,后期维护成本也很大。Tinker官方推荐packer-ng-plugin或者walle来进行多渠道打包,其中walle是支持最新的SchemaV2签名的。

3.后来觉得还要自己做管理后台,处理很多问题,没这时间和精力。就使用tinkerpatch。


TinkerPatch:

后台补丁平台的支持一键傻瓜式接入

不需要自己去改造Application,不需要去参与补丁的后台管理。


walle:

美团开源的Android Signature V2 Scheme签名下的新一代渠道包打包神器

用法示例:

生成渠道包./gradlew clean assembleReleaseChannels

支持 productFlavors./gradlew clean assembleMeituanReleaseChannels

1.需要注意channel文件不带.txt后缀。

2.360加固失效?在使用加固后导致Stringchannel=WalleChannelReader.getChannel(this.getApplicationContext());无法获取到渠道信息。解决办法是:先加固没签名的包,然后用buildtool中的apksigner签名然后用walle注入渠道。

3.ProtectedApkResignerForWalle:[Walle官方推荐]一步解决应用加固导致Walle渠道信息失效的自动化脚本工具,自动生成渠道包。


ProtectedApkResignerForWalle:

一步解决应用加固导致Walle渠道信息失效的自动化脚本,自动生成渠道包

按照config.py文件中的注释改成自己项目配置

将已经加固好的包【未签名的包,请不要使用加固客户端签名工具】放到脚本工具根目录下,即app-release.encrypted.apk

各种渠道的定义是在channel这个文件中,请根据项目情况修改

运行命令python ApkResigner.py,即可自动生成所有渠道包。


最后我的热修复算是做完了,轻描淡写,记录自己的热修复路程,全是第三方开源工具解决。


开源万岁。。。

你可能感兴趣的:(我的热修复(Tinker)之路)