Only clear modules' LoadedApks rather than all (#2647)
This commit is contained in:
parent
e83ef1841b
commit
afe74b536b
|
|
@ -237,12 +237,14 @@ public final class XposedInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadModules(ActivityThread at) {
|
public static void loadModules(ActivityThread at) {
|
||||||
|
var packages = (ArrayMap<?, ?>) XposedHelpers.getObjectField(at, "mPackages");
|
||||||
serviceClient.getModulesList().forEach(module -> {
|
serviceClient.getModulesList().forEach(module -> {
|
||||||
loadedModules.put(module.packageName, Optional.empty());
|
loadedModules.put(module.packageName, Optional.empty());
|
||||||
if (!LSPosedContext.loadModule(at, module)) {
|
if (!LSPosedContext.loadModule(at, module)) {
|
||||||
loadedModules.remove(module.packageName);
|
loadedModules.remove(module.packageName);
|
||||||
|
} else {
|
||||||
|
packages.remove(module.packageName);
|
||||||
}
|
}
|
||||||
((ArrayMap<?, ?>) XposedHelpers.getObjectField(ActivityThread.currentActivityThread(), "mPackages")).clear();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,7 @@ public class LSPosedContext extends XposedContext {
|
||||||
Log.e(TAG, " This may cause strange issues and must be fixed by the module developer.");
|
Log.e(TAG, " This may cause strange issues and must be fixed by the module developer.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
module.applicationInfo.packageName = module.packageName; // Just in case
|
||||||
var loadedApk = at.getPackageInfoNoCheck(module.applicationInfo, null);
|
var loadedApk = at.getPackageInfoNoCheck(module.applicationInfo, null);
|
||||||
XposedHelpers.setObjectField(loadedApk, "mClassLoader", mcl);
|
XposedHelpers.setObjectField(loadedApk, "mClassLoader", mcl);
|
||||||
XposedHelpers.setObjectField(loadedApk, "mDataDir", appDir);
|
XposedHelpers.setObjectField(loadedApk, "mDataDir", appDir);
|
||||||
|
|
@ -217,14 +218,14 @@ public class LSPosedContext extends XposedContext {
|
||||||
Log.e(TAG, " Failed to load class " + moduleClass, e);
|
Log.e(TAG, " Failed to load class " + moduleClass, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log.d(TAG, "Loaded module " + module.packageName + ": " + ctx);
|
|
||||||
module.file.moduleLibraryNames.forEach(NativeAPI::recordNativeEntrypoint);
|
module.file.moduleLibraryNames.forEach(NativeAPI::recordNativeEntrypoint);
|
||||||
return true;
|
Log.d(TAG, "Loaded module " + module.packageName + ": " + ctx);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Log.d(TAG, "Loading module " + module.packageName, e);
|
Log.d(TAG, "Loading module " + module.packageName, e);
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AssetManager getAssets() {
|
public AssetManager getAssets() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue