it-roy-ru.com

Android NDK: отмена остановки?

Я работаю над ffmpeg для Android. Я успешно скомпилировал ffmpeg-2.0.1 после этого я делаю файл Android.mk в исходниках моего NDK/ffmpeg-2.0.1/Android/arm как 

      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)

После этого сделайте проект Android и в проекте Android файл Android.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 дублируется.

Результат поможет вам:

Это все еще будет именно тогда, когда вам нужно вызвать функцию C++ в файле C++ из файла Java .

7
Huy Tower

Я столкнулся с подобной проблемой, когда пытался собрать пример HelloComputeNDK с NDK64-Linux-r10.

Затем я замечаю, что NDK64-Linux-r10 имеет только платформу Android-L, поэтому я загружаю NDK32-Linux-R10 и объединяю его с NDK64-Linux-r10.

Это хорошо для меня.

Вы можете скачать NDK32-Linux-r10 здесь: https://developer.Android.com/tools/sdk/ndk/index.html

0
Marvin Wang