У нас есть проект Android NDK, который имеет три различные конфигурации сборки:Как настроить конфигурацию Eclipse для создания правильного, отлаживаемого приложения NDK?
- DEBUG - armeabi
- DEBUG - armeabi-v7a
- RELEASE - aremabi + armeabi-v7a
Зададим отдельные отладочные конфигурации aremabi и armeabi-v7 из-за известной ошибки в загрузчике Android, где, если указано более одного EABI, отладчик может запустить неправильную версию приложения EABI, и никакие нативные точки останова никогда не будут удалены (More details here, at the end of the document).
В прошлом мы отредактировали файл Application.mk
и указали желаемый EABI с помощью переменной APP_ABI
.
Мы хотели бы избежать этого редактирования руководства и воспользоваться конструкциями сборки Eclipse и выбрать правильную настройку EABI автоматически.
До сих пор, у нас есть рабочий раствор, добавляя условные к Application.mk
файлу
Вот как наш Application.mk
выглядит:
ifeq ($(BUILD_CONFIG),RELEASE)
APP_OPTIM := release
APP_ABI := armeabi armeabi-v7a
else ifeq ($(BUILD_CONFIG),ARMEABIV7A_DEBUG)
APP_OPTIM := debug
APP_ABI := armeabi-v7a
else ifeq ($(BUILD_CONFIG),ARMEABI_DEBUG)
APP_OPTIM := debug
APP_ABI := armeabi
endif
Кроме того, мы настроили команду сборки строки компилятора в Eclipse, так что соответствующая переменная BUILD_CONFIG
передается скрипту make.
Это очень хорошо работает для целей компиляции, но проблема начинается, когда мы пытаемся отладить приложение. Дело в том, что мы не знаем, как передать переменную BUILD_CONFIG
в сценарий ndk-gdb
.
Выполнение команды ndk-build DUMP_APP_ABI
всегда будет возвращать ARMEABI
(ожидается, поскольку мы явно не определяющий параметр BUILD_CONFIG
), и, насколько я понимаю, это значение, которое ndk-gdb
читает для того, чтобы решить, какую версию приложения будет запускается отладчиком.
Неужели кому-то удалось получить эту работу или иметь альтернативное решение, в котором мы можем получить компиляцию и отладку, правильно работающую с конфигурациями сборки Eclipse? Запуск команды, которая исправляет или переименовывает файл Application.mk
, является возможностью, но мы не знаем, как это сделать.
Большое спасибо Артему за ваш ответ. В самом деле, мы добавили правильные шаги для управления этой ошибкой во время выполнения, которую вы описываете. То, что мы ищем, на самом деле является решением для компиляции, которое позволяет нам выбирать тип сборки (отладка или выпуск) и спецификацию eabi (ARM или ARMV-v7) без необходимости вручную редактировать файлы .mk. Мы предпочли бы выбрать конфигурационную сборку и полностью автоматизировать работу, включая интегрированную отладку. Я попытаюсь проанализировать скрипт ndk-gdb, чтобы узнать, могу ли я изменить логику синтаксического анализа, которая определяет текущую настройку APP_ABI. Ура! –