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.