web-dev-qa-db-fra.com

Android NDK: Abandonner l'arrêt?

Je travaille sur ffmpeg pour Android. J'ai compilé avec succès ffmpeg-2.0.1 après avoir créé le fichier Android.mk dans les sources/ffmpeg-2.0.1/Android/NDK de mon NDK en tant que

      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)

Après cela, le projet Android et dans le projet Android, le fichier Android.mk est le suivant:

  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)

mais montrant un problème

 *** 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

Mon NDK est Android-ndk-r9c, le système est Ubuntu-13.04, s'il vous plaît, quiconque me guide.

merci d'avance.

13
Sandeep Tiwari

Voir le Android.mk structure firstly.

Besoin de changer le fichier Android.mk comme ceci:

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: J'obtiens aussi le problème Android NDK : Aborting lorsque vous rassemblez des données comme ceci:  

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)

Ce problème se produit lorsque LOCAL_MODULE name est dupliqué.

Le résultat vous aidera:

C'est toujours le cas quand vous avez besoin de appelez la fonction C++ dans un fichier C++ à partir d'un fichier Java .

7
Huy Tower

J'ai rencontré un problème similaire lorsque j'ai essayé de générer un exemple HelloComputeNDK avec NDK64-Linux-r10.

Ensuite, je remarque que NDK64-Linux-r10 n’a que la plate-forme Android-L. Je télécharge donc NDK32-Linux-R10 et le fusionne avec NDK64-Linux-r10.

Ça va bien pour moi.

Vous pouvez télécharger NDK32-Linux-r10 ici: https://developer.Android.com/tools/sdk/ndk/index.html

0
Marvin Wang