Skrypt kompilacji ndk

Skrypt ndk-build tworzy projekty, które korzystają z systemu kompilacji NDK opartego na marce. Istnieje bardziej szczegółowa dokumentacja konfiguracji Android.mk i Application.mk, której używa ndk-build.

Wewnętrzne

Uruchomienie skryptu ndk-build jest równoważne z uruchomieniem tego polecenia:

$GNUMAKE -f <ndk>/build/core/build-local.mk
<parameters>

$GNUMAKE wskazuje wersję GNU Make 3.81 lub nowszą, a <ndk> – katalog instalacji NDK. Możesz użyć tych informacji do wywołania ndk-build z innych skryptów powłoki, a nawet do tworzenia własnych plików.

Wywołuj z wiersza poleceń

Skrypt ndk-build znajduje się w katalogu instalacyjnym NDK najwyższego poziomu. Aby uruchomić go z poziomu wiersza poleceń, wywołaj go w katalogu projektu aplikacji lub w nim. Na przykład:

$ cd <project>
$ <ndk>/ndk-build

W tym przykładzie <project> wskazuje katalog główny Twojego projektu, a <ndk> to katalog, w którym zainstalowano NDK.

Opcje

Wszystkie parametry do ndk-build są przekazywane bezpośrednio do polecenia GNU make, które uruchamia skrypty kompilacji NDK. Połącz ndk-build i opcje w formularzu ndk-build <option>. Na przykład:

$ ndk-build clean

Są tu dostępne następujące ustawienia:

clean
Usuń wszystkie wcześniej wygenerowane pliki binarne.

Uwaga: w systemie Mac OS X uruchomienie narzędzia ndk-build clean przy dużej liczbie wykonań równoległych może spowodować błąd kompilacji, który zawiera ten komunikat:

rm: fts_read: No such file or directory

Aby uniknąć tego problemu, nie używaj modyfikatora -jN ani nie wybieraj mniejszej wartości dla N, np. 2.

V=1
Uruchom kompilację i wyświetl polecenia kompilacji.
-B
Wymuś pełną kompilację.
-B V=1
Wymuszaj całkowitą przebudowę i wyświetlaj polecenia kompilacji.
NDK_LOG=1
Wyświetl wewnętrzne komunikaty dziennika NDK (używane do debugowania samego pakietu).
NDK_DEBUG=1
Wymuś kompilację możliwą do debugowania (patrz tabela 1).
NDK_DEBUG=0
Wymuś kompilację wersji (patrz tabela 1).
NDK_HOST_32BIT=1
Zawsze używaj pęku narzędzi w trybie 32-bitowym.
NDK_APPLICATION_MK=<file>
Kompilacja z użyciem określonego pliku Application.mk wskazywanego przez zmienną NDK_APPLICATION_MK.
-C <project>
Utwórz kod natywny dla ścieżki projektu w lokalizacji <project>. Przydatna, jeśli nie chcesz jej używać w terminalu: cd.

Kompilacje możliwe do debugowania a kompilacje do publikacji

Użyj opcji NDK_DEBUG, a w niektórych przypadkach – AndroidManifest.xml, aby określić debugowanie lub kompilację wersji, działanie związane z optymalizacją i uwzględnianie symboli. Tabela 1 zawiera wyniki każdej możliwej kombinacji ustawień.

Tabela 1. Wyniki kombinacji: NDK_DEBUG (wiersz poleceń) i android:debuggable (plik manifestu).

Ustawienie pliku manifestuNDK_DEBUG=0 NDK_DEBUG=1Nie określono parametru NDK_DEBUG
android:debuggable="true", Debugowanie; Symbole; Zoptymalizowane*1 Debugowanie; Symbole; Brak optymalizacji*2 (tak samo jak w przypadku NDK_DEBUG=1)
android:debuggable="false"Zwolnienie z dostępu; symbole; zoptymalizowane Wersja; symbole; niezoptymalizowanaZwolnij; Bez symboli; Zoptymalizowany*3
*1: przydatne do profilowania.
*2 – wartość domyślna w przypadku uruchamiania ndk-gdb.
*3: tryb domyślny.

Uwaga: „NDK_DEBUG=0” jest odpowiednikiem „APP_OPTIM=release” i kompiluje się z „-O2”. „NDK_DEBUG=1” to odpowiednik „APP_OPTIM=debug” w `Application.mk` i kompilowa się z `-O0`. Więcej informacji o `-APP_IM`.

Składnia wiersza poleceń to na przykład:

$ ndk-build NDK_DEBUG=1

Wymagania

Aby korzystać z ndk-build lub pakietu NDK, potrzebujesz programu GNU Make 4. Pakiet NDK zawiera własną kopię programu GNU Make i będzie jej używał, chyba że ustawisz zmienną środowiskową $GNUMAKE tak, aby wskazywała na niewłaściwą markę.

Bazy danych kompilacji JSON

W wersji NDK r18 i nowszych kompilacja ndk może wygenerować bazę danych kompilacji JSON.

Możesz użyć ndk-build compile_commands.json, aby wygenerować bazę danych bez tworzenia kodu, lub ndk-build GEN_COMPILE_COMMANDS_DB=true, jeśli chcesz skompilować i wygenerować bazę danych jako efekt uboczny.