Tinker学习笔记

一.原理
1.装载差分包,跟原来的dex文件合并,生成新的dex文件.
2.重新启动后,将新的dex文件插入到DexList的前面,这样就覆盖了旧的.

二.流程
1.启动一个IntentService(TinkerPatchService)将差分包和旧的dex文件合并.
2.应用重启后,在TinkerApplication中,通过反射拿到BaseDexClassLoader的pathList,
  然后通过反射调用PathList的makeDexElements,生成新的Element,并插入到   
  dexElements数组的前面.
3.所以后面装载class的时候,都先从新的dex文件中找到,就不会往后找.
阅读更多

没有更多推荐了,返回首页