在不创建版本的情况下编译libFLAC

时间:2014-12-20 00:16:28

标签: android java-native-interface android-ndk-r5

我试图将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目录或某些其他位置似乎无法解决问题。

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

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题,谢谢:

https://github.com/showlabor/libloader

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