我有一个.so文件,我将该文件打包到obb扩展中。大约20兆字节。
我正在尝试使用
System.load("/storage/emulated/0/Android/obb/com.mypackage.myapp/libtest.so");
加载库。但是我得到了错误:
dlopen(“ / storage / emulated / 0 / Android / obb / com.mypackage.myapp / libtest.so”,RTLD_LAZY)失败:dlopen失败:无法映射“ / storage / emulated / 0 / Android / obb / com。 mypackage.myapp / libtest.so”段2:权限被拒绝
类型= 1400审核(0.0:8):AVC:针对路径=“ /存储/仿真/0/Android/obb/com.mypackage.myapp/libtest.so” dev =“ fuse” ino = 367663176224 scontext拒绝{执行} = u:r:untrusted_app:s0 tcontext = u:object_r:fuse:s0 tclass =文件许可= 0
所以我意识到我们不允许在那儿有可执行文件。
所以我的问题是
1-应该在哪里提取文件才能执行此操作?
2-我应该进行什么函数调用?
谢谢你。
将文件复制到应用程序的私有内部存储文件夹下您选择的任何位置,确保将其标记为只读和可执行(不可写,尤其是其他任何人都不能写!)。这是允许可执行文件的应用程序通常可写的唯一位置树。
您可以通过调用getFilesDir()
已初始化的活动或服务上下文来确定私有文件夹的位置。
这里有许多现有问题,这些问题演示了Java中文件复制的机制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句