Tinker迭代2.0简述

为何使用热修复?

项目开发中难免会有一些问题,需要修改,直接进行发版的话成本较高。这时候我们就需要一个可以在不进行版本更新,就可以修复问题的工具。所以说,热修复的定位就是对一些非紧急,需要解决的bug进行修复的辅助工具。

什么是Tinker?为何选用它?

  • Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。

  • 国内大大小小,有很多开源的热修复工具,方案。但他们或多或少有着生产项目难以接受的问题:

    Tinker QZone AndFix Robust
    类替换 yes yes no no
    So替换 yes no no no
    资源替换 yes yes no no
    全平台支持 yes yes yes yes
    即时生效 no no yes yes
    性能损耗 较小 较大 较小 较小
    补丁包大小 较小 较大 一般 一般
    开发透明 yes yes no no
    复杂度 较低 较低 复杂 复杂
    gradle支持 yes no no no
    Rom体积 较大 较小 较小 较小
    成功率 较高 较高 一般 最高

总的来说:

  1. AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的;
  2. Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案;
  3. Qzone方案可以做到发布产品功能,但是它主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。

特别是在Android N之后,由于混合编译的inline策略修改,对于市面上的各种方案都不太容易解决。而Tinker热补丁方案不仅支持类、So以及资源的替换,它还是2.X-8.X(目前也支持9.0)的全平台支持。并且Tinker已运行在微信的数亿Android设备上。

已知问题

理想很美好,愿世上没有bug,or Tinker可以解决我们遇到的所有问题,但就几次线上补丁的发布以及最终结果来看,他都或多或少有以下几个问题:

  • 以下都是针对我们使用的1.9.2版本来说明:
    1. 公司内部部分手机补丁没有生效,测试部门的两款Vivo手机,这个是tinker已知的问题,Vivo部分手机,会执行异步dex2oat,在dex合成等待时间内,并没有修复成功,目前于使用tinker1.9.9版本测试时,确认已经修复。
    2. 项目更新了x5 webview的版本,下发补丁。但客户反馈有手机会有手机连续闪退三次,回退到补丁前的版本。对于此问题,我们也仔细的研究了友盟后台的crash日志,发现的确有华为android 8.0,9.0存在闪退的情况。
    3. Tinker必须要重启后生效,硬伤。
    4. 对于整个android系统来说,热修复方案其实是一种逆向行为,无论是哪种方案,都可能存在兼容性问题的,而且每次android新版本发布,尤其对虚拟机等做优化时,基本上都会成为热修复的“坑”。
    5. 用户安装补丁后,可能修复过程或者修复后,app闪退,此时我们是闪退三次,再清除补丁,能否闪退一次就进行清除?
  • 官方介绍说明,由于原理与系统限制,Tinker有以下已知问题:
    1. Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件(1.9.0支持新增非export的Activity);
    2. 由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码;
    3. 在Android N上,补丁对应用启动时间有轻微的影响;
    4. 不支持部分三星android-21机型,加载补丁时会主动抛出"TinkerRuntimeException:checkDexInstall failed"
    5. 对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。

对我们有何影响?如何解决

  • 1.9.2不支持vivo,目前可以通过升级Tinker版本,较为简单的解决。

  • Tinker作为微信实际使用的动态代码修复方案,他们也会不断接收到来自于手机厂商,开发者反馈的各种问题,不断更新版本。目前已经迭代到1.9.11并解决了部分问题。

  • 对于组件新增,目前我们的bug场景不会涉及。google市场暂时不会上架,需要上架时,我们不下发补丁即可。

  • 对于此次小邑出现的崩溃,目前总结有以下两个原因:

    1. 更新X5版本,代码设计修改点很大,风险性预估不充分,测试覆盖不全面
    2. tinker版本项目中使用的还是1.9.2,此时android9.0尚未发布,厂家的定制系统可能不够适配,需要及时迭代,方可使用。
  • 对于补丁异常出现三次,再进行清除,我们可以设置次数。

  • 对于补丁下发,我们没有整体把控的数据支持;于此,我们增加补丁下发覆盖率(下载补丁数/活跃用户数),成功率(成功/活跃用户数)的数据统计。新增bugly渠道跟踪异常,bugly可以更及时,准确的反馈异常。

  • 接下来我们重点考虑如何降低Tinker导致的异常崩溃:

    1. 对于补丁版本严格把控,对补丁修改涉及的影响点评估。并列入修改点,提供给项目经理,再向上请示,是否进行相关修改。

    2. 确认发布补丁时,需要对补丁修复后的app,测试针对影响点,尽可能多的利用公司手机,覆盖测试。

    3. 结合线上资源,对补丁进行云测,扩大覆盖面,非正式包可设置补丁成功直接重启,进而不影响云测。

    4. 启用灰度测试,仅针对部分园区下发,并跟踪成功率,崩溃率等数据,进行补丁是否全面下发的判断。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容