【问题标题】:Undefined modules when switching to a newer version of android ndk切换到较新版本的 android ndk 时未定义的模块
【发布时间】:2017-07-31 02:54:45
【问题描述】:

我正在尝试从 ndk-r11c 升级到 ndk-r14。当我运行 r14 时,我得到一个错误

Android NDK:模块 myJNI 依赖于模块:png jpeg log

在我的 Android 中: LOCAL_SHARED_LIBRARIES := png jpeg 日志

【问题讨论】:

  • 那个错误信息正确吗?你确定它没有说“取决于 undefined 模块”吗?
  • 是的,对不起。 “未定义的模块”

标签: android android-ndk java-native-interface shared-libraries


【解决方案1】:

在缺少 opencv_legacy 模块的 OpenCV Android SDK 3.1 中遇到类似错误

/home/jenkins/android-ndk-r15c/build/core/build-binary.mk:688: Android NDK: Module TestProject depends on undefined modules: opencv_legacy    

将以下行添加到 src/main/jni/Application.mk 解决问题,感谢@Dan Albert

APP_ALLOW_MISSING_DEPS=true

【讨论】:

  • 在另一个项目中,即使添加上面的行,仍然显示相同的错误:Android NDK: Module ProjectTest2 depends on undefined modules: opencv_legacy。然后我们发现NDK_TOOLCHAIN_VERSION需要从4.8改成4.9,然后我们就可以无错误地构建了。将NDK_TOOLCHAIN_VERSION := 4.8 更改为NDK_TOOLCHAIN_VERSION := 4.9
【解决方案2】:

我也收到此错误,但原因不同。

构建环境托管在 Windows 上,正在构建的项目位于深层目录中。由于 Windows 路径大小限制,无法找到所需的模块。

所以我解决了在高级路径(例如 D:\)中构建项目的问题,以确保路径大小不会成为问题。

【讨论】:

    【解决方案3】:

    假设您没有复制完整的错误消息并且它实际上说“取决于 undefined 模块”,请查看release notes

    如果缺少任何依赖项,模块构建现在将失败。要恢复到旧行为,请设置 APP_ALLOW_MISSING_DEPS=true。见https://github.com/android-ndk/ndk/issues/208

    liblog 不应该在LOCAL_SHARED_LIBRARIES 中。你想要LOCAL_LDLIBS := -llog。虽然,实际上,如果这个警告被触发,但你的项目正在构建,你无论如何都不会使用它。

    libjpeglibpng 似乎没有在您的项目中定义。只需将它们删除,因为它们无论如何都无法使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2021-08-25
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多