【问题标题】:java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memmove4"java.lang.UnsatisfiedLinkError:dlopen 失败:找不到符号“__aeabi_memmove4”
【发布时间】:2017-01-22 15:00:49
【问题描述】:

我使用 NDK 交叉编译了许多不同版本的库并在我的 Android 应用程序中使用它们。他们工作得很好,直到我的应用程序最终发布,我的同事已经在他的XiaoMi 4 上测试了应用程序并出现了这个错误。 首先,我认为这可能是因为某些特定平台的库丢失了,但是在我提取 .apk 文件后不久,发现所有内容实际上都在那里。

我已经搜索了谷歌,没有找到可以解决问题的任何东西。

PS:在我的新版本应用程序中,我只是在我的 C 库中更改了几行,所有这些都只是 if-else-return 的东西。我从未使用过任何memcpy-memmove 函数,更不用说memmove4

谁能给我解释一下? __aeaib_memmove4 是什么?

【问题讨论】:

  • 人们应该总是为反对票做出解释。
  • 我会尝试不同的 ndk 版本,看看是否会改变一切。另外,你看过这里吗:stackoverflow.com/questions/39541599/…
  • @yakobom 我首先想到的是:可能我的mac上的NDK不一样。所以我尝试在新安装的ubuntu和windows上编译我的库,没有成功。该问题仅出现在XiaoMi4 上,但在其他设备上运行良好。所以,唯一的解释是:我当前的NDK版本太高(并且包含XiaoMi4不支持的一些功能)。
  • 在新安装的 ubuntu 上编译你的库并没有说明你安装的 NDK 版本。正如我所建议的那样 - 如果支持该设备对您来说也很重要,那么您为什么不尝试使用较旧的 NDK?

标签: android android-ndk


【解决方案1】:

所以我终于解决了问题,将我的Android.mk文件中的APP-PLATFORM从8升级到了17,也就是我的targetSDK版本,所以错误就没有了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2016-11-15
    • 2017-02-19
    • 2017-02-19
    • 2019-02-04
    • 2017-04-11
    • 2019-07-31
    相关资源
    最近更新 更多