2013-02-25 5 views
8

Versuch NDK-GDB und immer diese Fehlermeldung auszuführen:NDK-GDB Fehler: Gerät nicht die Anwendung des targetted CPU unterstützt 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:

Die 18. Zeile in der jni/Android.mk ist ein Import-Modul Aufruf .

Was bedeutet das und wie kann man Abhilfe schaffen?

Die App ist gemäß der Dokumentation von ndk testbar. Ich benutze Mac. Ich kann die App erstellen und ausführen, so sollte Build-Skript in Ordnung sein.


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

Können Sie Ihre Android.mk und Application.mk so aufstellen, dass eine erfahrene Hand sehen kann, was falsch gelaufen ist? Eine Möglichkeit ist, dass die Bibliothek in einem Verzeichnis für den ABI sein muss, zB: lib/armeabi –

+0

Das Build-Skript ist zwar in Ordnung, aber irgendwie sieht das ndk-gdb nicht die ABIs, für die der Build erstellt. Es analysiert Ihre Android.mk und findet die ABIs nicht. –

+0

@hack_on, siehe die aktualisierte Frage. – Kimi

Antwort

9

hatte ich das gleiche Problem. Ich bin mir ziemlich sicher, dass es sich um einen Fehler im Skript core/build-local.mk handelt. Zumindest die Fehlermeldung ist nicht sinnvoll.

Ich reparierte dies zu tun:

export NDK_MODULE_PATH=path_to_look_for_modules 

Wo path_to_look_for_modules die Mutter Verzeichnis des Moduls im Android.mk erklärt werden sollte. Das heißt, wenn Sie /myproject/mylibs/otherlib Export haben den Weg /myproject/mylibs

Wenn Sie mehrere Pfade haben, wie üblich:

export NDK_MODULE_PATH=path1:path2:path3 
1

Wenn Sie eine Android-App bauen und einige NDK-Code haben Sie dieses Problem können möglicherweise durch lösen Hinzufügen/Ändern Sie Ihre Application.mk (normalerweise im jni-Verzeichnis) mit der folgenden Zeile:

# 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 

Ich meine die APP_ABI Linie. Dies gibt die Zielprozessoren an, für die der ndk-Code kompiliert werden soll. Ich gehe von der Fehlermeldung aus, dass Sie auf einem Gerät testen, das einen anderen CPU-Typ hat als die, für die Sie die App erstellt haben.

Nützliche Informationen über third party libraries

Mögliches Problem mit makefile or environment

+0

Warum sollte ich x86 und Mips brauchen? Ich habe APP_ABI: = armeabi armeabi-v7a, es kompiliert nicht, wenn ich x86 und Mips hinzufüge ... – Kimi

+0

Solange das ist, was Ihr Gerät braucht. Es sieht so aus, als würde es sagen, dass Ihre App "Android NDK:" unterstützt, was bedeuten kann, dass Sie eine falsche Befehlszeile haben oder eine Datei erstellen. –

+0

Bitte lesen Sie die aktualisierte Frage. – Kimi

0

Export NDK_PROJECT_PATH = [Pfad]

wo [Pfad] ist das Elternteil " jni "Verzeichnis, das wiederum Ihren NDK-Code enthält.

Sie könnten dieses Problem haben, wenn sich Ihr NDK-Code (jni-Verzeichnis) von Ihrem Android-Java-Code getrennt befindet.

0

Eine gängige Lösung für dieses Problem ist, diese Zeile in Ihre Application.mk aufzunehmen.

APP_ABI := armeabi-v7a 

Ersetzen armeabi-V7A durch die entsprechende API gemäß der Linie Device supports. Dadurch wird sichergestellt, dass Ihre Anwendung für die richtige Plattform erstellt wurde und ndk-gdb sie finden kann.