[core] Check apk path is not null (#885)
This commit is contained in:
parent
09e50460cd
commit
3cc368754b
|
|
@ -476,7 +476,7 @@ public class ConfigManager {
|
|||
continue;
|
||||
}
|
||||
var path = apkPath;
|
||||
if (!new File(path).exists()) {
|
||||
if (path == null || !new File(path).exists()) {
|
||||
path = getModuleApkPath(pkgInfo.applicationInfo);
|
||||
if (path == null) obsoleteModules.add(packageName);
|
||||
else obsoletePaths.put(packageName, path);
|
||||
|
|
@ -621,6 +621,7 @@ public class ConfigManager {
|
|||
|
||||
@Nullable
|
||||
private PreLoadedApk loadModule(String path) {
|
||||
if (path == null) return null;
|
||||
var file = new PreLoadedApk();
|
||||
var preLoadedDexes = new ArrayList<SharedMemory>();
|
||||
var moduleClassNames = new ArrayList<String>(1);
|
||||
|
|
@ -685,6 +686,10 @@ public class ConfigManager {
|
|||
apks[info.splitSourceDirs.length] = info.sourceDir;
|
||||
} else apks = new String[]{info.sourceDir};
|
||||
var apkPath = Arrays.stream(apks).parallel().filter(apk -> {
|
||||
if (apk == null) {
|
||||
Log.w(TAG, info.packageName + " has null apk path???");
|
||||
return false;
|
||||
}
|
||||
try (var zip = new ZipFile(apk)) {
|
||||
return zip.getEntry("assets/xposed_init") != null;
|
||||
} catch (IOException e) {
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ import static org.lsposed.lspd.service.ServiceManager.TAG;
|
|||
import android.app.IServiceConnection;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
|
|
@ -124,15 +123,8 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
@Override
|
||||
public boolean enableModule(String packageName) throws RemoteException {
|
||||
PackageInfo pkgInfo = PackageService.getPackageInfo(packageName, PackageService.MATCH_ALL_FLAGS, 0);
|
||||
if (pkgInfo != null) {
|
||||
ApplicationInfo appInfo;
|
||||
try {
|
||||
appInfo = pkgInfo.applicationInfo;
|
||||
} catch (Throwable t) {
|
||||
Log.wtf(TAG, t);
|
||||
throw t;
|
||||
}
|
||||
return ConfigManager.getInstance().enableModule(packageName, appInfo);
|
||||
if (pkgInfo != null && pkgInfo.applicationInfo != null) {
|
||||
return ConfigManager.getInstance().enableModule(packageName, pkgInfo.applicationInfo);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -247,7 +239,7 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean systemServerRequested() throws RemoteException {
|
||||
public boolean systemServerRequested() {
|
||||
return ServiceManager.systemServerRequested();
|
||||
}
|
||||
|
||||
|
|
@ -271,9 +263,6 @@ public class LSPManagerService extends ILSPManagerService.Stub {
|
|||
|
||||
@Override
|
||||
public boolean dex2oatFlagsLoaded() {
|
||||
// var splitFlags = new ArrayList<>(Arrays.asList(flags.split(" ")));
|
||||
// splitFlags.add(PROP_VALUE);
|
||||
// SystemProperties.set(PROP_NAME, String.join(" ", splitFlags));
|
||||
return SystemProperties.get(PROP_NAME).contains(PROP_VALUE);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue