Lo script ndk-build

Lo script ndk-build crea progetti che utilizzano la build basata su marca dell'NDK di un sistema operativo completo. È disponibile una documentazione più specifica per Android.mk e Configurazione Application.mk utilizzata di ndk-build.

Interni

L'esecuzione dello script ndk-build equivale a eseguire il seguente comando:

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

$GNUMAKE punta a GNU Make 3.81 o versioni successive e <ndk> punta alla directory di installazione di NDK. Puoi utilizzare queste informazioni per richiamare ndk-build da altri script shell o persino dal tuo e creare file.

Richiama dalla riga di comando

Lo script ndk-build si trova nella directory di installazione di NDK di primo livello. Per eseguirlo dalla riga di comando, richiamarlo mentre si trova nella directory del progetto dell'applicazione o sotto. Ad esempio:

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

In questo esempio, <project> punta al tuo alla directory radice del progetto, mentre <ndk> è la directory hai installato l'NDK.

Opzioni

Tutti i parametri per ndk-build vengono passati direttamente alla GNU sottostante make che esegue gli script di build NDK. Combina ndk-build e opzioni nel formato ndk-build <option>. Ad esempio:

$ ndk-build clean

Sono disponibili le seguenti opzioni:

clean
Rimuovi eventuali file binari generati in precedenza.

Nota: su Mac OS X con ndk-build clean con un un numero elevato di esecuzioni parallele può causare un errore di generazione che include il seguente messaggio:

rm: fts_read: No such file or directory

Per evitare questo problema, ti consigliamo di non utilizzare -jN o selezionando un valore più basso per N, ad esempio 2.

V=1
Avvia build e visualizza i comandi build.
-B
Forza una ricompilazione completa.
-B V=1
Forza una ricompilazione 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
Forzare una build di release (vedi tabella 1).
NDK_HOST_32BIT=1
Utilizza sempre la toolchain in modalità a 32 bit.
NDK_APPLICATION_MK=<file>
Build, utilizzando un file Application.mk specifico a cui punta il NDK_APPLICATION_MK.
-C <project>
Crea il codice nativo per il percorso del progetto in <project>. Utile se non vuoi cd nel tuo terminale.

Build di cui è possibile eseguire il debug e di release

Utilizza l'opzione NDK_DEBUG e, in alcuni casi, AndroidManifest.xml per specificare la build di debug o release, comportamento correlato all'ottimizzazione e inclusione di simboli. La tabella 1 mostra i risultati di ogni possibile combinazione di impostazioni.

Tabella 1. Risultati di NDK_DEBUG (riga di comando) e Combinazioni android:debuggable (manifest).

Impostazione manifestNDK_DEBUG=0 NDK_DEBUG=1NDK_DEBUG non specificato
android:debuggable="true" Debug; Simboli Ottimizzata*1 Debug; Simboli Non ottimizzato*2 (uguale a NDK_DEBUG=1)
android:debuggable="false"Rilascia; Simboli Ottimizzato Rilascia; Simboli Non ottimizzatoRilascia; Nessun simbolo; Ottimizzata*3
*1: utile per la profilazione.
*2: impostazione predefinita per l'esecuzione di ndk-gdb.
*3: Modalità predefinita.

Nota: "NDK_DEBUG=0" è l'equivalente di "APP_OPTIM=release", e si compila 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", vedi Application.mk.

Ad esempio, la sintassi della riga di comando è:

$ ndk-build NDK_DEBUG=1

Requisiti

Ti serve GNU Make 4 per usare ndk-build o NDK in generale. L'NDK include i suoi proprio copia di GNU Make e la userai a meno che tu non abbia impostato $GNUMAKE di ambiente per puntare a una marca non adatta.

Database di compilazione JSON

In NDK r18 e versioni successive, ndk-build può generare Database di compilazione JSON.

Puoi utilizzare ndk-build compile_commands.json per generare il database senza creare il codice o ndk-build GEN_COMPILE_COMMANDS_DB=true se vuoi creare e generare il database come effetto collaterale.