ndk-build中不包含许多预构建库中的一个

时间:2013-08-28 09:53:06

标签: android android-ndk

我正在使用一些本机代码开发一个Android应用程序。我还有一些应该包含在项目中的原生预建库。首先,我将预构建的lib放在项目的libs / armeabi文件夹中。但问题是这些文件在构建时被删除了。

所以我google了一下,发现你必须在你的Android.mk文件中包含这些预建的库,以便复制到libs / armeabi文件夹。

以下是我的Android.mk的一部分:

[...]
include $(CLEAR_VARS)

LOCAL_MODULE := libavcodec
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libavcodec.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libavdevice
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libavdevice.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libavfilter
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libavfilter.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libavformat
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libavformat.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libavutil
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libavutil.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libmetaiosdk
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libmetaiosdk.so

include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := libswscale
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libswscale.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libswresample
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libswresample.so

include $(PREBUILT_SHARED_LIBRARY)
[EOF]

问题是: 所有这些文件都在同一目录中,所有这些文件都被复制到libs / armeabi文件夹中。除了一个文件! libswscale.so不会被复制。我不知道这里有什么问题。我绝对没有文件名中的拼写错误。

我错过了什么。也许有人有类似的问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

我不知道Android.mk文件的执行是无序。最后丢失的lib未被复制,因为中间存在错误。所以错误的是我期望Android.mk文件从上到下以线性顺序进行处理。但这种情况并非如此。在构建结束时复制了缺少的库,可能是因为LOCAL_MODULE命名(所有libs都以libavwscale开头的libav开头)。

希望这能节省一些时间(我花了一些时间才意识到这一点)。

答案 1 :(得分:0)

libswresample下的Android.mk文件中可能未添加LOCAL_SHARED_LIBRARIES

这对我有用。