web-dev-qa-db-fra.com

Installation et utilisation du NDK Android NDK dans Eclipse

J'exécute le Android SDK depuis un certain temps maintenant dans Eclipse (MAC OSX). J'ai téléchargé le NDK et installé les outils C/C++ dans Eclipse, mais quelqu'un pourrait-il me guider sur en utilisant le NDK? Par exemple, dois-je simplement créer un projet Android comme d'habitude et le construire avec le NDK à la place?

Cela pourrait vraiment faire avec un tutoriel décent si quelqu'un en connaît.

EDIT: OK donc j'ai le NDK installé maintenant (je pense) mais est-ce que quelqu'un a une idée de comment l'utiliser? Je suis allé aussi loin que cela (tiré de ici ):

Exécuter le terminal

cd ~/Android-ndk-1.5_r1

faire APP = bonjour-jni

Afin d'exécuter l'exemple d'application hello-jni, mais j'obtiens une erreur dans le terminal disant:

Android NDK: variable APP définie pour les applications inconnues: hellojni
Android NDK: vous souhaiterez peut-être utiliser l'une des options suivantes:
build/core/main.mk: 81: *** Android NDK: abandon. Arrêtez.

Des idées pourquoi?

45
ingh.am

Aussi simple que je puisse le décrire, la création d'une application Android à partir d'Eclipse qui utilise le NDK nécessite deux étapes.

Tout d'abord, à l'intérieur de votre terminal, vous devez exécuter le script de construction NDK sur votre projet. cd dans la racine de votre répertoire de projet, puis exécutez le script ndk-build dans ce répertoire.

Par exemple:

cd ~/workspace/hello-jni
./~/Android-ndk-1.5_r1/ndk-build

Après cela, vous devriez voir une sortie qui entraîne la création d'un fichier * .SO dans le répertoire obj de votre répertoire de projet.

Une fois que vous avez le fichier * .SO, la dernière étape pour créer une application avec le NDK Android via Eclipse est de le construire avec Eclipse comme vous le feriez pour n'importe quelle autre application, puis de la déployer pour le tester.

Si vous apportez des modifications au code C/C++, vous devrez répéter la première étape et régénérer votre fichier * .SO avant de créer et de déployer à nouveau votre application à partir d'Eclipse.

Je voudrais noter qu'en utilisant le Android NDK vos applications Android sont toujours basées sur Java. Elles communiquent simplement avec du code écrit en C/C++ via Java Native Interface .

Enfin, je ne connais aucun plugin Eclipse qui pourrait aider au développement de NDK. Tout ce que je sais sur le NDK, j'ai appris l'officiel documentation Android NDK . N'hésitez pas à commenter et à me faire savoir si je peux clarifier quelque chose dans ma réponse.

25
Rob S.

La prise en charge native du développement et du débogage est entrée dans l'environnement Eclipse à partir de la version ADT 20. http://tools.Android.com/recent/usingthendkplugin

  • Définissez le chemin vers NDK dans les préférences Eclipse -> Android -> NDK
  • Faites un clic droit sur votre projet et choisissez Android Tools -> Add Native Support

developer.Android.com indique que vous avez également besoin de Cygwin.

http://developer.Android.com/tools/sdk/ndk/index.html#Contents

Outils de développement requis

  • Pour toutes les plates-formes de développement, GNU Make 3.81 ou version ultérieure est requis. Les versions antérieures de GNU Make peuvent fonctionner mais n'ont pas été testées).
  • Une version récente de awk (soit GNU Awk ou Nawk) est également requise.
  • Pour Windows, Cygwin 1.7 ou supérieur est requis. Le NDK ne fonctionnera pas avec les installations Cygwin 1.5.
12
Hamid Fadishei

Le répertoire docs du NDK contient de très bonnes informations sur l'utilisation du NDK lui-même. Lisez la présentation, les documents Application.mk et Android.mk HTML. Vous voudrez rechercher le PDF Sun JNI sur Google, le télécharger et découvrir en quoi consiste JNI avant d'aller plus loin. En effet, la simple compilation d'un tas de code C/C++ dans des bibliothèques avec le NDK n'est qu'une partie du processus. Vous devez écrire du code natif Java qui appelle votre C/C++, et vous devez créer des fonctions d'encapsuleur en C/C++ qui adhèrent aux conventions JNI que le code natif Java peut invoquer. JNI existe depuis longtemps, il n'est en aucun cas Android spécifique. Donc, vous pouvez, pour en savoir plus, aller assez loin en suivant des didacticiels orientés vers JNI, en utilisant des outils de ligne de commande comme javah et javac, puis revenir à l'intégration avec le NDK après avoir connu les bases. (Pour un exemple de l'apparence de ces cales C, jetez un œil à l'exemple hello-jni dans le NDK; le fichier source C vous montre généralement à quoi ressemblent les cales. Utiliser javah pour générer ces cales est la voie à suivre) , vous créez des classes Java qui ont des méthodes natives, les traitez avec javah, et cela génère les en-têtes C pour vous, puis vous codez des fonctions C qui adhèrent aux prototypes de fonctions générés).

Remarque: alors que les documents NDK vous demanderaient de créer manuellement à partir de la ligne de commande, puis d'entrer dans Eclipse pour créer votre application (une séquence d'étapes laborieuse, bien sûr, surtout si vous modifiez le code C/C++), il s'avère que vous peut s'intégrer facilement à Eclipse afin que le NDK soit exécuté chaque fois que vous construisez à partir d'Eclipse. Pour voir comment, lire ici .

5
slogan621

C'est pour le bénéfice d'autres qui veulent créer le projet à partir de zéro à partir d'Eclipse: j'ai suivi les étapes mentionnées ici dans ce blog ici et cela fonctionne très bien: http://mhandroid.wordpress.com/2011/01/ 23/using-Eclipse-for-Android-cc-development /

3
Viren

Pour tenter de répondre directement à la question - vous devez exécuter ndk-build dans le dossier avec le code natif dans votre dossier de projet. Cela crée les fichiers .so trouvés dans l'arborescence Explorateur de fichiers/ressources sous jni dans Eclipse. Ces fonctions, si la syntaxe du code est correcte, peuvent désormais être appelées depuis votre code Java.

J'ai trouvé de nombreuses sources d'aide lors de l'installation et de la prise en main de Android Developer Tools et NDK. J'ai écrit un blog post pour partager mes expériences et, espérons-le, redonner à la communauté qui m'a aidé à y arriver, ce qui peut aider à comprendre ma réponse: http://workingmatt.blogspot.co.uk/2013/03/set-up-Android-sdk-and-ndk.html

1
WorkingMatt