gpt4 book ai didi

java - 自定义类加载/覆盖 Android 原生类

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

主要目标是用我自己的实现覆盖 Android 系统类(Activity、View 等)。

http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

实现了自定义类加载的ClassLoader,加载非系统类(自定义类)工作。

但是当我尝试用我的实现加载 Activity 时 - 它不会加载,因为 ClassLoader 的缓存中已经有这个类:

/**
* Returns the class with the specified name if it has already been loaded
* by the virtual machine or {@code null} if it has not yet been loaded.
*
* @param className
* the name of the class to look for.
* @return the {@code Class} object or {@code null} if the requested class
* has not been loaded.
*/
protected final Class<?> findLoadedClass(String className) {
ClassLoader loader;
if (this == BootClassLoader.getInstance())
loader = null;
else
loader = this;
return VMClassLoader.findLoadedClass(loader, className);
}

如何更改类加载器以注入(inject)我自己的类而不是系统?

最佳答案

我找到了 this solution从博客文章。我知道发布链接是违反堆栈溢出策略的,但文本太大而无法传输。

想法是编写一些 C 代码来覆盖低级类加载机制,从而覆盖方法的执行方式。我希望这可能对某人有所帮助。

关于java - 自定义类加载/覆盖 Android 原生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8397780/

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