0
如何把這個HELLO-JNI項目https://codelabs.developers.google.com/codelabs/android-studio-jni/index.html?index=..%2F..%2Findex#0 到Xposed模塊和使用方法「getMsgFromJni」掛鉤方法裏面?如何在Xposed模塊項目中使用.so文件?
如何把這個HELLO-JNI項目https://codelabs.developers.google.com/codelabs/android-studio-jni/index.html?index=..%2F..%2Findex#0 到Xposed模塊和使用方法「getMsgFromJni」掛鉤方法裏面?如何在Xposed模塊項目中使用.so文件?
我不知道如果Xposed已經支持此功能,但它應該是可以放置在應用本地庫文件夾中的.so或者是掛鉤Android的DexClassLoader到您的書架。
我已成功地將.so文件加載到其他應用程序使用類加載器。我的解決方案可以是一個很好的用例,所以你可以找到如何使它做你想做的事情。基本上我放在圖書館/數據/本地的/ tmp /當地人,然後不喜歡的東西:
//JNI classes are in data/local/tmp/dexjars/
File[] files = new File("data/local/tmp/dexjars/" + type + "/").listFiles();
//Folder to store optimized dex code
String hash = "dex" + lpparam.packageName.hashCode();
//In case you want to have several packages to load
for (File file : files) {
final File tmpDir = new File("data/local/tmp/optdexjars/" + hash + "/");
tmpDir.mkdirs();
//Create a DexClassLoader that links yo your native libraries
final DexClassLoader classloader = new DexClassLoader(
file.getAbsolutePath(), tmpDir.getAbsolutePath(),
"data/local/tmp/natives/",
ClassLoader.getSystemClassLoader());
//Retrieve your classes performing the JNI
Class c = Class.forName("FULLY_QUALIFIED_JNI_CLASSNAME", true, classloader);
}
如果您需要關於如何打包功能看看here一些細節。
如果您發現如何以更簡單的方式做到這一點,請張貼。
祝你好運!