You've already forked Magisk
mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-09-06 06:36:58 +00:00
Generate class mapping at runtime
This commit is contained in:
@@ -3,6 +3,7 @@ package com.topjohnwu.magisk;
|
||||
import com.topjohnwu.magisk.utils.DynamicClassLoader;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
|
||||
// Wrap the actual classloader as we only want to resolve classname
|
||||
// mapping when loading from platform (via LoadedApk.mClassLoader)
|
||||
@@ -14,19 +15,24 @@ class InjectedClassLoader extends ClassLoader {
|
||||
|
||||
@Override
|
||||
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
|
||||
return super.loadClass(Mapping.get(name), resolve);
|
||||
String clz = DynLoad.componentMap.get(name);
|
||||
name = clz != null ? clz : name;
|
||||
return super.loadClass(name, resolve);
|
||||
}
|
||||
}
|
||||
|
||||
class RedirectClassLoader extends ClassLoader {
|
||||
|
||||
RedirectClassLoader() {
|
||||
private final Map<String, Class<?>> mapping;
|
||||
|
||||
RedirectClassLoader(Map<String, Class<?>> m) {
|
||||
super(RedirectClassLoader.class.getClassLoader());
|
||||
mapping = m;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
|
||||
Class<?> clz = Mapping.internalMap.get(name);
|
||||
Class<?> clz = mapping.get(name);
|
||||
return clz == null ? super.loadClass(name, resolve) : clz;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user