android-ndk Tutoriel
Premiers pas avec Android-ndk
Recherche…
Remarques
Quel est le NDK Android?
Le kit de développement Android natif (NDK) est un outil complémentaire au SDK Android qui permet d'intégrer des parties d'applications en C / C ++. Ceci est utile pour:
- Partage de composants applicatifs sur plusieurs plates-formes (Android, iOS, Linux, etc.)
- Amélioration des performances pour les portions critiques
- Réutilisation des bibliothèques C / C ++ existantes
Le NDK fournit des en-têtes et des bibliothèques qui permettent au développeur de créer des activités, de gérer les entrées utilisateur, d'utiliser des capteurs matériels, d'accéder aux ressources applicatives, etc., tout en programmant en C / C ++.
Versions
Démarrer avec Android NDK avec un exemple simple
En utilisant Android Studio 2.2 et versions ultérieures, vous pouvez utiliser le kit de développement natif (NDK) pour compiler du code C et C ++.
Vous pouvez utiliser NDK en téléchargeant manuellement NDK et en le construisant ou via CMake.
Ici, je vais donner un flux de processus pour installer manuellement NDK et un exemple de code,
Sur la base de votre système d'exploitation, vous pouvez télécharger NDK à partir de cet emplacement https://developer.android.com/ndk/downloads/index.html .
Après le téléchargement, indiquez le chemin dans la variable d'environnement système sous le nom de variable « NDK_PROJECT_PATH » et la valeur de la variable «emplacement du chemin stocké NDK».
Ensuite, pour intégrer NDK à Android Studio, après avoir créé un nouveau projet Android,
In gradle - les propriétés locales ajoutent l'emplacement du chemin sdk comme
sdk.dir=F\:\\gowtham\\Android\\sdket
android.useDeprecatedNdk = true
Ensuite, appuyez sur Build - Make Project (Ctrl + f9).
Votre projet sera construit avec succès et obtiendra BUILD SUCCESFUL dans le message gradle build, comme indiqué ci-dessous
Ensuite, dans Terminal, il contiendra initialement le chemin du projet
Il ajoute l' cd app/src/main
Le chemin s'étendra du chemin du projet au principal.
Ensuite, encore une fois Build - Make Project (Ctrl + f9).
Maintenant, vous trouverez le dossier app-build – intermediates – classes – debug , comme indiqué ci-dessous.
Maintenant, créez un nouveau fichier de classe Java sous une application / src / main / java. Ici, j'ai créé un fichier Java nommé NativeClass.
Ecrire une fonction d'appel simple avec le nom de la fonction et l'entrée pour la fonction, ici j'ai écrit la fonction comme exemple et lui ai donné deux entrées entières,
Encore une fois, construisez le projet (Ctrl + f9) ,
Lorsque vous construisez, vous trouverez le fichier de classe créé sous build comme ceci,
Then,in terminal
`-Javah -d jni –classpath ../../build/intermediates/classes/debug`application.com.ndkapplication.NativeClass
où, - d - pour le répertoire de sortie - jni -Générer le fichier d'en-tête de style JNI (par défaut) - classpath - pour lequel charger les classes
Maintenant, construisez le projet (Ctrl + f9), vous trouverez le dossier jni créé et un fichier d'en-tête sera créé avec le nom que vous avez spécifié dans le terminal, comme indiqué ci-dessous.
Copiez maintenant le fichier d'en-tête et enregistrez-le en tant que fichier .cpp ou .c du même nom que le fichier d'en-tête dans le dossier jni.
J'ai créé un fichier cpp comme indiqué ci-dessous
Delete everything before **JNIEXPORT line** in this file and **add header file name** alone.
Here I am for simple example just adding two numbers and returning value to android java.
Application_com_ndkapplication_NativeClass.cpp
#include <application_com_ndkapplication_NativeClass.h>
JNIEXPORT jint JNICALL Java_application_com_ndkapplication_NativeClass_example
(JNIEnv *, jclass , jint as , jint bs){
return (as + bs);
}
Et pour cet exemple, pas besoin d'ajouter de fonction dans son fichier d'en-tête.
Créer un nouveau fichier nommé Android.mk et Application.mk dans le dossier Jni
Le fichier Android.mk doit décrire vos sources au système de génération.
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := application_com_ndkapplication_NativeClass.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := exp-jni
include $(BUILD_SHARED_LIBRARY)
connaître le détail de ce fichier lire depuis ce lien https://developer.android.com/ndk/guides/android_mk.html
Application.mk qui décrit les modules natifs requis par votre application.
Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti –fexceptions
APP_ABI := armeabi-v7a armeabi arm64-v8a mips mips64 x86 x86_64
APP_PLATFORM := android-16
connaître le détail de ce fichier lire à partir de ce lien https://developer.android.com/ndk/guides/application_mk.html
Now build the project again **(Ctrl + f9)**, you will find the **armeabi-v7a, armeabi, arm64-v8a ,mips, mips64, x86 and x86_64** folder created inside jniLibs.
Ensuite, dans l'activité principale, passez l'entrée et obtenez une sortie pour le fichier de classe natif.
int a = 5, b = 5, res ;
res = NativeClass.example(((int) a),((int) b));
TextView textView = (TextView) this.findViewById(R.id.tv);
textView.setText(new Integer(res).toString());
Ici, j'ai donné deux entiers par a et b et obtenu une sortie de la variable res.
Et la sortie obtenue est affichée à l'écran en passant à TextView.
Et n'oubliez pas d'ajouter la bibliothèque que vous avez spécifiée dans le fichier Android.mk comme LOCAL_MODULE comme ceci,
static {
System.loadLibrary("exp-jni");
}
Enfin, construisez à nouveau le projet (Ctrl + f9), vous trouverez les fichiers .so créés sous chaque dossier armeabi-v7a, armeabi, arm64-v8a, mips, mips64, x86 et x86_64.
Alors maintenant, lancez l'application, vous obtiendrez une sortie pour cet exemple comme 10.
Ceci est un programme de base pour les débutants NDK, la bibliothèque OpenCV peut être importée ici et vous pouvez également faire des applications de traitement d'image.










