【问题标题】:Compiling libFLAC without creating versions在不创建版本的情况下编译 libFLAC
【发布时间】:2014-12-20 00:16:28
【问题描述】:

我正在尝试将 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 目录或其他位置似乎并不能解决问题。

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

【问题讨论】:

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


    【解决方案1】:

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

    https://github.com/showlabor/libloader

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

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 2011-12-27
      • 2013-11-15
      • 2012-06-26
      • 2014-12-23
      • 2016-04-20
      相关资源
      最近更新 更多