从安卓的obb文件夹加载一个.so原生库



我有一个.so文件,我将其包装到OBB扩展中。大约20兆字节。

我正在尝试使用

System.load("/storage/emulated/0/Android/obb/com.mypackage.myapp/libtest.so");

加载库。但是我得到了错误:

dlopen("/storage/仿真/0/android/obb/com.mypackage.myapp/libtest.so",rtld_lazy)失败:dlopen失败:无法映射/storage/emustale/emulation/emulation/emulation/emulation/emulation/0/android/obb/com.mypackage.myapp/libtest.so"段2:拒绝许可

type = 1400审核(0.0:8):avc:den {execute} for path ="/storege/emulation/emulation/0/android/obb/obb/com.mypackage.myapp/libtesp/libtest.so so" dev =" fuse" ino ino= 3676663176224 scontext = u:r:untrusted_app:s0 tcontext = u:object_r:fuse:s0 tclass = file permissive = 0

所以我意识到我们不允许在那里执行可执行。

所以我的问题是

1-应该在哪里提取文件以执行此操作?

2-我应该做什么函数?

谢谢。

在应用程序的私人内部存储文件夹下,将文件复制到您选择的任何位置,请确保将其标记为仅读取和可执行文件(不写(尤其是其他任何人)!)。这是允许可执行文件的应用程序通常可以用的位置树。

您可以通过在初始化活动或服务上下文上调用getFilesDir()来确定私有文件夹位置。

这里有许多现有问题,这些问题演示了在Java中复制文件的机制。

最新更新