gpt4 book ai didi

java - 如何从另一个 native 库 (.so) 加载 native 库 (.so)?

转载 作者:行者123 更新时间:2023-12-02 11:40:46 28 4
gpt4 key购买 nike

所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设备上,那么构建我的项目的过程是什么,其中来自 Java 层的一个加载调用将加载这两个库,第一个是 liba。 so(直接调用)然后libb.so(第二次调用,嵌套调用,从liba.so调用)?

最佳答案

如果 liba.so 和 libb.so 都打包到您的 APK 中,则安装程序会将两者解压到 nativeLibraryDir .

在 Java 中,loadLibrary() 将自动查找此目录。但 dlopen() 不知道这条路径。您必须向 dlopen() 提供已安装的 libb.so 的完整路径。

或者,您可以从 Java 加载 libb,然后它将在内存中,并且 liba 将在不使用 dlopen() 的情况下找到它的导出符号。

如果您需要更好地了解将库打包到APK中的过程,请参阅this wonderful answer .

关于java - 如何从另一个 native 库 (.so) 加载 native 库 (.so)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48579189/

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