Le script ndk-build compile les projets qui utilisent le système de compilation Make du NDK. Il existe des documents plus spécifiques sur les configurations Android.mk et Application.mk utilisées par ndk-build.
Caractéristiques
L'exécution du script ndk-build équivaut à l'exécution de la commande suivante :
$GNUMAKE -f <ndk>/build/core/build-local.mk <parameters>
$GNUMAKE renvoie vers GNU Make 3.81 ou une version ultérieure, et <ndk> renvoie vers votre répertoire d'installation NDK. Vous pouvez utiliser ces informations pour appeler ndk-build à partir d'autres scripts shell, ou même créer vos propres fichiers.
Appeler le script à partir de la ligne de commande
Le script ndk-build se trouve dans le répertoire d'installation de niveau supérieur du NDK. Pour l'exécuter à partir de la ligne de commande, appelez-le lorsque vous êtes dans le répertoire du projet de l'application ou sous celui-ci.
Exemple : 
$ cd <project> $ <ndk>/ndk-build
Dans cet exemple, <project> renvoie vers le répertoire racine de votre projet, et <ndk> est le répertoire dans lequel vous avez installé le NDK.
Options
Tous les paramètres de ndk-build sont transmis directement à la commande GNU make sous-jacente qui exécute les scripts de compilation du NDK. Combinez ndk-build et les options au format ndk-build <option>. Exemple : 
$ ndk-build clean
Les options suivantes sont disponibles :
- 
    clean
- 
    Supprimez tous les binaires générés précédemment.
    Remarque : Sous Mac OS X, l'exécution de ndk-build cleanavec un grand nombre d'exécutions en parallèle peut entraîner une erreur de compilation qui inclut le message suivant :rm: fts_read: No such file or directory Pour éviter ce problème, veillez à ne pas utiliser le modificateur -jNou à ne pas sélectionner une valeur plus faible pourN, par exemple 2.
- 
    V=1
- Lancez les commandes de compilation et affichez-les.
- 
    -B
- Forcez la recompilation complète.
- 
    -B V=1
- Forcez la recompilation complète et affichez les commandes de compilation.
- 
    NDK_LOG=1
- Affichez les messages de journal du NDK internes (utilisés pour le débogage du NDK lui-même).
- 
    NDK_DEBUG=1
- Forcez la compilation débogable (voir le tableau 1).
- 
    NDK_DEBUG=0
- Forcez la compilation d'un build (voir le tableau 1).
- 
    NDK_HOST_32BIT=1
- Utilisez toujours la chaîne d'outils en mode 32 bits.
- 
    NDK_APPLICATION_MK=<file>
- 
    Compilez à l'aide d'un fichier Application.mkspécifique vers lequel la variableNDK_APPLICATION_MKrenvoie.
- 
    -C <project>
- 
    Créez le code natif pour le chemin d'accès au projet, situé dans <project>. Cette approche est utile si vous ne souhaitez pas utiliser la commandecddans votre terminal.
Builds débogables et builds de publication
Utilisez l'option NDK_DEBUG et, dans certains cas, AndroidManifest.xml pour spécifier le build de débogage ou de publication, le comportement lié à l'optimisation et l'inclusion de symboles. Le tableau 1 présente les résultats de chaque combinaison possible de paramètres.
Tableau 1. Résultats des combinaisons NDK_DEBUG (ligne de commande) et android:debuggable (fichier manifeste)
| Paramètre du fichier manifeste | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG non spécifié | 
|---|---|---|---|
| android:debuggable="true" | Débogage ; Symboles ; Optimisé*1 | Débogage ; Symboles ; Non optimisé*2 | (identique à NDK_DEBUG=1) | 
| android:debuggable="false" | Publication ; Symboles ; Optimisé | Publication ; Symboles ; Non optimisé | Publication ; Pas de symboles ; Optimisé*3 | 
*2 : valeur par défaut pour l'exécution de
ndk-gdb*3 : mode par défaut
Remarque : "NDK_DEBUG=0" équivaut à "APP_OPTIM=release" et se compile avec "-O2". "NDK_DEBUG=1" équivaut à "APP_OPTIM=debug" dans "Application.mk" et se compile avec "-O0". Pour en savoir plus sur "APP_OPTIM", consultez Application.mk
Voici un exemple de syntaxe sur la ligne de commande :
$ ndk-build NDK_DEBUG=1
Conditions requises
Vous avez besoin de GNU Make 4 pour utiliser ndk-build ou le NDK en général. Le NDK inclut sa propre copie de GNU Make et l'utilise, sauf si vous avez défini la variable d'environnement $GNUMAKE pour qu'elle renvoie vers une version inappropriée.
Bases de données de compilation JSON
Dans NDK r18 et les versions ultérieures, ndk-build peut générer une base de données de compilation JSON.
Vous pouvez utiliser ndk-build compile_commands.json pour générer la base de données sans compiler le code, ou ndk-build GEN_COMPILE_COMMANDS_DB=true si vous souhaitez compiler et générer la base de données en tant qu'effet secondaire.
