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 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.mk
spécifique vers lequel la variableNDK_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 commandecd
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.
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.