2010-08-12 10 views
44

J'ai démarré le SDK Android depuis un certain temps dans Eclipse (MAC OSX). J'ai téléchargé le NDK et installé les outils C/C++ dans Eclipse, mais est-ce que quelqu'un pourrait me guider sur l'utilisation du NDK? Par exemple, est-ce que je crée juste un projet Android comme normal et le construis avec le NDK à la place? Vraiment pourrait faire avec un tutoriel décent si quelqu'un sait de tout.Installation et utilisation de l'Android NDK dans Eclipse

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

Run Terminal

cd ~/android-NDK-1.5_r1

make APP = bonjour-JNI

En afin de lancer l'application exemple hello-jni, mais je reçois une erreur dans le terminal en disant:

Andro id NDK: Variable APP définie à applications inconnues: hellojni
Android NDK: Vous pouvez utiliser une des opérations suivantes:
build/core/main.mk: 81: *** Android NDK : Aborting. Arrêtez.

Des idées pourquoi?

+0

Bonne question. Je dois utiliser le NDK pour un projet sur lequel je travaille actuellement, et il n'y a pas beaucoup de bonnes informations. – I82Much

+0

Oui, je n'ai pas beaucoup de temps aujourd'hui, mais si je travaille sur ce que je vais mettre à jour ici ... –

+1

J'ai écrit un tutoriel étape par étape ici. http://www.permadi.com/blog/2011/09/setting-up-android-jni-projects-in-windows-eclipse-and-sequoyah/ J'espère que ça aide. –

Répondre

25

Aussi simple que je puisse le décrire, construire 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 avoir fait cela, vous devriez voir la sortie qui se traduit par la création d'un fichier * .so dans le répertoire obj dans le répertoire de projet. Une fois que vous avez le fichier * .SO, la dernière étape de la construction d'une application avec Android NDK à travers 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 l'Android NDK vos applications Android sont toujours basées sur Java. Ils communiquent simplement avec le code écrit en C/C++ au moyen du Java Native Interface. Enfin, je ne suis pas au courant des plugins Eclipse qui faciliteront le développement NDK. Tout ce que je sais sur le NDK J'ai appris l'officiel Android NDK documentation. N'hésitez pas à commenter et laissez-moi savoir s'il y a quelque chose que je peux clarifier dans ma réponse.

+2

Salut merci, j'ai écrit cette question il y a quelques années et je n'y ai jamais vraiment pensé, alors je vais essayer dans quelques jours. Merci +1 –

+1

Merci ... J'ai vu tant de réponses contradictoires et celui-ci l'a fait pour moi. – Kalle

+0

Effacer la réponse, utile –

5

Le répertoire docs du NDK contient de très bonnes informations sur l'utilisation du NDK lui-même.Lisez la présentation, Application.mk et les documents HTML Android.mk. Vous aurez envie de google pour le PDF Sun JNI, le télécharger, et apprendre ce que JNI est avant d'aller plus loin. C'est parce que la simple compilation d'un tas de code C/C++ dans les bibliothèques avec le NDK n'est qu'une partie du processus. Vous devez écrire du code Java natif qui appelle votre C/C++, et vous devez créer des fonctions wrapper en C/C++ qui adhèrent aux conventions JNI que le code Java natif peut invoquer. JNI existe depuis longtemps, ce n'est pas spécifique à Android. Donc, vous pouvez, pour en savoir plus, aller assez loin en suivant les tutoriels orientés vers JNI, en utilisant des outils en 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 ce à quoi ressemblent ces C shims, jetez un coup d'oeil à l'échantillon hello-jni dans le NDK, le fichier source C vous montre généralement à quoi ressemblent les shims.Utiliser javah pour générer ces shims est le chemin à parcourir , vous créez des classes Java qui ont des méthodes natives, les traitez avec javah, et il génère les en-têtes C pour vous, puis vous codez les fonctions C qui adhèrent aux prototypes des fonctions générées). Remarque: alors que les documents NDK vous demandaient de construire manuellement à partir de la ligne de commande, puis d'aller dans Eclipse pour créer votre application (une séquence laborieuse d'étapes, bien sûr, surtout si vous changez le code C/C++), Il s'avère que vous pouvez facilement intégrer Eclipse pour que le NDK soit exécuté chaque fois que vous construisez à partir d'Eclipse. Pour voir comment, read here.

1

Pour tenter de répondre à la question directement - vous besoin d'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'explorateur de fichiers/l'arborescence des ressources sous jni dans Eclipse. Ces fonctions, si la syntaxe du code est correcte, peuvent maintenant être appelées à partir de votre code java.

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

12

développement natif et le soutien de débogage sont entrées en environnement Eclipse de la version ADT 20. http://tools.android.com/recent/usingthendkplugin

  • Set chemin vers NDK de Préférences Eclipse -> Android -> NDK
  • Faites un clic droit sur votre projet et choisissez Outils Android -> Ajouter Prise en charge native

developer.android.com déclare que vous avez également besoin de Cygwin.

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

outils de développement nécessaires

  • Pour toutes les plateformes de développement, GNU Make 3.81 ou ultérieur 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.
+1

J'ai totalement raté ce - merci pour les heads-up! – slott