0

我正在尝试将 libFLAC 移植到 android,但遇到了以下问题。

我相信我已经正确配置了 android 工具链,并且可以编译一个 .so 文件。

但是,我从该过程中获得了三个 .so 文件:

libFLAC.so, libFLAC.so.8 libFLAC.so.8.3.0

如果我将 libFLAC.so 带入我的 android 版本,我最终会失败:

java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libFLAC.so.8" needed by "libLibFlacWrapper.so"; caused by library "libFLAC.so.8" not found
E/AndroidRuntime(26684): 

据我了解,这与能够共存的库版本有关,这是一件很正常的事情。问题是android不支持这种命名约定,有证据表明:

https://code.google.com/p/android/issues/detail?id=64397

本质上,包管理器无法处理扩展的命名约定。

将这些文件捆绑在 jniLibs 目录或其他位置似乎不能解决问题。

我将如何解决这个问题?我的编译错了吗?或者有没有办法重命名这些,所以它们不是版本号?

4

1 回答 1

0

由于以下原因,我设法解决了这个问题:

https://github.com/showlabor/libloader

这有点奇怪,但基本上只需确保您的版本库(在我的情况下为 .8、.8.3.0)位于 libs 目录中(或以其他方式捆绑在 jar 中),您可以使用此方法加载它们。

于 2014-12-23T14:56:12.323 回答