diff --git a/app/src/main/java/org/lsposed/manager/util/ModuleUtil.java b/app/src/main/java/org/lsposed/manager/util/ModuleUtil.java index 2f4e7249..13dfe951 100644 --- a/app/src/main/java/org/lsposed/manager/util/ModuleUtil.java +++ b/app/src/main/java/org/lsposed/manager/util/ModuleUtil.java @@ -58,8 +58,8 @@ public final class ModuleUtil { public static synchronized ModuleUtil getInstance() { if (instance == null) { instance = new ModuleUtil(); + instance.reloadInstalledModules(); } - instance.reloadInstalledModules(); return instance; } diff --git a/core/src/main/java/org/lsposed/lspd/config/ApplicationServiceClient.java b/core/src/main/java/org/lsposed/lspd/config/ApplicationServiceClient.java index abfd18b4..9fa4e51a 100644 --- a/core/src/main/java/org/lsposed/lspd/config/ApplicationServiceClient.java +++ b/core/src/main/java/org/lsposed/lspd/config/ApplicationServiceClient.java @@ -22,7 +22,7 @@ abstract public class ApplicationServiceClient implements ILSPApplicationService abstract public boolean isResourcesHookEnabled(); @Override - abstract public List getModulesList(String processName); + abstract public List getModulesList(String processName); abstract public List getModulesList(); diff --git a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java index 585cb449..c798ee3d 100644 --- a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -478,10 +478,8 @@ public class ConfigManager { var path = apkPath; if (!new File(path).exists()) { path = getModuleApkPath(pkgInfo.applicationInfo); - if (path == null) - obsoleteModules.add(packageName); - else - obsoletePaths.put(packageName, path); + if (path == null) obsoleteModules.add(packageName); + else obsoletePaths.put(packageName, path); } var file = loadModule(path); if (file == null) { @@ -679,13 +677,14 @@ public class ConfigManager { } } + @Nullable public String getModuleApkPath(ApplicationInfo info) { String[] apks; if (info.splitSourceDirs != null) { apks = Arrays.copyOf(info.splitSourceDirs, info.splitSourceDirs.length + 1); apks[info.splitSourceDirs.length] = info.sourceDir; } else apks = new String[]{info.sourceDir}; - var apkPath = Arrays.stream(apks).filter(apk -> { + var apkPath = Arrays.stream(apks).parallel().filter(apk -> { try (var zip = new ZipFile(apk)) { return zip.getEntry("assets/xposed_init") != null; } catch (IOException e) {