Сценарий ndk-build
создает проекты, использующие систему сборки NDK на основе Make. Существует более конкретная документация по конфигурации Android.mk и Application.mk, используемой ndk-build
.
Внутренности
Запуск сценария ndk-build
эквивалентен выполнению следующей команды:
$GNUMAKE -f <ndk>/build/core/build-local.mk <parameters>
$GNUMAKE
указывает на GNU Make 3.81 или новее, а <ndk>
указывает на каталог установки NDK. Вы можете использовать эту информацию для вызова ndk-build из других сценариев оболочки или даже из ваших собственных файлов make.
Вызов из командной строки
Сценарий ndk-build
находится в каталоге установки NDK верхнего уровня. Чтобы запустить его из командной строки, вызовите его, находясь в каталоге проекта вашего приложения или под ним. Например:
$ cd <project> $ <ndk>/ndk-build
В этом примере <project>
указывает на корневой каталог вашего проекта, а <ndk>
— это каталог, в котором вы установили NDK.
Параметры
Все параметры ndk-build передаются непосредственно базовой команде GNU make
, которая запускает сценарии сборки NDK. Объедините ndk-build
и параметры в форме ndk-build <option>
. Например:
$ ndk-build clean
Доступны следующие варианты:
-
clean
- Удалите все ранее созданные двоичные файлы.
Примечание. В Mac OS X запуск
ndk-build clean
с большим количеством параллельных выполнений может привести к ошибке сборки, которая включает следующее сообщение:rm: fts_read: No such file or directory
Чтобы избежать этой проблемы, рассмотрите возможность не использовать модификатор
-j N
или выбрать меньшее значение дляN
, например 2. -
V=1
- Запустите сборку и отобразите команды сборки.
-
-B
- Принудительно выполнить полную перестройку.
-
-BV=1
- Принудительно выполнить полную перестройку и отобразить команды сборки.
-
NDK_LOG=1
- Отображать внутренние сообщения журнала NDK (используются для отладки самого NDK).
-
NDK_DEBUG=1
- Принудительно создайте отлаживаемую сборку (см. таблицу 1 ).
-
NDK_DEBUG=0
- Принудительно выполните сборку выпуска (см. таблицу 1 ).
-
NDK_HOST_32BIT=1
- Всегда используйте набор инструментов в 32-битном режиме.
-
NDK_APPLICATION_MK=<file>
- Сборка с использованием определенного файла
Application.mk
, на который указывает переменнаяNDK_APPLICATION_MK
. -
-C <project>
- Создайте собственный код для пути проекта, расположенного в
<project>
. Полезно, если вы не хотитеcd
к нему в терминале.
Отладочные и релизные сборки
Используйте параметр NDK_DEBUG
и, в некоторых случаях, AndroidManifest.xml
чтобы указать отладочную или выпускную сборку, поведение, связанное с оптимизацией, а также включение символов. В таблице 1 показаны результаты каждой возможной комбинации настроек.
Настройка манифеста | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG не указан |
---|---|---|---|
Android: отладка = "истина" | Отлаживать; Символы; Оптимизированный*1 | Отлаживать; Символы; Не оптимизировано*2 | (то же самое, что NDK_DEBUG=1) |
Android: отладка = "ложь" | Выпускать; Символы; Оптимизированный | Выпускать; Символы; Не оптимизировано | Выпускать; Никаких символов; Оптимизированный*3 |
*2: По умолчанию для запуска
ndk-gdb
.*3: Режим по умолчанию.
Примечание. `NDK_DEBUG=0` является эквивалентом `APP_OPTIM=release` и компилируется с `-O2`. `NDK_DEBUG=1` является эквивалентом `APP_OPTIM=debug` в `Application.mk` и компилируется с `-O0`. Дополнительные сведения о APP_OPTIM см. в Application.mk .
Синтаксис командной строки, например:
$ ndk-build NDK_DEBUG=1
Требования
Вам понадобится GNU Make 4, чтобы использовать ndk-build или NDK в целом. NDK включает в себя собственную копию GNU Make и будет использовать ее, если только вы не установили переменную среды $GNUMAKE
, указывающую на неподходящую версию make.
Базы данных компиляции JSON
В NDK r18 и более поздних версиях ndk-build может генерировать базу данных компиляции JSON .
Вы можете использовать ndk-build compile_commands.json
для создания базы данных без построения кода или ndk-build GEN_COMPILE_COMMANDS_DB=true
если вы хотите создать и сгенерировать базу данных в качестве побочного эффекта.