Отладка NDK и JNI под Android

в 10:22, , рубрики: android, c++, Ndk, Разработка под android

В данной статье речь пойдет об отладке кода под Android.
За последнее время произошло много подвижек в этом направление. Появился Android Studio, google добавило поддержку отладки нативного кода в eclipse.
Если необходимо отладить только Java, то Android Studio покроет ваши потребности полностью.
Если необходима отладка с++ или Java кода то ADT Bundle со встроенным Eclipse опять же поможет решить вашу проблему.
Если вкратце

  • Дать понять Eclipse что проект содержит нативную часть(Add native support)
  • Убедиться что в команде сборки стоит NDK_DEBUG=1
  • Нажать Debug as Android Native Application

на некоторых девайсах реобходимо еще и поставить в манифесте debuggable в true
Но если необходимо отлаживать jni код, где попеременно работают c++ и Java функции, то вам этот способ не подойдет, потому-что в зависимости от выбранного способа отладки(Android Native Application, Android Application) работает отладка либо с++ либо java кода.
О том как отлаживать смешанный код пойдет речь далее в статье.

Основой всей нашей системы будет NVIDIA Debug Manager for Android NDK Несмотря на заявление что он для отладки Tegra платформы, он великолепно способен отлаживать любую Android платформу.

Установить NVIDIA Debug Manager for Android NDK на ADT Bundle у меня не получилось, поэтому пришлось делать «свою сборку».

Для начала список того что нам понадобится.

  1. Eclipse(я рекомендую Kepler) скачать подойдет либо Standart либо IDE for C/C++ Developers
  2. Stand-alone Android SDK Tools Снизу страницы GET THE SDK FOR AN EXISTING IDE
  3. NDK Если вы не пишете пока под x64 Android то вам нужен Platform (32-bit target)
  4. Tegra Android Development Pack Чтобы его скачать необходима регистрация

Порядок установки
1. Устанавливаем Eclipse — просто распаковываем его куда душе угодно
2. Устанавливаем ADT — распаковываем куда угодно запускаем toolsandroid — добавляем необходимые платформы

Мне хватило такого набора

image

3. Устанавливаем NDK — распаковываем куда угодно
4. Устанавливаем ADT Plugin в Eclipse

Инструкция

  1. Запустите Eclipse выберите Help > Install New Software
  2. Нажмите Add в левом верхнем углу
  3. В дилоге Add Repository введите «ADT Plugin» в поле Name и https://dl-ssl.google.com/android/eclipse/ в поле Location
  4. В дилоге Available Software активируйте чекбокс напротив Developer Tools и нажмите Next
  5. В следующем окне снова нажмите Next
  6. Прочитайте и примите лицензионное соглашение
  7. Если во время установки вы получили предупреждение безопасности просто нажмите OK
  8. Перезапустите Eclipse
  9. В окне Welcome to Android Development выберите Use existing SDKs и укажите путь к установленному SDK
  10. Зайдите в Eclipse->Preference->Android->NDK и укажите путь до NDK

Оригинал

5. Запускаем инсталятор Tegra Android Development Pack — нам понадобится только NVIDIA Debug Manager for Android NDK
6. Находим в папке установки NVDebugMgrForAndroidNDK*.zip
7. Запускаем eclipse Help->Install New Software->Add->Archive показываем путь к установленному zip файлу, ставим галку на NVIDIA Debug Manager, соглашаемся со всем что нам будут предлагать
8. Последний этап в списке Debug as Android NDK Application (на некоторых девайсах может писать что не нашел GDB Убедитесь что в настройках Android NDK Application -> GDB Server Settings стоит APK bundled)

Скрин

image

Теперь точки остановки работают и в Java и в C++ коде
Если вдруг возникнут проблемы с NDK 10 попробуйте r9d
вот ссылки на некоторые версии
android-ndk-r9d-windows-x86_64.zip
android-ndk-r9d-darwin-x86_64.tar.bz2
android-ndk-r9d-linux-x86.tar.bz2

Автор: newnon

Источник

Поделиться