Android库无法满足jar文件的链接错误

时间:2019-06-26 22:28:58

标签: android android-ndk

我有一个项目,其中包括一个sample app,以及一个我们称为我创建的sdk的模块,当所有模块都包含在内时,我最终将其打包为.aar文件完成。 sample app告诉sdk运行服务。此服务需要使用已打包为.jar文件(包括.so文件)的外部库。问题是,每次尝试加载库时,都会收到一个不满意的链接错误,指出.so文件不存在,因此无法打开该库。我不太确定我是否将所有内容都放置在正确的位置,如错误所述。如果我错过了一步,我希望有人可以帮助我指出正确的方向。下面,我将显示项目的文件结构以及尝试打开库的操作。

文件结构

`- MY PROJECT
     - My Sample App  (com.mine.mysampleapp)
           - build
           - src...etc
     - SDK (separate module) (com.mine.mysamplesdk)
           - build
           - libs
                - my-lib.jar
                     - assets
                          - arm64-v8a
                               - my-lib.so
                          - armeabi-v7a
                               - my-lib.so

库加载代码

System.load(context.getFilesDir() + "/my-lib.so");

我不理解的是.so文件位于sdk内部,但错误消息:

dlopen failed: library "/data/user/0/com.mine.mysampleapp/files/my-lib.so" not found

表明它正在我的示例应用程序中寻找文件。

1 个答案:

答案 0 :(得分:0)

如果您尝试打包为AAR,则它们已经内置了对JNI库的支持:https://www.codepool.biz/build-so-aar-android-studio.html

与其将库放置在资产目录中并尝试自行组装System.load路径,不如将它们放置在该目录中,然后您可以System.loadLibrary("my-lib")(请注意,System.loadLibrary不会实际上不可以让您打开一个不带“ lib”前缀的库,因此您需要重命名该库才能使它起作用)。