2013-02-25 41 views
8

试图运行NDK-GDB和收到此错误:NDK-gdb的错误:设备不支持应用程序的针对性CPU ABIS

Android NDK installation path: /Library/AndroidSDK/ndk/
Using specific adb command: /Library/AndroidSDK/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.31
Using ADB flags:
Using auto-detected project path: .
Found package name: com.dev.project
jni/Android.mk:18: * Android NDK: Aborting. . Stop.
ABIs targetted by application: Android NDK:
Device API Level: 17
Device CPU ABIs: armeabi-v7a armeabi
ERROR: The device does not support the application's targetted CPU ABIs!
Device supports: armeabi-v7a armeabi
Package supports: Android NDK:

在JNI/Android.mk行18是一个导入模块调用。

这是什么意思,如何补救?

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


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 
+0

你可以把你的Android.mk和Application.mk放到一个有经验的人手中,看看出了什么问题吗?一种可能性是该库需要位于ABI的目录中,例如:lib/armeabi – 2013-02-25 21:03:28

+0

构建脚本可能没问题,但不知何故,ndk-gdb没有看到构建的ABI。它正在解析你的Android.mk而没有找到ABI。 – 2013-02-26 13:53:33

+0

@hack_on,请参阅最新的问题。 – Kimi 2013-02-26 14:16:54

回答

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

如果您正在构建一个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类型不同的cpu类型的设备。

有用的信息有关third party libraries

可能的问题与makefile or environment

+0

为什么我需要x86和mips?我有APP_ABI:= armeabi armeabi-v7a,如果我添加x86和mips,则不会编译... – Kimi 2013-02-25 13:43:44

+0

只要这是您的设备所需的。它在我看来好像它说你的应用程序支持“Android NDK:”这可​​能意味着你有一个糟糕的命令行或生成文件。 – 2013-02-25 13:50:31

+0

请参阅更新的问题。 – Kimi 2013-02-25 14:02:49

0

出口NDK_PROJECT_PATH = [路径]

,其中[path]是“父jni“目录,该目录又包含您的NDK代码。

如果您的NDK代码(jni目录)与您的Android java代码分开定位,那么您可能会遇到此问题。

0

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

APP_ABI := armeabi-v7a 

通过适当的API作为每Device supports线替换armeabi-V7A。这将确保您的应用程序是为正确的平台而构建的,并且ndk-gdb可以找到它。

相关问题