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 フォルダーにコピーされることです。1つのファイルを除いて!libswscale.so はコピーされません。ここで何が問題なのかわかりません。ファイル名に間違いはありません。

私は何かが欠けていますか?おそらく、誰かが同様の問題を抱えていましたか?

前もって感謝します!

4

2 に答える 2

0

おそらく、の下のファイルにlibswresample追加されていません。Android.mkLOCAL_SHARED_LIBRARIES

これは私にとってはうまくいきました。

于 2016-02-06T15:09:54.420 に答える
0

Android.mk ファイルが順不同で処理されるとは知りませんでした。途中でエラーが発生したため、最後に欠落しているライブラリはコピーされませんでした。つまり、Android.mk ファイルが上から下に直線的に処理されると思っていたのが間違いでした。しかし、そうではありません。おそらく LOCAL_MODULE の命名が原因で、欠落しているライブラリがビルドの最後にコピーされました (libswscale を除くすべてのライブラリは libav で始まります)。

これが他の人の時間を節約することを願っています(私はそれを実現するのに少し時間がかかりました)。

于 2013-08-28T10:23:56.130 に答える