前言
tinker-loader部分负责对补丁包进行检测和加载,分为三部分
- dex
- so
- resource
TinkerLoader
这是loader的大管家,在他的tryLoad方法中,调用内部的tryLoadPatchFilesInternal方法,在这个方法中,进行各种验证。然后调用TinkerDexLoader#loadTinkerJars 加载dex,利用TinkerResourceLoader的loadTinkerResources来加载补丁resource。并将结果什么的写入到Intent中
TinkerDexLoader
这个类负责检查dex的合法性已经加载dex。加载过程的主要代码如下
|
|
在SystemClassLoaderAdder.installDexes中,根绝不同的版本,选择不同的方式去hook。
|
|
其中各个版本都是hook classLoader进行插桩处理,具体的代码,我们就不看了。
TinkerResourceLoader
在这个类的loadTinkerResources方法中,有加载补丁资源包的代码。
|
|
加载的代码和dex的类似,都是hook一些东西,关于hook那些东西,由于需要对AssetManager比较熟悉,我这里不熟悉,就不记录了,可以去网上找点资料。