传统开发流程:
存在的问题:
发版渠道多
发版周期长
需要用户更新
修复bug成本极高
引入热修复技术:
动态修复已经发布的app的bug或者新增功能,不需要重新发版,用户无感知
热修复执行流程:
热修复的可选方案:
1.AndFix(基于JNI)
2.QQ超级补丁技术
3.Sophix(sdk第三方接入)
4.Bugly
5.Thinker
热修复的原理:
以美团的Robust为代表:(轻量级)
当执行某一个方法的时候,它会下发一个patch.dex(用户从后台拉取的),当需要使用A类 的时候,会先在Patch中寻找有没有A类,如果有的话就使用patch中的A类,执行相应的方法。(类似于AOP,在执行过程中拦截操作,动态类替换)
以Thinker为代表:(全量合成)
下发patch的时候将手机里原来的dex(basedex)和patch.dex合成一个新的dex,当应用第二次启动的时候,使用的就是新的dex。
下发patch.apk的执行流程: