Android NDK:中止停止?

Posted

技术标签:

【中文标题】Android NDK:中止停止?【英文标题】:Android NDK: Aborting stop? 【发布时间】:2014-04-26 22:41:07 【问题描述】:

我正在为 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)

之后制作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,请大家指导一下。

提前致谢。

【问题讨论】:

你已经解决了这个问题吗? 对不起,我无法解决这个问题,你能帮帮我吗? 【参考方案1】:

请先查看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_MODULE名字重复时。

结果会帮助你:

它仍然是你需要call the C++ function in C++ file from Java file的时候。

【讨论】:

【参考方案2】:

当我尝试使用 NDK64-Linux-r10 构建 HelloComputeNDK 示例时遇到了类似的问题。

然后我注意到NDK64-Linux-r10只有Android-L平台,所以我下载了NDK32-Linux-R10,并与NDK64-Linux-r10合并。

对我来说很顺利。

你可以在这里下载 NDK32-Linux-r10: https://developer.android.com/tools/sdk/ndk/index.html

【讨论】:

以上是关于Android NDK:中止停止?的主要内容,如果未能解决你的问题,请参考以下文章

是时候放弃Eclipse,改用Android Studio了

Android NDK 开发Android NDK 下载 ( 下载指定历史版本 NDK | Android NDK r10e - 2015 年 5 月 )

android开发,怎么使用ndk编译成.so文件

如何改变ndk android

android ndk是啥

Android NDK开发简介 NDK和SDK以及JNI有啥关系