ClassLoader来替换预先加载的类



一般问题:是否可以使用ClassLoader来替换预加载的(由系统,例如在Android的%Android%/frameworks/base/ploaded classes文件中找到的(类?

具体:在我的应用程序中创建WebView之前,我正试图使用DexClassLoader来替换android.net.*中的一个类。我可以得到一个Class对象,但是getMethods((为我提供了一个数组,这是我在未修改/原始类实现中所期望的。这是由于预加载的类系统吗?

基本设置&伪代码:

  1. 修改android.net.*类,添加一些测试方法等
  2. 编译并以classes.dex结束
  3. jar cf mytest.jar classes.dex
  4. 在APK资产中包含mytest.jar
  5. 创建DexClassLoader并通过loadClass((获取Class
  6. Class对象上的getMethods((返回一个数组,我希望在没有修改的情况下在#1中看到它

如果需要,我可以提供更多关于我正在使用的设置和代码的详细信息。

不,你不能。WebView是引导类路径的一部分,因此也是基类加载程序的一部分。您无法使它使用另一个类加载器中的类。事实上,在你的应用程序启动之前(作为合子预初始化过程的一部分(,它已经被加载并链接到它使用的类。

相关内容

  • 没有找到相关文章

最新更新