Script ndk-build

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 clean avec 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 -jN ou à ne pas sélectionner une valeur plus faible pour N, 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.mk spécifique vers lequel la variable NDK_APPLICATION_MK renvoie.
-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 commande cd dans 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 manifesteNDK_DEBUG=0 NDK_DEBUG=1NDK_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
*1 : utile pour le profilage
*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.