SDK是各个版本的android源码编译出来的各种Jar包以及一些工具的合集。
以前做应用开发,只知道SDK有各种API以及adb等工具可以使用,直到研究了编译源码、修改源码,才对SDK有了新的认识。
现象1
看我写的这篇文章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
但是最终APK跑起来,竟然打了我在系统源码里BaseDexClassLoader里的日志。也就是说APK最终运行执行调用的类BaseDexClassLoader不是SDK里的,而是系统的类。
现象2
apk1将
```allowLog```设置为true,然后在apk2里获取```allowLog```,还是源码里默认的值false。
不同的apk运行的虽然都是源码里的类,但是不同的apk的这个类是独立于自己的apk的。
未完待续。。。
0 条评论