Android NDK avec Android Studio

Fabien Brissonneau
Fabien Brissonneau Ajouter un commentaire 3e lecture en min
La prise en charge du NDK par l’environnement reste un problème. Android Studio proposera un support, simplifiant la mise en oeuvre des appels natifs sous Android. Le paramétrage de Android Studio Pour utiliser le NDK, le mieux est de tenter d’utiliser Android Studio dans sa version 2. C’est une version préliminaire, et donc sujette à pas mal d’instabilité, mais elle prétend intégrer l’usage du NDK. La première chose à faire sera donc de charger cet outil. Cette version 2 utilise des paramétrages différents de celle qui est officielle aujourd’hui, la version 1.5.1. Vous pourrez donc installer la seconde version indépendamment de la première. Pas de conflit en vue. Une fois installée, il faut changer quelques infos dans les scripts Gradle. La version de plugin doit changer : utilisez la version « expérimentale » Dans le fichier de projet :
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha9'
}
Dans le fichier du module :
apply plugin: "com.android.model.application"

model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"

defaultConfig.with {
applicationId = "android.ei6.biz.fr_269_04_00ter"
minSdkVersion.apiLevel = 23
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
}
}
android.ndk {
moduleName="coucou"
}
Remarquez les changements de syntaxe (DSL) dans ce dernier. Une information importante est le nom du module ndk. Les appels en Java Avant d’appeler vos fonctions C en Java, il faudra charger le module natif lors du chargement d’une classe de l’application. Par exemple, dans l’activité principale de l’application :
static {
System.loadLibrary("coucou");
}
L’appel sera déclaré comme une fonction native du Java :
public native String getTexte();
Cette fonction doit simplement être appelée en Java comme n’importe quelle autre méthode. La fonction écrite en C Enfin, grâce à la prise en charge par Android Studio 2.0 des fonctions natives du Java, un répertoire sera automatiquement créé qui contiendra un fichier du nom du module déclaré. Dans ce fichier, vous viendrez écrire votre fonction. Si tout se passe bien, le prototype de la fonction sera généré. Si ce n’est pas le cas, pas de panique … 😉
#include 

jstring
Java_android_ei6_biz_fr_1269_104_100ter_MainActivity_getTexte( JNIEnv* env,
jobject thiz )
{
return (*env)->NewStringUTF(env, "coucou");
}
Les appels des fonctions C suppose une correspondance entre les types de données Java et ceux du C. JNI définit les possibilités d’échanges entre Java et le C. Conclusion Grâce à Android Studio 2.0, nous aurons une prise en charge des appels natifs sous Android. En Java, il suffit alors de déclarer les fonctions que nous souhaitons appeler, et l’IDE se charge quasiment du reste. Bien entendu, tout cela reste expérimental … mais risque de durer.
Partager cet article
Par Fabien Brissonneau Expert en Conception et Développement sur Java et DotNet avec 15 Ans d'Expérience
Fabien, expert en développement, conception et architecture sur les plateformes Java et DotNet, offre ses services depuis plus de 15 ans. Fort de son expérience en C++, il excelle également dans le domaine de la mobilité, ayant créé avec succès des outils pour Android et Windows Phone, certains étant même publiés. En plus de son travail, il consacre une part significative de son temps à la formation, partageant ainsi son expertise avec les acteurs clés de l'industrie. Pour tout ce qui concerne la conception orientée objet sur les plateformes Java et DotNet, Fabien est votre expert de confiance.
Laisser un commentaire