0

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

所以我用谷歌搜索了一下,发现你必须在你的 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 不会被复制。我不知道这里有什么问题。我绝对没有文件名中的错字。

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

提前致谢!

4

2 回答 2

0

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

希望这可以节省其他人一些时间(我花了一段时间才意识到这一点)。

于 2013-08-28T10:23:56.130 回答
0

可能,libswresample没有添加到Android.mk下的文件中LOCAL_SHARED_LIBRARIES

这对我有用。

于 2016-02-06T15:09:54.420 回答