- PVSM.RU - https://www.pvsm.ru -

Отладка NDK и JNI под 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 [1] Несмотря на заявление что он для отладки Tegra платформы, он великолепно способен отлаживать любую Android платформу.

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

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

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

Порядок установки
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

Оригинал [6]

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 [7]
android-ndk-r9d-darwin-x86_64.tar.bz2 [8]
android-ndk-r9d-linux-x86.tar.bz2 [9]

Автор: newnon

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/android/70944

Ссылки в тексте:

[1] NVIDIA Debug Manager for Android NDK: https://developer.nvidia.com/nvidia-debug-manager-android-ndk

[2] скачать: http://www.eclipse.org/downloads/packages/release/Kepler/SR2

[3] Stand-alone Android SDK Tools: https://developer.android.com/sdk/index.html#download

[4] NDK: https://developer.android.com/tools/sdk/ndk/index.html#Downloads

[5] Tegra Android Development Pack: https://developer.nvidia.com/tegra-android-development-pack

[6] Оригинал: http://developer.android.com/sdk/installing/installing-adt.html

[7] android-ndk-r9d-windows-x86_64.zip: http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip

[8] android-ndk-r9d-darwin-x86_64.tar.bz2: http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2

[9] android-ndk-r9d-linux-x86.tar.bz2: http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86.tar.bz2

[10] Источник: http://habrahabr.ru/post/239221/