ndk-gdb错误:设备不支持应用程序的目标CPU ABI

时间:2013-02-25 12:41:09

标签: android android-ndk gdb ndk-gdb

尝试运行ndk-gdb并收到此错误:

  

Android NDK安装路径:/ Library / AndroidSDK / ndk /
  使用特定的adb命令:/ Library / AndroidSDK / platform-tools / adb
  发现ADB版本:Android Debug Bridge版本1.0.31
  使用ADB标志:
  使用自动检测的项目路径:。
  找到包名:com.dev.project
  jni / Android.mk:18: * Android NDK:正在中止。 。停止。
  应用程序所针对的ABI:Android NDK:
  设备API级别:17
  设备CPU ABIs:armeabi-v7a armeabi
  错误:设备不支持应用程序的目标CPU ABI!
         设备支持:armeabi-v7a armeabi
         套餐支持:Android NDK:

jni / Android.mk中的第18行是导入模块调用。

这是什么意思以及如何解决它?

根据ndk文档可以调试应用程序。我正在使用Mac。 我可以构建并运行App,因此构建脚本应该没问题。


Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := libgl2jni
LOCAL_CFLAGS    := -Werror -Wall -g
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../src $(LOCAL_PATH)/../../include $(LOCAL_PATH)/../../../boost

NDK_MODULE_PATH := $(LOCAL_PATH)/../../lib/ndk
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/*.cpp) $(wildcard $(LOCAL_PATH)/../../src/*/*.cpp))
LOCAL_LDLIBS    := -llog -lGLESv2

LOCAL_STATIC_LIBRARIES := freetype

include $(BUILD_SHARED_LIBRARY)

$(call import-module,otherlib) #commenting this line launches the ndk-gdb, but ndk-build fails

Application.mk

APP_STL := gnustl_static

#remove for release?
APP_ABI := armeabi armeabi-v7a 
APP_OPTIM := debug

4 个答案:

答案 0 :(得分:9)

我遇到了同样的问题。我很确定这是core/build-local.mk脚本中的错误。至少错误信息没有意义。

我修好了这个:

export NDK_MODULE_PATH=path_to_look_for_modules

其中path_to_look_for_modules应该是Android.mk中声明的模块的目录。也就是说,如果您/myproject/mylibs/otherlib导出路径/myproject/mylibs

如果你有多条路径,像往常一样:

export NDK_MODULE_PATH=path1:path2:path3

答案 1 :(得分:1)

如果您正在构建Android应用并拥有一些ndk代码,则可以通过添加/修改Application.mk(通常在jni目录中)使用以下行来解决此问题:

# The ARMv7 is significanly faster due to the use of the hardware FPU
APP_ABI := armeabi armeabi-v7a x86 mips
#APP_ABI := armeabi
APP_PLATFORM := android-10

我的意思是APP_ABI线。这是指定目标处理器来编译ndk代码。我假设您在错误消息中假设您正在使用与您为其构建应用程序的cpu类型不同的设备上进行测试。

有关third party libraries

的有用信息

makefile or environment

可能出现的问题

答案 2 :(得分:0)

导出NDK_PROJECT_PATH = [路径]

其中[Path]是“jni”目录的父级,后者又包含您的NDK代码。

如果您的NDK代码(jni目录)与您的Android Java代码分开,则“可能”会遇到此问题。

答案 3 :(得分:0)

此问题的常见解决方案是在Application.mk中包含此行。

APP_ABI := armeabi-v7a

根据Device supports行,使用适当的API替换armeabi-v7a。这将确保您的应用程序是为正确的平台构建的,ndk-gdb可以找到它。