Le NDK (Native Developpement Kit) est un outil complémentaire du SDK qui permet de construire des portions critiques du code afin de mieux gérer les performances de votre application.
Il utilise le JNI (Java Native Interface) pour interfacer du code écrit en C/C++ avec du code écrit en Java, il fournit des entêtes natives et des bibliothèques qui vous permettent de travailler de plus en plus proches de la plateforme matériel ainsi de gérer le/les entres utilisateur, créer de activités…
Le C/C++ est un code compilé (contrairement au Java Interprété) il sera traduit par le compilateur en instructions machine qui seront directement exécutées par le processeur d’où l’intérêt du code native.
A bien noter que le NDK ne peut pas remplacer d’une manière complète le SDK.
Installer le NDK Sous Windows :
Avant d’installer le NDK il faut déjà télécharger les SDK depuis le site référence. Bien entendu, il faut choisir un environnement de développement (Eclipse dans notre cas) en lui ajoutant le plugin nécessaire pour développer des projets Android http://developer.android.com/sdk/eclipse-adt.html ou bien tout simplement vous pouvez voir notre WebCast ‘Créer et configurer l’environnement de développement sous Android’
Une fois que vous avez les outils de travail, vous commencez à télécharger le NDK depuis le site réference.
Décompressez le fichier téléchargé sous C:\, par exemple chez moi c’est sous C:\android-ndk.
Afin de compiler le code C/C++ que nous allons ajouter après dans notre projet Android, on aura besoin d’installer Cygwin. Rien n'est plus simple, il suffit de le télécharger depuis le site officiel.
En fait, Cygwin est tout simplement un ensemble de logiciels libres qui peuvent simuler un environnement Linux sous Windows.
Lors de l’installation il faut ajouter l’outil « make » manuellement voir le schéma ci dessous:
NB: Cette dernière étape a été supprimée complètement dans la version 4 et ses suites(alias NDK r4) c'est à dire on'apas besoin de lancer la commande build/hot-setp.sh pour faire une telle configuration ;).
Débuter avec NDK:
Passons maintenant à un peu de pratique, Tout d'abord, on va commencer par la création d'un projet Android, il aura comme détailles:
- Le nom du projet: HelloNDK.
- Le nom de l'application: HelloNDK.
- Le nom de pahage est: com.JuniorAndroid.TUNandroid.hellondk.
- Le nom de Main Activity: Main.
Maintenant, on ajoute 2 fichiers dans le répertoire jni Android.mk et native.c
Le fichier Android.mk est un scripte sert à decrire votre source pour le système de construction de l'NDK.Il
contient alors le code suivant:
La syntaxe du fichier est conçue pour vous permettre de regrouper vos sources en «modules».
- Une bibliothèque statique.
- Une bibliothèque partagée.
Seules les bibliothèques partagées sont installés ou copiés dans le package de votre application. Les bibliothèques statiques peuvent être utilisées pour générer des bibliothèques partagées.
Un fichier Android.mk doit commencer par la définition de la variable LOCAL_PATH,
- LOCAL_PATH : Il est utilisé pour localiser les fichiers source dans l'arborescence de votre projet.
- include $ (CLEAR_VARS) : La variable CLEAR_VARS est fournie par le système de construction, un spéciale GNU Makefile qui dégagera de nombreuses variables LOCAL_XXX pour vous (Par exemple LOCAL_MODULE, LOCAL_SRC_FILES,..), à l'exception de LOCAL_PATH.
- LOCAL_MODULE : Variable qui doit être définie afin d'identifier chaque module, que vous décrivez dans votre Android.mk.
- LOCAL_SRC_FILES : Variable qui contient une liste des fichiers sources C et / ou C + + qui seront construits et assemblés en des modules.
- include $ (BUILD_SHARED_LIBRARY): La BUILD_SHARED_LIBRARY est une variable fournie par le système de construction qui pointe vers un script GNU Makefile, ce dernier est chargé de recueillir tous les informations que vous avez défini dans les variables LOCAL_XXX depuis la dernière Include $ (CLEAR_VARS) et de déterminer ce qu'il faut construire, autrement dit, BUILD_STATIC_LIBRARY sert à générer une bibliothèque statique.
NB: Pour nommer une fonction, il faut se procéder comme suit :
Compilation:
La compilation est réalisée en se plaçant dans le répertoire principale de votre projet et en tapant la commande ndk-build, Si tout passe bien, vous aurez un résultat similaire à celui-ci: