2013-02-25 10 views
8

Próba uruchomienia NDK-gdb i otrzymuję ten błąd:NDK-gdb błąd: Urządzenie nie obsługuje kierowane CPU aplikacji 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:

18. linia w JNI/Android.mk jest wywołanie moduł import .

Co to znaczy i jak temu zaradzić?

Aplikacja jest debugowana zgodnie z dokumentacją ndk. Używam Maca. Mogę zbudować i uruchomić aplikację, więc skrypt budowy powinien być w porządku.


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

Czy możesz umieścić swój Android.mk i Application.mk, aby doświadczona ręka mogła zobaczyć, co poszło nie tak? Jedną z możliwości jest to, że biblioteka musi znajdować się w katalogu ABI, np .: lib/armeabi –

+0

Skrypt budujący może być w porządku, ale jakoś ndk-gdb nie widzi ABI, które buduje budowanie. Parsuje twój Android.mk i nie znajduje ABI. –

+0

@hack_on, zapoznaj się z zaktualizowanym pytaniem. – Kimi

Odpowiedz

9

miałem ten sam problem. Jestem całkiem pewien, że jest to błąd w skrypcie core/build-local.mk. Przynajmniej komunikat o błędzie nie ma znaczenia.

naprawiłem w ten sposób:

export NDK_MODULE_PATH=path_to_look_for_modules 

Gdzie path_to_look_for_modules powinna być rodzic katalog modułu zadeklarowanego w Android.mk. Oznacza to, że jeśli masz /myproject/mylibs/otherlib eksport ścieżkę /myproject/mylibs

Jeśli masz kilka ścieżek, jak zwykle:

export NDK_MODULE_PATH=path1:path2:path3 
1

Jeśli budujesz aplikację na Androida i mieć trochę kodu NDK może być w stanie rozwiązać ten problem poprzez dodanie/modyfikowanie pliku Application.mk (zwykle w katalogu jni) za pomocą następującej linii:

# 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 

Mam na myśli linię APP_ABI. Określa procesory docelowe do kompilacji kodu ndk. Zakładam, że z komunikatu o błędzie, który testujesz na urządzeniu, które ma inny typ procesora niż te, dla których stworzyłeś aplikację.

Przydatne informacje o third party libraries

Możliwy problem z makefile or environment

+0

Dlaczego potrzebuję x86 i mips? Mam APP_ABI: = armeabi armeabi-v7a, nie kompiluje się, jeśli dodam x86 i mipsy ... – Kimi

+0

Tak długo, jak to będzie potrzebne. Wydaje mi się, że mówi ona, że ​​Twoja aplikacja obsługuje "Android NDK:", co może oznaczać, że masz złą linię poleceń lub tworzysz plik. –

+0

Proszę zobaczyć zaktualizowane pytanie. – Kimi

0

eksport NDK_PROJECT_PATH = [ścieżka]

gdzie [ścieżka] jest rodzicem " jni ", który z kolei zawiera twój kod NDK.

"Możesz" zmierzyć się z tym problemem, jeśli twój kod NDK (katalog JNI) znajduje się oddzielnie od kodu Java na Androida.

0

Typowym rozwiązaniem tego problemu jest uwzględnienie tej linii w pliku Application.mk.

APP_ABI := armeabi-v7a 

wymienić armeabi-v7a przez właściwy API według linii Device supports. Zapewni to, że twoja aplikacja zostanie zbudowana dla właściwej platformy i że może ją znaleźć ndk-gdb.

Powiązane problemy