安卓NDK : Module MediaEncoder depends on undefined modules: cutils gnuSTL dl

标签 android compiler-errors android-ndk

我将 ADT 项目隐藏到 Android Studio 中。但是,我在构建此项目时不断收到错误:

错误:(687) Android NDK:模块 MediaEncoder 依赖于未定义的模块:cutils gnuSTL dl

这就是 Android.mk 中的内容。我是 NTK 的新手,有人可以在这里提出这个问题的建议吗?

 # building application library 
#
include $(CLEAR_VARS)
LOCAL_MODULE := libMediaEncoder
LOCAL_CPP_EXTENSION := .cc .cpp
LOCAL_CPPFLAGS := -O2 -Werror -Wall 
LOCAL_C_INCLUDES :=  $(MY_LOCAL_PATH)
LOCAL_SRC_FILES := main_jni.cpp \
                   h264encoder.cpp \
                   g72x/g726_32.c \
                   g72x/g711.c \
                   g72x/g72x.c 

LOCAL_LDLIBS += -llog -lz
LOCAL_SHARED_LIBRARIES := libcutils\
                          libgnustl\
                          libdl

最佳答案

我相信您使用的项目配置为在 AOSP 构建上下文中构建,而不是由 NDK 构建。但它仍然可以与非常旧的 NDK 版本一起使用。

当前版本 r14 已集成到 Android Studio 2.3 中,需要对 Android.mk 进行一些更改。

include $(CLEAR_VARS)
LOCAL_MODULE := libMediaEncoder
LOCAL_CPPFLAGS := -O2 -Werror -Wall 
LOCAL_C_INCLUDES :=  $(MY_LOCAL_PATH)
LOCAL_SRC_FILES := main_jni.cpp \
                   h264encoder.cpp \
                   g72x/g726_32.c \
                   g72x/g711.c \
                   g72x/g72x.c 
LOCAL_LDLIBS += -llog -lz -ldl
LOCAL_SHARED_LIBRARIES := libcutils_prebuilt
include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcutils_prebuilt
LOCAL_SRC_FILES := {full-path-to}/libcutils.so
include $(PREBUILT_SHARED_LIBRARY)

要解决对 gnuSTL 的依赖关系,请运行 ndk-build APP_STL=gnuSTL_static,或在 Application.mk 中定义 APP_STL 文件。


请注意,您的项目使用非公共(public)系统库libcutils.so。该库曾经包含在 NDK 中(请参阅 https://stackoverflow.com/a/22017733/192373 ),但在过去 3 年中,Google 一直在努力阻止链接到它。

您可以自己构建 libcutils.so 作为 AOSP 的一部分,也可以从您的设备甚至兼容的模拟器adb pull它。您还可以在网络上的某个位置找到此二进制文件(例如 GitHub )。

最后一击是宣布对 Android 7.0 Nougat 的系统链接进行更改。 。 TL;NR:任何依赖此库的应用程序都无法在未来的 Android 版本上运行。

关于安卓NDK : Module MediaEncoder depends on undefined modules: cutils gnuSTL dl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917707/

相关文章:

android - 如何使用闹钟管理器获取工作日的重复闹钟?

Android 处理电话

C++ 编译错误非类类型

c++ - 构建使用 Eigen 的项目时出现编译器错误,Eigen 是线性代数的 C++ 模板库

android - Android上的Poco C++ Net找不到地址

Android mkdirs() 返回 false

android - 如何在 Android 中使用 ViewPager 和 NavigationDrawer

vbscript - VBS预期语句错误

java - 是否可以实现安全应用程序来阻止 Android 上漫游时的互联网?

android - 如何在Qt项目中使用Android NDK?