gpt4 book ai didi

android - ClassLoader 来替换一个预加载的类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:17 25 4
gpt4 key购买 nike

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

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

基本设置和伪代码:

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

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

最佳答案

不,你不能。 WebView 是引导类路径的一部分,因此是基类加载器。您无法做任何事情来让它使用另一个类加载器中的类。事实上,它甚至在您的应用程序启动之前就已经加载并链接到它使用的类(作为 zygote 进程预初始化的一部分)。

关于android - ClassLoader 来替换一个预加载的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6628112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com