In diesem Dokument wird die von ndk-build
verwendete Build-Datei Application.mk
erläutert.
Wir empfehlen Ihnen, die Seite Konzepte vorher zu lesen. eins.
Übersicht
Mit Application.mk
werden projektweite Einstellungen für „ndk-build“ festgelegt. Standardmäßig
Sie befindet sich unter jni/Application.mk
im Projektverzeichnis Ihrer Anwendung.
Variablen
APP_ABI
Standardmäßig generiert das NDK-Build-System Code für alle nicht verworfenen ABIs. Ich
kann mit der Einstellung APP_ABI
Code für bestimmte ABIs generieren. Tabelle 1 enthält
APP_ABI
-Einstellungen für verschiedene Anweisungssätze.
Tabelle 1 APP_ABI
-Einstellungen für verschiedene Anweisungssätze.
Anweisungssatz | Wert |
---|---|
ARMv7 (32 Bit) | APP_ABI := armeabi-v7a |
64-Bit-ARMv8 (AArch64) | APP_ABI := arm64-v8a |
x86 | APP_ABI := x86 |
x86–64 | APP_ABI := x86_64 |
Alle unterstützten ABIs (Standardeinstellung) | APP_ABI := all |
Sie können auch mehrere Werte angeben, indem Sie sie in dieselbe Zeile einfügen. nach Leerzeichen. Beispiel:
APP_ABI := armeabi-v7a arm64-v8a x86
Für die Liste aller unterstützten ABIs und Details zu ihrer Verwendung und siehe Android-ABIs.
APP_ASFLAGS
Flags, die für jede Assembly-Quelldatei an den Assembler übergeben werden (.s
und
.S
-Dateien) im Projekt.
APP_ASMFLAGS
Flags, die an YASM übergeben werden, wenn für alle YASM-Quelldateien (.asm
, x86/x86_64)
)
APP_Build_Script
Standardmäßig geht ndk-build davon aus, dass sich die Datei Android.mk im
jni/Android.mk
relativ zum Projektstamm.
Legen Sie APP_BUILD_SCRIPT
fest, um eine Android.mk-Datei von einem anderen Speicherort zu laden.
zum absoluten Pfad
der Android.mk-Datei hinzu.
APP_UNTERLAGEN
Flags, die für alle C/C++-Kompilierungen im Projekt übergeben werden.
Siehe auch: APP_CONLYFLAGS, APP_CPPFLAGS.
APP_CLANG_FERTIG
Setzen Sie den Wert auf „true“, um Clang-tidy für alle Module im Projekt zu aktivieren. Deaktiviert von Standardeinstellung.
APP_CLANG_TIDY_FLAGGEN
Flags, die für alle Ausführungen im Projekt „clang-tidy“ übergeben werden sollen.
APP_CONLYFLAGS
Flags, die für alle C-Kompilierungen im Projekt übergeben werden. Diese Flags werden nicht für C++ Code verwendet wird.
Siehe auch: APP_CFLAGS, APP_CPPFLAGS.
APP_CPPFLAGS
Flags, die für alle C++-Kompilierungen im Projekt übergeben werden. Diese Flags werden nicht für C-Code verwendet wird.
Siehe auch: APP_CFLAGS, APP_CONLYFLAGS.
APP_CXXFLAGS
Identisch mit APP_CPPFLAGS
, wird aber in der Kompilierung nach APP_CPPFLAGS
angezeigt
. Beispiel:
APP_CPPFLAGS := -DFOO
APP_CXXFLAGS := -DBAR
Die obige Konfiguration führt zu einem Kompilierungsbefehl, der clang++
-DFOO -DBAR
und nicht clang++ -DBAR -DFOO
ähnelt.
APP_FEHLERBEHEBUNG
Setzen Sie diesen Wert auf „true“, um eine debugfähige Anwendung zu erstellen.
APP_LDFLAGS
Flags, die beim Verknüpfen von ausführbaren Dateien und gemeinsam genutzten Bibliotheken übergeben werden.
APP_MANIFEST (APP_MANIFEST)
Absoluter Pfad zu einer AndroidManifest.xml-Datei.
Standardmäßig wird $(APP_PROJECT_PATH)/AndroidManifest.xml)
verwendet, wenn
existiert.
APP_MODULE
Eine explizite Liste der zu erstellenden Module. Die Elemente dieser Liste sind die Namen
der Module, wie sie in LOCAL_MODULE
in der Datei Android.mk angezeigt werden.
Standardmäßig erstellt „ndk-build“ alle gemeinsam genutzten Bibliotheken, ausführbaren Dateien und
Abhängigkeiten. Statische Bibliotheken werden nur erstellt, wenn sie vom
enthält, enthält das Projekt nur statische Bibliotheken oder sind in
APP_MODULES
APP_OPTIMIERUNG
Definieren Sie diese optionale Variable als release
oder debug
. Binärdateien veröffentlichen
werden standardmäßig erstellt.
Der Release-Modus ermöglicht Optimierungen und generiert möglicherweise Binärprogramme, die nicht nutzbar sind. mit einem Debugger. Im Debug-Modus werden Optimierungen deaktiviert, sodass Debugger verwendet.
Beachten Sie, dass Sie sowohl Release- als auch Binärdateien debuggen können. Release-Binärprogramme, aber bei der Fehlerbehebung geben Sie weniger Informationen an. Variablen können beispielsweise und so eine Prüfung verhindern. Außerdem kann eine Neuanordnung von Code die schwierig, den Code zu durchlaufen. sind Stacktraces möglicherweise nicht zuverlässig.
android:debuggable
in der <application>
deines App-Manifests deklarieren
Tag verursacht, wird diese Variable standardmäßig auf debug
anstelle von release
gesetzt.
Sie können diesen Standardwert überschreiben, indem Sie APP_OPTIM
auf release
setzen.
APP_PLATTFORM
APP_PLATFORM
gibt das Android-API-Level an, für das diese App erstellt wird
und entspricht dem minSdkVersion
der Anwendung.
Wenn nicht angegeben, bezieht sich ndk-build auf das vom NDK Das vom neuesten NDK unterstützte minimale API-Level ist immer niedrig genug fast alle aktiven Geräte unterstützt.
Beispielsweise gibt der Wert android-16
an, dass Ihre Bibliothek APIs verwendet, die
sind nur unter Android 4.1 (API-Level 16) verfügbar und können nicht auf Geräten verwendet werden.
eine niedrigere Plattformversion ausgeführt wird. Eine vollständige Liste der Plattformnamen und
entsprechenden Android-System-Images, siehe Android NDK native
APIs
Wenn Sie Gradle und externalNativeBuild
verwenden, sollte dieser Parameter nicht festgelegt werden
. Lege stattdessen das Attribut minSdkVersion
in der Datei defaultConfig
oder
productFlavors
Häuserblocks von
build.gradle
-Datei auf Modulebene. Dieses
wird Ihre Bibliothek nur von Apps verwendet, die auf Geräten mit einer
geeigneter Android-Version.
Beachten Sie, dass das NDK nicht für jedes API-Level von Android Bibliotheken enthält. Versionen, die keine neuen nativen APIs enthielten, werden ausgelassen, um Platz im NDK ndk-build verwendet in absteigender Reihenfolge nach Präferenz:
- Die Plattformversion, die
APP_PLATFORM
entspricht. - Das nächste verfügbare API-Level unter
APP_PLATFORM
. Beispiel:android-19
wird verwendet, wennAPP_PLATFORM
den Wertandroid-20
hat, da es keine neuen native APIs in Android-20. - Das vom NDK unterstützte minimale API-Level.
APP_PROJECT_PATH
Der absolute Pfad des Stammverzeichnisses des Projekts.
APP_SHORT_commands
Das projektweite Äquivalent von LOCAL_SHORT_COMMANDS
. Weitere Informationen finden Sie unter
der Dokumentation zu LOCAL_SHORT_COMMANDS
in Android.mk
APP_STL
Die für diese Anwendung zu verwendende C++-Standardbibliothek.
Standardmäßig wird system
STL verwendet. Weitere Optionen sind c++_shared
,
c++_static
und none
. Weitere Informationen finden Sie unter NDK C++ Laufzeiten und
Funktionen:
APP_STRIP_MODE
Das Argument, das für Module in dieser Anwendung an strip
übergeben werden soll. Standardeinstellungen
an --strip-unneeded
. Um zu vermeiden, dass alle Binärdateien im Modul entfernt werden, setzen Sie auf
none
Informationen zu anderen Streifenmodi siehe Streifen
Dokumentation.
DURCHFÜHRTE_APP_ARCHIV
Setzen Sie den Wert auf „true“, um Thin Archive für alle statischen Bibliotheken im Projekt zu verwenden. Für
Weitere Informationen finden Sie in der Dokumentation zu LOCAL_THIN_ARCHIVE
unter
Android.mk
APP_WRAP_SH
Pfad zur Datei wrap.sh, die in dieser Anwendung enthalten sein soll.
Für jedes ABI gibt es eine Variante dieser Variable sowie eine ABI-generische Variante:
APP_WRAP_SH
APP_WRAP_SH_armeabi-v7a
APP_WRAP_SH_arm64-v8a
APP_WRAP_SH_x86
APP_WRAP_SH_x86_64