0

我写了一个系统服务,但它在启动时失败并显示以下消息:

java.lang.UnsatisfiedLinkError: dlopen failed: library "libgojni.so" not found

基本上在 .aar 库的代码中,它尝试使用 System.loadLibrary() 加载库,但它失败了,即使它在 aar 文件中。当我尝试在 android 应用程序中执行它时它甚至可以工作,但它在 android 上失败。

值得一提的是,我使用 gomobile 创建了 .aar 库,将 go-project 绑定到 .aar 库中。

4

1 回答 1

1

加载本机库的 AFAIK 路径因系统和用户应用程序而异。我认为它背后的想法是系统库对于所有Android框架和系统应用程序都是通用的,因此可以重复使用这些库,并且每个依赖的应用程序不需要携带自己的副本,可能是不同的版本。

系统应用程序的库存储在系统映像中。

您可能想查看本教程如何将具有本机代码的系统应用程序添加到 AOSP 构建:https ://devarea.com/aosp-creating-a-system-application 。

这个问题可能重复System.loadLibrary(...) 在我的情况下找不到本机库

于 2021-12-27T21:05:05.513 回答