2016-05-28 29 views

回答

1

我不知道如果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一些细节。

如果您发现如何以更简单的方式做到这一点,请张贴。

祝你好运!

相关问题