gpt4 book ai didi

Android 从路径加载库

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:28 24 4
gpt4 key购买 nike

我正在检查 Android 5.0 中 selinux(SE Linux) 的许可和强制机制。我已将 .so 文件放在/data/data/packageName/files/libtestcalc.so 中。

当设备处于宽容模式时, System.load("/data/data/packageName/files/libtestcalc.so"); - 工作正常,我能够毫无异常(exception)地访问 .so 文件的方法。

同理,System.load("/data/data/packageName/files/libtestcalc.so");当设备处于强制模式时不工作,我收到如下异常。

java.lang.UnsatisfiedLinkError:dlopen 失败:无法映射“/data/data/packageName/files/libtestcalc.so”段 1:权限被拒绝

我想在这两种模式下,都会发生相同的调用流程。我的意思是 System.load(..)->Runtime.getRuntime().load(..)->Runtime.getRuntime(..).doload(..)->Runtime.getRuntime().nativeLoad(..)

@Runtime.java->doLoad(..) 文档提到为“nativeLoad 应该是同步的,所以不管怎样都只有一个 LD_LIBRARY_PATH 在使用中……”

这个 LD_LIBRARY_PATH 什么时候更新?

android 如何根据模式区分加载文件?想知道从“/data/data/packageName/files/”加载.so文件的其他方法。

最佳答案

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

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

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

关于Android 从路径加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com