最近接入了阿里Sophix热更新,接入很简单,但打补丁时还有一些规则,
官网应该有补丁注意事项文档,但我今天没找到。如下:
基于原理 1.不能有旧包中没有的类,2.作为icon和通知栏(即系统进程跨进程调用的资源,例如remoteViews)
不能修改。
我今天debug时遇到的错误是:
Sophix.PatchManager: loadPatch fail code: 134 msg: lost some libs
com.taobao.sophix.a.b: lost some libs
at com.taobao.sophix.b.c.a(Sophix:214)
at com.taobao.sophix.a.c.a(Sophix:470)
一开始以为是gradle配置的库有变化,跟历史版本对比后发现没有问题,开始怀疑是打正式包时混淆配置的问题,因为报错是发生在未混淆的debug包上,打了正式包后报错
java.lang.IncompatibleClassChangeError: Expected 'com.qmm.hqz.ui.adpter.CandyFragmentAdapter com.qmm.hqz.ui.CandyFragment.h'
这就很明显了,之前的CandyFragmentAdapter是static 的,今天去掉了
改回后正常,所以注意事项还有3.静态资源不能修改