У меня проблема с получением встроенной поддержки отладки для моего проекта Eclipse под Windows для Android.
К сожалению, Google не помог после более чем 1 дня исследования.
Я в значительной степени новичок в Eclipse, поэтому решение может быть простым, потому что я думаю, что я делаю нестандартные вещи.
Мой Android-проект уже работает и работает нормально на моих устройствах (Acer Iconia A500 Android 3.2.1, HTC Incredible S Android 4.0.4 и т. Д.).
Я создал проект с помощью мастера плагинов ADT, а затем добавил встроенную поддержку, используя пункт контекстного меню проекта, добавленный ADT.
Затем я добавил java-файлы, которые у меня уже были (ранее я использовал для компиляции с CMake и автономной цепочкой инструментов Android, хотя я никогда не пытался удаленно отлаживать таким образом). Я создал новый пакет для этого «com.x.y», куда я их и поместил (я не хочу раскрывать настоящее имя пакета, так как проект будет частью коммерческого продукта).
Затем я добавил свои источники, перетащив их в папку jni. Источники не находятся внутри папки jni, но связаны с местоположением «../../» под проектом (это часть кроссплатформенного приложения, поэтому я могу повторно использовать исходные файлы в разных цепочках инструментов).
Я также связываю 4 статические библиотеки, которые будут поставляться с продуктом, настраивая Android.mk следующим образом:
LOCAL_PATH := $(call my-dir)
MY_PATH := $(LOCAL_PATH)
LOCAL_PATH := $(MY_SDK)/lib/Android/armeabi-v7aD
include $(CLEAR_VARS)
LOCAL_MODULE := A
LOCAL_SRC_FILES := libA.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := B
LOCAL_SRC_FILES := libB.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := C
LOCAL_SRC_FILES := libC.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := D
LOCAL_SRC_FILES := libD.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(my_SDK)/include/
LOCAL_PATH := $(MY_PATH)/../../..
LOCAL_CFLAGS += -Wno-format -DANDROID -fno-rtti -fno-exceptions #And many other flags If they are important I will post them later, too
LOCAL_CPPFLAGS += -fno-rtti -fno-exceptions
LOCAL_MODULE := MY_PROJECT
LOCAL_SRC_FILES := Android/Main.cpp # Some other sources..
LOCAL_LDLIBS := -lstdc++ -lEGL -lGLESv2 -llog -Wl,--allow-multiple-definition -Wl,--no-undefined
LOCAL_STATIC_LIBRARIES := A B C D
include $(BUILD_SHARED_LIBRARY)
У меня также есть Application.mk:
APP_ABI := armeabi-v7a
APP_PLATFORM := android-9
APP_STL := stlport_static
APP_CFLAGS += -fno-rtti -fno-exceptions
Затем я добавил в разделе «Настройки отладки» новое «родное приложение Android», запускающее действие по умолчанию и использующее
Отладчик «$ {NdkGdb}»
Командный файл «$ {NdkProject} \ libs \ $ {NdkCompatAbi} \ gdb.setup»
Общие библиотеки (добавляются автоматически) $ {NdkProject} / obj / local / $ NdkCompatAbi} /
Остальное также добавляется автоматически, и я думаю, что должно работать таким образом.
Мне кажется странным то, что я получаю вывод консоли
[2013-03-08 10:50:36 — Невозможно запустить cygpath. Cygwin находится на пути?] Java.io.IOException: не удается запустить программу «cygpath»: ошибка CreateProcess = 2, система не может найти указанный файлНо я могу нормально построить проект таким образом, и позже я не получаю никаких предупреждений, пытаясь подключить GDB (я использую Msys, у меня также установлен Cygwin, поэтому я не знаю, почему Eclipse жалуется здесь).
Когда я запускаю приложение, оно запускается на устройстве, а затем я получаю следующий вывод на консоль ([Android Native Application] gdb):
(no debugging symbols found)
Error while mapping shared library sections:
/system/bin/linker: No such file or directory.
Error while mapping shared library sections:
libstdc++.so: No such file or directory.
... And alot more of that type
(no debugging symbols found)
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
warning: shared library handler failed to enable breakpoint
No line 219 in file "jni/../../../MySourceFile.cpp".
Я определенно собираю с NDK_DEBUG = 1, мои статические .a библиотеки строятся с -g
В AndroidManifest.xml есть запись android: debuggable = «true».
Когда я запускаю «sh / ndk-gdb —verbose» в каталоге проекта eclipse (используя Msys), я получаю следующий вывод:
Путь установки Android NDK: / c / SDK / android-ndk-r7
Использование команды adb по умолчанию: /c/SDK/android-sdks/platform-tools/adb.exe
Обнаружена версия ADB: Android Debug Bridge версия 1.0.31
Используя последнюю команду ADB: ‘/c/SDK/android-sdks/platform-tools/adb.exe’
Используя автоматически обнаруженный путь проекта:.
Найденное имя пакета: com.x.y
ABI, на которые нацелено приложение: armeabi-v7a
Уровень API устройства: 13
Устройство CPU ABIs: armeabi-v7a armeabi
Совместимое устройство ABI: armeabi-v7a
Найден флаг отладки: true
ОШИБКА: приложение, не подлежащее отладке, установлено на целевом устройстве.
Пожалуйста, переустановите отлаживаемую версию!
Я действительно хочу иметь встроенную поддержку отладки для этого проекта. Поэтому я очень ценю любую помощь.
Это правда, что я иметь использовать cygwin? Я не получаю никакого разумного сообщения об ошибке при попытке присоединить отладчик.
Задача ещё не решена.
Других решений пока нет …