在另一个 NDK 库项目中包含预构建的 static/shared NDK 库

Including a prebuilt static/shared NDK lib, inside another NDK lib project

所以我想做的是:

  1. 用 C++ 为 NDK 构建一个渲染插件(传递一个位图 + textureID 并在纹理上渲染位图)。这很好用。

  2. 将渲染插件添加到使用ffmpeg解码视频的C(for NDK)项目中,视频的每一帧都传递给渲染插件显示。

我可以将渲染插件构建到C项目中,相关文件移动到Obj/local/libs/目录(我已经尝试了静态和共享构建渲染器)。但是我无法将其包含在实际的 C 代码中。

目录如下所示:

当我尝试将 #include <renderplugin.h> 添加到我的代码时,它不会 link,说 file or directory could not be found

我的 Android.mkjni 文件夹中:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NativeMediaPlayer
LOCAL_SRC_FILES := NativeMediaPlayer.c
LOCAL_LDLIBS := -llog -lz -lGLESv2
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libavutil liblog libswscale NativeRenderPlugin

include $(BUILD_SHARED_LIBRARY)
#ffmpeg
$(call import-add-path, ../)
$(call import-module, NativeMediaPlayer/external)
#render plugin
$(call import-add-path, jni)
$(call import-module, prebuilt)

以及插件所在prebuilt文件夹中的Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libNativeRenderPlugin
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib/libNativeRenderPlugin.so
LOCAL_EXPORT_C_INCLUDES += $(TARGET_ARCH_ABI)/include
include $(PREBUILT_SHARED_LIBRARY)

这似乎与库的放置位置有关,在将它们移动到与 ffmpeg 库相同的文件夹(并更新 makefile)之后,include 现在可以正常工作了。