[core] fix loading embedded module so (#1036)

* [core] fix loading embedded module so

* [core] move if out of for

* [core] make cpp master happy

* [core] make cpp master happy once more

Co-authored-by: LoveSy <shana@zju.edu.cn>
This commit is contained in:
Nullptr 2021-09-03 19:16:45 +08:00 committed by GitHub
parent 673079b9c1
commit 1075743360
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 2 deletions

View File

@ -1,6 +1,7 @@
package org.lsposed.lspd.models; package org.lsposed.lspd.models;
parcelable PreLoadedApk { parcelable PreLoadedApk {
String hostApk;
List<SharedMemory> preLoadedDexes; List<SharedMemory> preLoadedDexes;
List<String> moduleClassNames; List<String> moduleClassNames;
List<String> moduleLibraryNames; List<String> moduleLibraryNames;

View File

@ -336,8 +336,22 @@ public final class XposedInit {
var sb = new StringBuilder(); var sb = new StringBuilder();
var abis = Process.is64Bit() ? Build.SUPPORTED_64_BIT_ABIS : Build.SUPPORTED_32_BIT_ABIS; var abis = Process.is64Bit() ? Build.SUPPORTED_64_BIT_ABIS : Build.SUPPORTED_32_BIT_ABIS;
for (String abi : abis) { if (file.hostApk != null) {
sb.append(apk).append("!/lib/").append(abi).append(File.pathSeparator); try {
var runtime = XposedHelpers.callStaticMethod(Class.forName("dalvik.system.VMRuntime"), "getRuntime");
var arch = (String) XposedHelpers.callMethod(runtime, "vmInstructionSet");
var hostDir = new File(file.hostApk).getParent();
for (String abi : abis) {
sb.append(hostDir).append("/lib/").append(arch).append("/").append(name).append(".so!/lib/").append(abi).append(File.pathSeparator);
}
} catch (ClassNotFoundException e) {
Log.e(TAG, " Cannot load module: " + name, e);
return false;
}
} else {
for (String abi : abis) {
sb.append(apk).append("!/lib/").append(abi).append(File.pathSeparator);
}
} }
var librarySearchPath = sb.toString(); var librarySearchPath = sb.toString();