Ошибка ndk-gdb: устройство не поддерживает целевые ABI ЦП приложения

Пытаюсь запустить 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
ABI процессора устройства: armeabi-v7a armeabi
ОШИБКА: устройство не поддерживает целевые ABI процессора приложения!
Устройство поддерживает: armeabi-v7a armeabi
Пакет поддерживает: Android NDK:

18-я строка в jni / Android.mk - это вызов модуля импорта.

Что это значит и как это исправить?

Приложение можно отладить согласно документации 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

person Kimi    schedule 25.02.2013    source источник
comment
Можете ли вы разместить свои Android.mk и Application.mk, чтобы опытный специалист мог увидеть, что пошло не так? Одна из возможностей заключается в том, что библиотека должна находиться в каталоге для ABI, например: lib / armeabi   -  person hack_on    schedule 26.02.2013
comment
Сценарий сборки может работать нормально, но каким-то образом ndk-gdb не видит ABI, для которых строится сборка. Он анализирует ваш Android.mk и не находит ABI.   -  person hack_on    schedule 26.02.2013
comment
@hack_on, пожалуйста, посмотрите обновленный вопрос.   -  person Kimi    schedule 26.02.2013
comment
$ (call import-module, otherlib) импортирует другой проект, это может мешать, даже если он строится. Можете ли вы изменить порядок, чтобы вместо этого включить .so из другого проекта, и, по крайней мере, посмотреть, является ли это проблемой. Возможно, он что-то не экспортирует.   -  person hack_on    schedule 27.02.2013


Ответы (4)


У меня такая же проблема. Я совершенно уверен, что это ошибка в 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
person Paglian    schedule 06.06.2013

Если вы создаете приложение для 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. Из сообщения об ошибке я предполагаю, что вы тестируете устройство, у которого тип процессора отличается от того, для которого вы создали приложение.

Полезная информация о сторонних библиотеках

Возможная проблема с make-файлом или средой

person hack_on    schedule 25.02.2013
comment
Зачем мне x86 и mips? У меня APP_ABI: = armeabi armeabi-v7a, он не компилируется, если я добавляю x86 и mips ... - person Kimi; 25.02.2013
comment
Если это то, что нужно вашему устройству. Мне кажется, что оно говорит, что ваше приложение поддерживает Android NDK: это может означать, что у вас плохая командная строка или файл make. - person hack_on; 25.02.2013

экспорт NDK_PROJECT_PATH = [Путь]

где [Путь] является родительским элементом каталога «jni», который, в свою очередь, содержит ваш код NDK.

Вы «можете» столкнуться с этой проблемой, если ваш код NDK (каталог jni) расположен отдельно от кода Java для Android.

person Venky    schedule 10.08.2013

Распространенное решение этой проблемы - включить эту строку в ваш Application.mk.

APP_ABI := armeabi-v7a

Замените armeabi-v7a на соответствующий API в соответствии со строкой Device supports. Это гарантирует, что ваше приложение создано для правильной платформы и ndk-gdb сможет его найти.

person david.pfx    schedule 25.05.2014