我试图将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目录或某些其他位置似乎无法解决问题。
我如何解决这个问题?是我的汇编错了吗?或者有没有办法重命名这些,所以他们不是版本号?
答案 0 :(得分:0)
我设法解决了这个问题,谢谢:
https://github.com/showlabor/libloader
这有点奇怪,但基本上只是确保您的版本化库(在我的情况下为.8,.8.3.0)位于libs目录中(或以其他方式捆绑在jar中)并且您可以加载它们使用这种方法。