"Неизвестное приложение ABI:" пока "отлаживается как собственное приложение",
У меня возникла такая проблема:
[2013-11-18 14:38:50 - HelloJni] Unknown Application ABI:
[2013-11-18 14:38:50 - HelloJni]
[2013-11-18 14:38:50 - HelloJni] Unable to detect application ABI's
Эта проблема возникает в каждом проекте, который я пытаюсь отлаживать как "родной".
Я видел этот, этот и этот темы, но эти решения не принесли никакого эффекта в моем случае.
На другом компьютере или на виртуальной машине тот же проект работает с одинаковыми настройками.
манифеста
...
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<application android:label="@string/app_name"
android:debuggable="true">
...
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.cpp
include $(BUILD_SHARED_LIBRARY)
Параметры Verison в Project также установлены на api-14.
Я также загрузил новую версию eclipse, sdk, ndk. Я очистил все системные переменные и элементы PATH.
Моя машина работает под win7x64.
PS. Проблема возникает только в том случае, если я пытаюсь отлаживать, когда я ее строю и запускаю - она отлично работает.
Edit1 это мой контур ndk-build DUMP_APP_ABI
c:\Users\Usr\workspace\HelloJni>D:\ndk\ndk-build.cmd DUMP_APP_ABI
armeabi
c:\Users\Usr\workspace\HelloJni>
Edit2 Важное уведомление. I'v попытался запустить debug as native
на разных машинах со следующими шагами git clone
→ import to ide → Debug as native. Все машины имеют почти ту же конфигурацию (Win7 распространен для всех). Эта проблема была только на моем компьютере.
Я попробовал разные IDE (eclipse + cdt, adt), очистил path
, проверил окончания строки.
Finnaly я решил разработать собственную часть кода под Linux. Это было мое решение. Кроме того, мне больше не нужно было cygwin перекрещивать некоторые библиотеки.
Ответы
Ответ 1
В Windows особенно это может быть связано с тем, что один из файлов (project.properties, Application.mk, Android.mk или AndroidManfest.xml) имеет неправильные окончания строк (CRLF). Вы запустите ndk-build DUMP_APP_ABI
и убедитесь, что вывод чист.
Для этой цели необходимо отключить использование $(info …)
или $(__ndk_info)
и т.д.
Ответ 2
Когда eclipse печатает "Неизвестное приложение ABI"
Логика обнаружения ABI размещена в com.android.ide.eclipse.ndk
плагин com.android.ide.eclipse.ndk.internal.NdkHelper
. Фактически, он смотрит на вывод команды
make --no-print-dir -f $NDK_ROOT/build/core/build-local.mk -C $PROJECT_ROOT DUMP_APP_ABI
И если в выводе нет действительного ABI, вы увидите сообщение (или сообщения), например:
[$DATE $TIME - $PROJECT] Unknown Application ABI:
[$DATE $TIME - $PROJECT] $ANY
[$DATE $TIME - $PROJECT] Unable to detect application ABI's
Как устранить эту проблему
Прежде всего запустите команду вручную
make --no-print-dir -f $NDK_ROOT/build/core/build-local.mk -C $PROJECT_ROOT DUMP_APP_ABI
Если вывод содержит ошибку, исправьте это раньше. Если эта команда работает правильно, она должна создавать ABI с пространственным разделением, например:
x86 armeabi
В моем случае у меня отсутствует переменная среды для GStreamer
. Поэтому, чтобы исправить эту я указал переменную GSTREAMER_SDK_ROOT
в файле Android.mk
Ответ 3
Я разрешил "Неизвестное приложение ABI", выполнив 3 вещи:
-
Заменены
APP_ABI: = все
по
ABI: = armeabi
в Application.mk
-
Добавлено
APP_PLATFORM: = android-11
к Application.mk
-
Запущенный эмулятор перед вызовом Debug As | Основное приложение для Android.
Обычно Eclipse показывает "Android Device Chooser", если я вызываю Debug As и никакое устройство не подключено. Затем я могу запустить эмулятор. Но в плохом случае этого не произошло. Мне пришлось вызывать Windows | Диспетчер виртуальных устройств Android
и убедитесь, что у меня настроен и запущен действительный эмулятор.
Затем Debug As работал нормально, показал "Android Device Chooser" и выполнил на выбранном устройстве
(либо эмулятора, либо реального). Эта проблема не была воспроизводимой: после того, как Eclipse начала отладку на эмуляторе, она еще не показала "Unknown Application ABI" даже после того, как я закрыл эмулятор. Также обратите внимание, что я подключил реальное устройство. Возможно, что связь с реальным устройством каким-то образом сломалась, и это вызвало ошибку.
Ответ 4
Проверьте файл Android.mk. Проблема может возникнуть, если вы печатаете некоторую информацию об отладке из Android.mk, как это.
$(info YOU_MESSAGE)
Ответ 5
Я столкнулся с той же проблемой: "Неизвестное приложение ABI:". И попробовал все возможные решения, даже хочу отформатировать мои окна. Наконец, я считаю, что TortoiseGit вызывает эту проблему. После удаления TortoiseGit "debug as native" работает очень хорошо.
Ответ 6
У меня тоже возникла эта проблема, и я потратил несколько часов, чтобы решить эту проблему в моей среде. После нескольких советов, собранных в Интернете, я пробовал последний вариант, который действительно работал, и это:
Eclipse или NDK (возможно) вмешиваются в двоичные файлы git. Проверьте, находится ли git в переменной окружения Path и удаляет ее оттуда (Компьютеp > Свойствa > Дополнительные системные параметры > Переменные среды)
Я считаю, что это решение может помочь некоторым людям.