SDK是各个版本的android源码编译出来的各种Jar包以及一些工具的合集。
以前做应用开发,只知道SDK有各种API以及adb等工具可以使用,直到研究了编译源码、修改源码,才对SDK有了新的认识。
看我写的这篇文章https://www.jianshu.com/p/d1525c64cb8f
的最后,我定义的一个类MyClassLoader:
import dalvik.system.BaseDexClassLoader;
public class MyClassLoader extends BaseDexClassLoader {
public MyClassLoader(String dexPath, File optimizedDirectory, String librarySearchPath, ClassLoader parent) {
super(dexPath, optimizedDirectory, librarySearchPath, parent);
}
}
继承的是sdk里的BaseDexClassLoader
image.png
但是最终APK跑起来,竟然打了我在系统源码里BaseDexClassLoader里的日志。也就是说APK最终运行执行调用的类BaseDexClassLoader不是SDK里的,而是系统的类。
未完待续。。。