web-dev-qa-db-ja.com

Android NDK:中止しますか?

私はAndroid用のffmpegに取り組んでいます。 ffmpeg-2.0.1を正常にコンパイルした後、NDKのsources/ffmpeg-2.0.1/Android/armにAndroid.mkファイルを作成します。

      LOCAL_PATH:= $(call my-dir)

      include $(CLEAR_VARS)

      LOCAL_MODULE:= libavcodec

      LOCAL_SRC_FILES:= lib/libavcodec-55.so

       LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

      include $(PREBUILT_SHARED_LIBRARY)

その後、make Android project and in Android projectAndroid.mkファイルは次のようになります

  LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

   LOCAL_MODULE    := tutorial01
   LOCAL_SRC_FILES := tutorial01.c
   LOCAL_LDLIBS := -llog -ljnigraphics -lz 
   LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil

   include $(BUILD_SHARED_LIBRARY)
    $(call import-module,ffmpeg-2.0.1/Android/arm)

しかし問題を示しています

 *** Android NDK: Aborting    .  Stop.
   Android-ffmpeg-tutorial01line 45, external location: 
   /home/tech/Documents/roman10/ndk/Android-ndk-r9c/build/core/prebuilt-library.mk
   C/C++ Problem

私のNDKはAndroid-ndk-r9c、システムはubuntu-13.04です。誰かが私を案内してください。

前もって感謝します。

13
Sandeep Tiwari

最初に Android.mk structure を参照してください。

このようにAndroid.mkファイルを変更する必要があります:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := ffmpeg
LOCAL_SRC_FILES := libs/ffmpeg.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := final_ffmpeg
LOCAL_SRC_FILES := ffmpeg.cpp
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
LOCAL_PREBUILTS := libs/ffmpeg.so
#libavformat libavcodec libswscale libavutil
include $(BUILD_SHARED_LIBRARY)

p/s:次のようにデータをまとめるとAndroid NDK : Abortingの問題も発生します:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE:= ffmpeg
LOCAL_SRC_FILES:= libs/ffmpeg.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := ffmpeg
LOCAL_SRC_FILES := ffmpeg.cpp
LOCAL_SHARED_LIBRARIES := ffmpeg
include $(BUILD_SHARED_LIBRARY)

この問題は、LOCAL_MODULEnameが重複している場合に発生します。

結果はあなたを助けます:

それでも、必要なときに正確に Java file からC++ファイルのC++関数を呼び出します。

7
Huy Tower

NDK64-Linux-r10でHelloComputeNDKサンプルをビルドしようとすると、同様の問題が発生します。

次に、NDK64-Linux-r10にはAndroid-Lプラットフォームしかないことに気付いたので、NDK32-Linux-R10をダウンロードして、NDK64-Linux-r10とマージします。

それは私にとってうまくいきます。

UはここからNDK32-Linux-r10をダウンロードできます: https://developer.Android.com/tools/sdk/ndk/index.html

0
Marvin Wang