我有一个.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:权限被拒绝 path="/storage/emulated/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=file permissive=0的type=1400审计(0.0:8):avc:拒绝{ execute }
所以我意识到我们不允许在那里有一个可执行文件。
所以我的问题是,
1-哪里应该提取文件才能做到这一点?
我应该打什么功能电话?
谢谢。
发布于 2015-05-14 15:24:49
将该文件复制到应用程序私有内部存储文件夹下的任意位置,确保其标记为只读和可执行(不可写,尤其是其他任何人!)这是允许可执行文件的应用程序通常可写的唯一位置树。
您可以通过在初始化的活动或服务上下文上调用getFilesDir()来确定私有文件夹位置。
这里有许多现有的问题,它们演示了Java中的文件复制机制。
https://stackoverflow.com/questions/30240963
复制相似问题