Installation et utilisation de L'Android NDK dans Eclipse
j'exécute le SDK Android 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 L'utilisation du NDK? Par exemple, est-ce que je crée juste un projet Android comme normal et le construit avec le NDK à la place?
vraiment pourrait faire avec un tutoriel décent si quelqu'un connaît une.
EDIT: OK donc j'ai installé le NDK maintenant (je pense) mais quelqu'un a-t-il une idée de comment l'utiliser? Je me suis rendu ce (prises à partir d' ici):
Exécuter Terminal
cd ~ / android-ndk-1.5_r1
faire APP=bonjour-jni
afin d'exécuter l'application Hello-jni sample, mais je reçois une erreur dans le terminal disant:
Android NDK: la variable APP définie à applications inconnues: hellojni
Android NDK: vous pourriez vouloir utiliser l'une des opérations suivantes:
build/core / main.mk: 81: * * * Android NDK: abandon . Arrêter.
une idée de pourquoi?
5 réponses
aussi simple que je puisse le décrire, la construction d'une application Android à partir de L'intérieur 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 une sortie qui résulte en la création d'un *.Fichier SO dans le répertoire obj dans votre répertoire de projets.
Une fois que vous avez le *.Donc fichier, la dernière étape pour construire une application avec L'Android NDK à travers Eclipse est de le construire avec Eclipse comme vous le feriez pour toute autre application et ensuite le déployer pour les tests.
si vous apportez des modifications au code C / C++, vous devrez répéter la première étape et régénérer votre *.Donc, déposez avant de construire et de déployer votre application à partir de L'intérieur D'Eclipse à nouveau.
je tiens à noter que, par en utilisant le NDK Android vos applications android sont toujours basées sur Java. Ils ne font que communiquer avec du code écrit en C / C++ en passant par le Java Native Interface.
enfin, je n'ai pas connaissance de plugins Eclipse qui pourraient aider au développement de NDK. Tout ce que je sais Sur le NDK j'ai appris l'officiel Android NDK documentation. N'hésitez pas à faire des commentaires et à me faire savoir s'il y a quelque chose que je peux clarifier dans ma réponse.
le support de développement et de débogage natif est entré dans L'environnement Eclipse à partir de la version 20 de L'ADT. http://tools.android.com/recent/usingthendkplugin
- Définir le chemin d'accès à NDK à partir d'Eclipse Préférences -> Android -> NDK
- cliquez avec le bouton droit de la souris sur votre projet et choisissez les outils Android - > ajouter le Support natif
developer.android.com États dont vous avez également besoin Cygwin.
http://developer.android.com/tools/sdk/ndk/index.html#Contents
outils de développement
- pour toutes les plateformes de développement, GNU Make 3.81 ou plus est requis. Les versions précédentes de GNU Make pourraient fonctionner mais n'ont pas été testées.
- une version récente d'awk (GNU Awk ou Nawk) est également requise.
- Pour Windows, Cygwin 1.7 ou plus est requis. Le NDK ne fonctionnera pas avec Cygwin 1.5 installation.
le répertoire docs du NDK contient de bonnes informations sur la façon d'utiliser le NDK lui-même. Lire l'aperçu, Application.mk, et Androïde.MK HTML docs. Vous aurez envie de google pour le Sun JNI PDF, téléchargez-le, et apprenez ce que JNI est tout au sujet avant d'aller plus loin. C'est parce que simplement compiler 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 de wrapper en C/C++. qui adhèrent aux conventions JNI que le code Java natif peut invoquer. JNI est là depuis longtemps, ce N'est pas spécifique à Android par tous les moyens. Donc, vous pouvez, pour en savoir plus, aller assez loin en suivant des 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 ces C shims ressemblent, jetez un coup d'oeil à l'échantillon hello-jni dans le NDK; le fichier source C là vous montre typiquement ce que le cales. Utiliser javah pour générer ces shims est la solution, vous créez des classes Java qui ont des méthodes natives, les traitent avec javah, et cela génère les en-têtes C pour vous, puis vous codez vers le haut des fonctions C qui adhèrent aux prototypes de fonction générés).
Note: alors que les docs NDK vous auraient construit manuellement à partir de la ligne de commande et ensuite aller dans Eclipse pour construire votre application (une séquence laborieuse d'étapes, pour être sûr, surtout si vous changez le code C / C++ ), il s'avère que vous pouvez vous intégrer facilement avec Eclipse de sorte que le NDK est exécuté chaque fois que vous construisez à partir D'Eclipse. Pour voir comment, lire ici.
Ceci est pour le bénéfice des autres qui veulent créer le projet à partir de zéro dans 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/
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 le .donc les fichiers trouvés dans l'arborescence File explorer/resources 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 charge des outils de développement Android et le NDK. J'ai écrit un blog partager mes expériences et, espérons-le, redonner à la communauté qui m'a aidé à m'y rendre, ce qui pourrait aider à comprendre ma réponse: http://workingmatt.blogspot.co.uk/2013/03/set-up-android-sdk-and-ndk.html