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
image.png
但是最终APK跑起来,竟然打了我在系统源码里BaseDexClassLoader里的日志。也就是说APK最终运行执行调用的类BaseDexClassLoader不是SDK里的,而是系统的类。

现象2

apk1将
```allowLog```设置为true,然后在apk2里获取```allowLog```,还是源码里默认的值false。
不同的apk运行的虽然都是源码里的类,但是不同的apk的这个类是独立于自己的apk的。

未完待续。。。

分类: 工具包

0 条评论

发表回复

您的电子邮箱地址不会被公开。