2010-05-05 4 views
52

Puis-je faire de la programmation Android en C++, C? Si la réponse est "oui" alors dites-nous comment? Et quelle est la procédure à mettre en place? Je ne connais pas Obj-C, Java, mais bien versé en C, C++, Flash AS3, SDK publié par Google. en code natifPuis-je faire de la programmation Android en C++, C?

S'il vous plaît ne pas parler de SDK NVDIA il est pas complètement développé :)

Répondre

57

VEUILLEZ NOTER: LA RÉPONSE CI-DESSOUS EST HORRITEMENT SUPPRIMÉE ET PEUT NE PAS ÊTRE ENTIÈREMENT CORRECTE.

Vous pouvez programmer en C/C++ en utilisant le Android NDK. Vous devrez envelopper votre base de code C++ dans une bibliothèque statique et charger cela via un wrapper Java & JNI.

Le NDK standard ne prend pas en charge RTTI et une grande partie des fonctionnalités de C++ standard n'est pas disponible, telles que std :: string, etc. Pour résoudre ce problème, vous pouvez recompiler le NDK. Dmitry Moskalchuk fournit une version modifiée du NDK qui prend en charge ceci au http://www.crystax.net/android/ndk-r3.php. Cette version modifiée fonctionne sur tous les téléphones Android qui fonctionnent sur un processeur ARM. En fonction du type d'application, vous devez décider d'utiliser Java ou C/C++. J'utiliserais C/C++ pour tout ce qui nécessite une puissance de calcul et des jeux supérieurs à la moyenne - Java pour le reste.

Choisissez une langue et écrivez la majorité de votre application dans cette langue; Les appels JNI peuvent réduire vos performances de beaucoup. Java n'est pas si difficile - si vous savez programmer en C/C++. L'avantage de Java est que l'application peut s'exécuter sur n'importe quel appareil fonctionnant sous Android, alors que les applications NDK dépendent de l'architecture pour laquelle elle a été compilée.

15

Vous devez utiliser Android NDK pour développer des portions critiques de performance de vos applications. Voir Android NDK.

De toute façon, je ne pense pas que ce soit la bonne façon de développer une application complète.

8

Oui, vous pouvez programmer des applications Android en C++ (pour la plupart), en utilisant le Native Development Kit (NDK), bien que Java soit la langue principale/préférée pour la programmation Android, et votre code C++ devra probablement interagir avec les composants Java, et Vous aurez probablement besoin de lire et de comprendre la documentation pour les composants Java. Par conséquent, je vous conseille d'utiliser Java à moins d'avoir une base de code C++ existante que vous avez besoin de porter et qui n'est pas pratique à réécrire en Java. Java est très similaire à C++, je ne pense pas que vous aurez des problèmes pour le ramasser ... aller de C++ à Java est incroyablement facile; aller de Java en C++ est un peu plus difficile, mais pas terrible. Java for C++ Programmers fait un très bon travail à expliquer les différences. L'écriture de votre code Android en Java sera plus idiomatique et facilitera également le processus de développement (puisque l'outillage pour le SDK Java Android est nettement meilleur que l'outillage NDK correspondant).

En termes de configuration, Google fournit le Android Studio IDE pour le développement Java et C++ Android (avec Gradle comme système de construction), mais vous êtes libre d'utiliser n'importe quel IDE ou système de construction tant que, sous le capot, vous utilisez le SDK/NDK Android pour produire le sorties finales.

+3

"Java est très similaire à C++"? – alecov

+1

@Alek quelle est votre objection? C'est vrai. Syntaxiquement, les deux langages sont très similaires, Java empruntant beaucoup au C++. –

+0

@MichaelAaronSafyan Ce n'est vrai que tant que les langues sont comparées d'un point de vue très superficiel. La syntaxe est en effet similaire (comme c'est le cas pour beaucoup de langages populaires - C, C#, JS, PHP, ...), mais les paradigmes et les idiomes sont différents. Tandis que Java se concentre toujours sur les classes malgré les influences récentes des éléments fonctionnels, C++ a déjà fourni toute une gamme de mécanismes d'abstraction (fonctions globales, templates, typedef, foncteurs, surcharge d'opérateur, ...), ce qui conduit à un style de programmation différent. Par exemple. Les collections STL et Java sont structurées très différemment. – TheOperator

-6

Il y a plus d'une bibliothèque pour travailler en C++ dans la programmation Android:

  1. C++ - qt (produit Nokia, également disponible en LGPL)
  2. C++ - wxWidget (disponible en GPL)
3

Vous devriez aussi regarder MoSync, MoSync vous offre des API C/C++ standard, des API bien documentées et faciles à utiliser, ainsi qu'un IDE basé sur Eclipse. C'est maintenant un IDE open source encore assez cool mais pas plus entretenu.

+0

Le lien est cassé – Bogatyr

+0

Son projet maintenant défunt et open source – JPM

2

Vous pouvez jeter un oeil également à C++ Builder XE6, et XE7 prend en charge android dans le code C++, et avec la bibliothèque Firemonkey.

http://www.embarcadero.com/products/cbuilder

façon assez facile de commencer, et le code natif. Mais les binaires ont une grande taille.

+0

Avez-vous une association avec embarcadero? – hichris123