Das Skript "ndk-build"

Das Skript ndk-build erstellt Projekte, die den Make-basierten Build des NDK verwenden. System. Eine genauere Dokumentation Android.mk und Verwendete Application.mk-Konfiguration von ndk-build

Interna

Die Ausführung des Skripts ndk-build entspricht der Ausführung des folgenden Befehls:

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

$GNUMAKE verweist auf GNU Make 3.81 oder höher und <ndk> verweist auf Ihr NDK-Installationsverzeichnis. Sie können um ndk-build aus anderen Shell-Skripten oder sogar aus Ihrem eigenen Dateien zu erstellen.

Über die Befehlszeile aufrufen

Das Skript ndk-build befindet sich im NDK-Installationsverzeichnis der obersten Ebene. So führen Sie sie aus: aus der Befehlszeile aus und rufen Sie sie auf, während sie sich im oder im Verzeichnis Ihres Anwendungsprojekts befinden. Beispiel:

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

In diesem Beispiel verweist <project> auf Ihren Stammverzeichnis des Projekts und <ndk> ist das Verzeichnis, Sie haben das NDK installiert.

Optionen

Alle Parameter für „ndk-build“ werden direkt an die zugrunde liegende GNU-make übergeben. zum Ausführen der NDK-Build-Skripte verwenden. ndk-build und im Format ndk-build <option>. Beispiel:

$ ndk-build clean

Folgende Optionen sind verfügbar:

clean
Entfernen Sie alle zuvor generierten Binärprogramme.

Hinweis: Wenn Sie unter Mac OS X ndk-build clean mit einem kann eine hohe Anzahl paralleler Ausführungen zu einem Build-Fehler führen, der enthält die folgende Nachricht:

rm: fts_read: No such file or directory

Sie können dieses Problem vermeiden, indem Sie -jN nicht verwenden oder einen kleineren Wert für N auswählen, z. B. 2.

V=1
Build-Befehle starten und Build-Befehle anzeigen
-B
Erzwingen Sie eine vollständige Neuerstellung.
-B V=1
Erzwingen Sie eine vollständige Neuerstellung und zeigen Sie Build-Befehle an.
NDK_LOG=1
Interne NDK-Logmeldungen anzeigen, die zum Debuggen des NDK selbst verwendet werden
NDK_DEBUG=1
Erzwingen Sie einen Debug-fähigen Build (siehe Tabelle 1).
NDK_DEBUG=0
Erzwingen Sie einen Release-Build (siehe Tabelle 1).
NDK_HOST_32BIT=1
Verwenden Sie die Toolchain immer im 32-Bit-Modus.
NDK_APPLICATION_MK=<file>
Erstellen Sie einen Build mit einer bestimmten Application.mk-Datei, auf die das NDK_APPLICATION_MK.
-C <project>
Erstellen Sie den nativen Code für den Projektpfad unter <project>. Das ist hilfreich, wenn Sie cd in Ihrem Terminal.

Debug-fähige Builds und Release-Builds im Vergleich

Verwenden Sie die Option NDK_DEBUG und in bestimmten Fällen AndroidManifest.xml, um Debugging- oder Release-Build anzugeben, optimierungsbezogenes Verhalten und die Verwendung von Symbolen. Tabelle 1 zeigt die der einzelnen möglichen Einstellungskombinationen.

Tabelle 1 Ergebnisse von NDK_DEBUG (Befehlszeile) und android:debuggable (Manifest)-Kombinationen.

ManifesteinstellungNDK_DEBUG=0 NDK_DEBUG=1NDK_DEBUG nicht angegeben
android:debuggable="true" Fehlerbehebung: Symbole Optimiert*1 Fehlerbehebung: Symbole Nicht optimiert*2 (entspricht NDK_DEBUG=1)
android:debuggable="false" Veröffentlichung; Symbole Optimiert Veröffentlichung; Symbole Nicht optimiertVeröffentlichung; Keine Symbole; Optimiert*3
*1: Nützlich für die Profilerstellung.
*2: Standard für die Ausführung von ndk-gdb.
*3: Standardmodus.

Hinweis: `NDK_DEBUG=0` entspricht "APP_OPTIM=release" und wird mit "-O2" kompiliert. `NDK_DEBUG=1` entspricht "APP_OPTIM=debug" in "Application.mk" und mit "-O0" kompilieren. Weitere Informationen zu APP_OPTIM finden Sie unter Application.mk

Die Syntax in der Befehlszeile lautet zum Beispiel:

$ ndk-build NDK_DEBUG=1

Voraussetzungen

Sie benötigen GNU Make 4, um ndk-build oder das NDK im Allgemeinen zu verwenden. Das NDK enthält seine eine eigene Kopie von GNU Make und wird diese verwenden, es sei denn, Sie haben die $GNUMAKE auf eine ungeeignete Marke verweist.

JSON-Kompilierungsdatenbanken

In NDK r18 und höher kann „ndk-build“ ein JSON-Kompilierungsdatenbank

Sie können entweder ndk-build compile_commands.json verwenden, um die Datenbank zu generieren ohne Code erstellen zu müssen, oder ndk-build GEN_COMPILE_COMMANDS_DB=true, wenn Sie die Datenbank als Nebeneffekt erstellen und generieren wollen.