Lo script ndk-build
crea progetti che utilizzano il sistema di build basato su make di NDK. È disponibile documentazione più specifica per la configurazione di Android.mk e Application.mk utilizzata da ndk-build
.
Interni
L'esecuzione dello script ndk-build
equivale all'esecuzione del seguente comando:
$GNUMAKE -f <ndk>/build/core/build-local.mk <parameters>
$GNUMAKE
rimanda a GNU Make 3.81 o versioni successive, mentre <ndk>
rimanda alla directory di installazione NDK. Puoi utilizzare queste informazioni per richiamare ndk-build da altri script della shell o persino per creare file personali.
Richiama dalla riga di comando
Lo script ndk-build
si trova nella directory di installazione NDK di primo livello. Per eseguirlo dalla riga di comando, richiamalo all'interno o nella directory del progetto dell'applicazione.
Ecco alcuni esempi:
$ cd <project> $ <ndk>/ndk-build
In questo esempio, <project>
rimanda alla directory principale del progetto, mentre <ndk>
è la directory in cui hai installato l'NDK.
Opzioni
Tutti i parametri di ndk-build vengono passati direttamente al comando make
GNU sottostante che esegue gli script di build NDK. Combina ndk-build
e
opzioni nel formato ndk-build <option>
. Ecco alcuni esempi:
$ ndk-build clean
Sono disponibili le seguenti opzioni:
-
clean
-
Rimuovi eventuali programmi binari generati in precedenza.
Nota: su Mac OS X, l'esecuzione di
ndk-build clean
con un numero elevato di esecuzioni parallele potrebbe causare un errore di build che include il seguente messaggio:rm: fts_read: No such file or directory
Per evitare questo problema, non utilizzare il modificatore
-jN
o selezionare un valore inferiore perN
, ad esempio 2. -
V=1
- Avvia build e visualizza i relativi comandi.
-
-B
- Forza il completamento di una nuova build.
-
-B V=1
- Forza una rigenerazione completa e visualizza i comandi di build.
-
NDK_LOG=1
- Visualizza i messaggi di log NDK interni (utilizzati per il debug dell'NDK stesso).
-
NDK_DEBUG=1
- Forza una build di cui è possibile eseguire il debug (vedi tabella 1).
-
NDK_DEBUG=0
- Forza la build di una release (vedi tabella 1).
-
NDK_HOST_32BIT=1
- Utilizza sempre la Toolchain in modalità a 32 bit.
-
NDK_APPLICATION_MK=<file>
-
Crea utilizzando un file
Application.mk
specifico a cui punta la variabileNDK_APPLICATION_MK
. -
-C <project>
-
Crea il codice nativo per il percorso del progetto che si trova in
<project>
. Utile se non vuoicd
nel tuo terminale.
Confronto tra build di debug e build di release
Utilizza l'opzione NDK_DEBUG
e, in alcuni casi, AndroidManifest.xml
per specificare la build di debug o della release, il comportamento relativo all'ottimizzazione e l'inclusione di simboli. La tabella 1 mostra i risultati di ogni possibile combinazione di impostazioni.
Impostazione manifest | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG non specificato |
---|---|---|---|
android:debuggable="true" | Debug; simboli; ottimizzato*1 | Debug; simboli; non ottimizzato*2 | (uguale a NDK_DEBUG=1) |
android:debuggable="false" | Release; simboli; ottimizzato | Release; simboli; non ottimizzata | Release; nessun simbolo; ottimizzato*3 |
*2: impostazione predefinita per l'esecuzione di
ndk-gdb
.*3: modalità predefinita.
Nota: "NDK_DEBUG=0" è l'equivalente di "APP_OPTIM=release" e viene compilato con "-O2". "NDK_DEBUG=1" è l'equivalente di "APP_OPTIM=debug" in "Application.mk" e viene compilato con "-O0". Per ulteriori informazioni su "APP_OPTIM.m", vedi
La sintassi nella riga di comando è, ad esempio:
$ ndk-build NDK_DEBUG=1
Requisiti
È necessario GNU Make 4 per utilizzare ndk-build o NDK in generale. L'NDK include la propria copia di GNU Make e la utilizzerà, a meno che tu non abbia impostato la variabile di ambiente $GNUMAKE
in modo che rimandi a una marca non appropriata.
Database di compilazione JSON
In NDK r18 e versioni successive, ndk-build può generare un database di compilazione JSON.
Puoi utilizzare ndk-build compile_commands.json
per generare il database
senza generare il codice oppure ndk-build GEN_COMPILE_COMMANDS_DB=true
se vuoi
creare e generare il database come effetto collaterale.