gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:01:10 33 4
gpt4 key购买 nike

我将一个 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 年里,谷歌一直在努力阻止链接到它。

您可以将 libcutils.so 自己构建为 AOSP 的一部分,或者您可以从您的设备或兼容的模拟器中adb pull 它。您还可以在 Web 上的某个地方找到此二进制文件(例如 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com