一般问题: 是否可以使用 ClassLoader 替换预加载的(由系统,例如在 Android 的%android%/frameworks/base/preloaded-classes文件中找到)类?
具体: 在我的应用程序中创建 WebView 之前,我正在尝试使用 DexClassLoader 替换在 android.net.* 中找到的类。我可以得到一个 Class 对象,但是 getMethods() 例如给了我一个我期望在未修改/原始类实现中的数组。这是由于预加载类系统造成的吗?
基本设置和伪代码:
- 修改 android.net.* 类,添加一些测试方法/等。
- 编译并以 classes.dex 结束
- jar cf mytest.jar classes.dex
- 在 APK 资产中包含 mytest.jar
- 创建 DexClassLoader 并通过 loadClass() 获取 Class
- Class 对象上的 getMethods() 返回一个数组,我希望看到 #1 中没有修改
如果需要,我可以提供有关我正在使用的设置和代码的更多详细信息。