Questo documento illustra il file di build Application.mk
utilizzato da ndk-build
.
Ti consigliamo di leggere la pagina Concetti prima di questo uno.
Panoramica
Il Application.mk
specifica le impostazioni a livello di progetto per ndk-build. Per impostazione predefinita,
si trova all'indirizzo jni/Application.mk
, nella directory del progetto dell'applicazione.
Variabili
APP_ABI
Per impostazione predefinita, il sistema di build NDK genera codice per tutte le ABI non deprecate. Tu
puoi utilizzare l'impostazione APP_ABI
per generare codice per ABI specifiche. La tabella 1 mostra
le impostazioni di APP_ABI
per i diversi set di istruzioni.
Tabella 1. Impostazioni di APP_ABI
per diversi set di istruzioni.
Set di istruzioni | Valore |
---|---|
ARMv7 a 32 bit | APP_ABI := armeabi-v7a |
ARMv8 a 64 bit (AArch64) | APP_ABI := arm64-v8a |
x86 | APP_ABI := x86 |
x86-64 | APP_ABI := x86_64 |
Tutte le ABI supportate (impostazione predefinita) | APP_ABI := all |
Puoi anche specificare più valori posizionandoli nella stessa riga, delimitati per spazi. Ad esempio:
APP_ABI := armeabi-v7a arm64-v8a x86
Per l'elenco di tutte le ABI supportate e i dettagli sul loro utilizzo e limitazioni, fai riferimento all'articolo sulle ABI Android.
APP_ASFLAGS
Flag da passare all'assemblatore per ogni file di origine dell'assemblaggio (.s
e
.S
file) nel progetto.
APP_ASMFLAGS
Flag da passare a YASM per tutti i file di origine YASM (.asm
, x86/x86_64
).
SCRIPT_ED_CREAZIONE_APP
Per impostazione predefinita, ndk-build presuppone che il file Android.mk si trovi nella posizione
jni/Android.mk
rispetto alla radice del progetto.
Per caricare un file Android.mk da una posizione diversa, imposta APP_BUILD_SCRIPT
al percorso assoluto del file Android.mk.
APP_CFLAGS
Flag da passare per tutte le compilazioni C/C++ nel progetto.
Vedi anche: APP_CONLYFLAGS e APP_CPPFLAGS.
APP_LINGUA_TIDY
Impostalo su true per abilitare clang-tidy per tutti i moduli del progetto. Disattivata da predefinito.
APP_CLING_TIDY_FLAGS
Contrassegni da passare per tutte le esecuzioni ordinate nel progetto.
APP_CONLYFLAGS
Flag da passare per tutte le compilazioni C nel progetto. Queste segnalazioni non saranno utilizzata per il codice C++.
Vedi anche: APP_CFLAGS, APP_CPPFLAGS.
CPPFLAGS
Flag da passare per tutte le compilazioni C++ nel progetto. Queste segnalazioni non saranno utilizzata per il codice C.
Vedi anche: APP_CFLAGS e APP_CONLYFLAGS.
APP_CXXFLAGS
Identico a APP_CPPFLAGS
, ma verrà visualizzato dopo APP_CPPFLAGS
nella compilazione
. Ad esempio:
APP_CPPFLAGS := -DFOO
APP_CXXFLAGS := -DBAR
La configurazione precedente genererà un comando di compilazione simile a clang++
-DFOO -DBAR
anziché a clang++ -DBAR -DFOO
.
DEBUG APP
Impostalo su true per creare un'applicazione di cui è possibile eseguire il debug.
APP_LDFLAGS
Flag da passare durante il collegamento degli eseguibili e delle librerie condivise.
MANIFESTAZIONE_APP
Percorso assoluto di un file AndroidManifest.xml.
Per impostazione predefinita, verrà usato $(APP_PROJECT_PATH)/AndroidManifest.xml)
esiste già.
MODULI_APP
Un elenco esplicito di moduli da creare. Gli elementi di questo elenco sono i nomi
così come vengono visualizzati in LOCAL_MODULE
all'interno del file Android.mk.
Per impostazione predefinita, ndk-build creerà tutte le librerie condivise, gli eseguibili e i relativi
delle dipendenze. Le librerie statiche verranno create solo se vengono utilizzate
progetto, il progetto contiene solo librerie statiche o, se sono denominate
APP_MODULES
.
OTTIM_APP
Definisci questa variabile facoltativa come release
o debug
. Rilascia file binari
per impostazione predefinita.
La modalità di rilascio consente ottimizzazioni e potrebbe produrre file binari non utilizzabili con un debugger. La modalità di debug disattiva le ottimizzazioni affinché i debugger possano essere in uso.
Tieni presente che puoi eseguire il debug di file binari di release o di debug. Rilasciare file binari, ma fornire meno informazioni durante il debug. Ad esempio, le variabili possono ottimizzare l'inventario, impedendo l'ispezione. Inoltre, riordinando il codice può aumentare è difficile analizzare il codice; le analisi dello stack potrebbero non essere affidabili.
Dichiarazione di android:debuggable
nel file manifest della tua applicazione <application>
farà sì che questa variabile sia impostata sul valore predefinito debug
anziché su release
.
Sostituisci questo valore predefinito impostando APP_OPTIM
su release
.
PIATTAFORMA_APP
APP_PLATFORM
dichiara il livello API Android rispetto a cui è basata questa applicazione
e corrisponde al valore minSdkVersion
dell'applicazione.
Se non specificato, ndk-build sceglierà come target il livello API minimo supportato dalla NDK Il livello API minimo supportato dall'NDK più recente sarà sempre sufficientemente basso per supportare quasi tutti i dispositivi attivi.
Ad esempio, il valore android-16
specifica che la libreria utilizza API che
non sono disponibili precedenti ad Android 4.1 (livello API 16) e non possono essere utilizzate sui dispositivi
che esegue una versione precedente della piattaforma. Per un elenco completo dei nomi delle piattaforme
immagini di sistema Android corrispondenti, consulta la sezione Annunci nativi NDK Android
per le API.
Quando utilizzi Gradle e externalNativeBuild
, questo parametro non deve essere impostato
strato Add. Imposta invece la proprietà minSdkVersion
nel campo defaultConfig
o
productFlavors
blocchi di
file build.gradle
a livello di modulo. Questo
assicura che la raccolta sia utilizzata solo dalle app installate su dispositivi su cui è in esecuzione un
di Android adeguato.
Tieni presente che l'NDK non contiene librerie per ogni livello API di Android. Le versioni che non includevano nuove API native vengono omesse per risparmiare spazio nella NDK ndk-build usa, in ordine decrescente di preferenza:
- La versione della piattaforma corrispondente a
APP_PLATFORM
. - Il successivo livello API disponibile inferiore a
APP_PLATFORM
. Ad esempio,android-19
verrà utilizzato quandoAPP_PLATFORM
èandroid-20
, poiché non c'erano nuovi le API native in Android-20. - Il livello API minimo supportato dall'NDK.
PERCORSO_APP_PROGETTO
Il percorso assoluto della directory principale del progetto.
APP_SHORT_Comandi
L'equivalente a livello di progetto di LOCAL_SHORT_COMMANDS
. Per ulteriori informazioni, vedi
la documentazione di LOCAL_SHORT_COMMANDS
in Android.mk.
APP_STL
La libreria standard C++ da utilizzare per questa applicazione.
Per impostazione predefinita viene utilizzato l'STL system
. Altre opzioni sono c++_shared
,
c++_static
e none
. Vedi Runtime C++ di NDK e
Funzionalità.
MODALITÀ_STRIP_APP
L'argomento da passare a strip
per i moduli in questa applicazione. Valori predefiniti
a --strip-unneeded
. Per evitare di rimuovere tutti i file binari nel modulo, imposta su
none
. Per altre modalità strip, consulta la sezione Strip
documentazione.
APP_THIN_ARCHIVE
Imposta il valore su true per utilizzare gli archivi thin per tutte le librerie statiche del progetto. Per
ulteriori informazioni, consulta la documentazione per LOCAL_THIN_ARCHIVE
in
Android.mk.
APP_WRAP_SH
Percorso del file wrap.sh da includere nell'applicazione.
Per ogni ABI esiste una variante di questa variabile, così come una variante generica ABI:
APP_WRAP_SH
APP_WRAP_SH_armeabi-v7a
APP_WRAP_SH_arm64-v8a
APP_WRAP_SH_x86
APP_WRAP_SH_x86_64