web-dev-qa-db-fra.com

iOS / Android développement multiplateforme

Je me suis amusé avec le développement d'applications Android dans Java pendant un moment et je commence à en avoir un aperçu. Toutefois, si je veux commencer, sur une version iOS, je dois tout coder à partir de zéro, ce qui est indésirable.

Je me demandais quelles solutions multiplates-formes existent et comment elles fonctionnent correctement dans la pratique. J'ai pensé aux applications Web - en utilisant peut-être jQuery Mobile ou Titanium , ou Adobe Flash/Flex/Air. De plus, je n'ai pas encore de Mac, sur lequel je devrai probablement investir.

Donc mes questions:

  1. Quels environnements de développement multiplateformes existent-ils pour iOS/Android (et/ou d'autres périphériques)?

  2. Quelle a été votre expérience avec ces outils? (c'est ce que je suis vraiment désireux de savoir)

112
Alister

Disclaimer: Je travaille pour une entreprise, Particle Code, qui crée un framework multiplate-forme. Il y a une tonne d'entreprises dans cet espace. De nouveaux semblent apparaître chaque semaine. Bonne nouvelle pour vous: vous avez beaucoup de choix.

Ces cadres ont des approches différentes et nombre d’entre eux sont fondamentalement conçus pour résoudre différents problèmes. Certains sont axés sur les jeux, d'autres sur les applications. Je voudrais poser les questions suivantes:

Que veux-tu écrire? Application d'entreprise, application de productivité personnelle, jeu de réflexion, jeu de tir à la première personne?

Quel type d'environnement de développement préférez-vous? IDE ou un simple éditeur de texte?

Avez-vous des sentiments forts sur les langages de programmation? Parmi les frameworks que je connais bien, vous pouvez choisir ActionScript, C++, C #, Java, Lua et Ruby.

Mon entreprise est plus présente dans l’espace de jeu et je n’ai donc pas joué autant avec les frameworks JavaScript + CSS tels que Titanium, PhoneGap et Sencha. Mais je peux vous parler un peu des frameworks orientés jeux. Les jeux et les applications Internet riches sont un domaine dans lequel les frameworks multi-plateformes peuvent briller, car ces applications ont tendance à accorder plus d'importance à la singularité visuelle et moins à la fusion avec les interfaces utilisateur natives. Voici quelques cadres à rechercher:

  • Unity www.unity3d.com est un moteur de jeux 3D. Cela ne ressemble vraiment à aucun autre environnement de développement dans lequel j'ai travaillé. Vous créez des scènes avec des modèles 3D et définissez un comportement en associant des scripts à des objets. Vous pouvez créer un script en JavaScript, C # ou Boo. Si vous souhaitez écrire un jeu 3D basé sur la physique qui s'exécutera sur iOS, Android, Windows, OS X ou sur des consoles, cet outil est probablement fait pour vous. Vous pouvez également écrire des jeux 2D en utilisant des ressources 3D. Un bon exemple en est le jeu indépendant Max et le marqueur magique , un side-scroller 2D basé sur la physique et écrit en Unity. Si vous ne le savez pas, je vous recommande de vérifier (surtout s'il y a des enfants dans votre ménage). Max est disponible pour PC, Wii, iOS et Windows Phone 7 (bien que cette dernière version soit un port, car Unity ne prend pas en charge WinPhone). Unity est livré avec quelques exemples de jeux complets avec des ressources et des textures 3D, ce qui vous aide vraiment à vous familiariser avec ce qui peut être un environnement compliqué.

  • Corona www.anscamobile.com/corona est un moteur de jeux 2D qui utilise le langage de script Lua et prend en charge iOS et Android. Le principal atout de Corona réside dans sa capacité à écrire très rapidement des jeux basés sur la physique en quelques lignes de code. Le grand nombre de jeux basés sur Corona dans l'app store iOS témoigne de son succès. L'environnement est très maigre, ce qui plaira à certaines personnes. Il vient avec un simulateur et un débogueur. Vous ajoutez votre éditeur de texte de choix et vous disposez d'un environnement de développement. Le SDK de base n'inclut aucun composant de l'interface utilisateur, comme des boutons ou des zones de liste, mais un module complémentaire CoronaUI est disponible pour les abonnés.

  • Le Particle SDK www.particlecode.com est une solution multi-plateforme légèrement plus générale avec une expérience dans les jeux. Vous pouvez écrire au format Java ou ActionScript, à l'aide d'un modèle d'application MVC. Il comprend un IDE basé avec Eclipse) avec un éditeur d'interface utilisateur WYSIWYG. Nous prenons actuellement en charge la construction pour Android, iOS, webOS et Windows Phone 7. Vous pouvez également utiliser Flash ou HTML5 pour le Web.Le cadre a été développé à l'origine pour les jeux sociaux multijoueurs en ligne, tels que le poker et le backgammon, et il convient aux jeux 2D et aux applications complexes. Le framework supporte les graphiques 2D et inclut un moteur physique 2D.

NB:

Aujourd'hui, nous avons annoncé l'acquisition de Particle Code par Appcelerator, le fabricant du framework multiplate-forme Titanium.

...

À compter du 1er janvier 2012, [ Code de particule] ne supportera plus officiellement la plate-forme [ Particle SDK].

La source

  • Le kit SDK Airplay www.madewithmarmalade.com est un framework C++ qui vous permet de développer Visual Studio ou Xcode. Il prend en charge les graphiques 2D et 3D. Airplay cible iOS, Android, Bada, Symbian, webOS et Windows Mobile 6. Ils disposent également d'un add-on pour créer des applications AirPlay pour PSP. Mon C++ étant très rouillé, je n'ai pas beaucoup joué avec, mais ça a l'air cool.

En termes de courbe d'apprentissage, je dirais qu'Unity avait la courbe d'apprentissage la plus raide (pour moi), Corona était la plus simple, et Particle et Airplay se situaient quelque part entre les deux.

Un autre point intéressant est la manière dont les frameworks gèrent différents facteurs de forme. Corona prend en charge la mise à l'échelle dynamique, qui sera familière aux développeurs Flash. C’est très facile à utiliser, mais cela signifie que vous finissez par gaspiller de l’écran lorsque vous passez d’un écran 4: 3 comme l’iPhone à un 16: 9, comme le nouveau qHD Android. Le SDK Particle) L'éditeur d'interface utilisateur vous permet de concevoir des mises en page flexibles à l'échelle, mais vous permet également d'ajuster les dispositions en fonction de la taille de l'écran, ce qui prend un peu plus de temps, mais vous permet également de personnaliser l'apparence de l'application pour chaque écran.

Bien sûr, ce qui fonctionne pour vous dépend de vos goûts et de votre style de travail, ainsi que de vos objectifs. Je vous recommande donc de télécharger quelques-uns de ces outils et de les essayer. Tous ces outils sont libres d'essayer.

De plus, si je pouvais simplement faire une annonce de service public, la plupart de ces outils sont en plein développement. Si vous trouvez un cadre que vous aimez, envoyez-nous un retour et faites-leur savoir ce que vous aimez, ce que vous n'aimez pas et les fonctionnalités que vous souhaitez voir. Vous avez une réelle opportunité d’influencer ce qui entre dans les prochaines versions de ces outils.

J'espère que cela t'aides.

103
DocDude

Quiconque monoTouch et MonoDroid, mais ce qui va arriver à cette partie de Attachmate est à deviner. Bien sûr, même avec les solutions mono, vous créez toujours des vues non multiplates-formes, mais l'idée est de réutiliser la logique métier.

Gardez un œil sur http://www.xamarin.com/ il sera intéressant de voir ce qu’ils proposent.

15
Derek Beattie

Mon expérience avec PhoneGap + jQuery Mobile était très simple. J'ai pu le faire rapidement pour iOS. Toutefois, cela ne fonctionnait pas sur mes téléphones Android). Le projet était une application très simple pour prendre des photos et les publier sur un site Web. Et à la fin de la journée il se sentait "maladroit" par rapport à une application native.

Je ne crois pas qu'il y aura jamais de développement multi-plateformes facile. Je pense que le navigateur est aussi proche que vous obtiendrez. En choisissant quelque chose comme PhoneGap, je pense que vous échangez juste un ensemble de points douloureux contre un ensemble différent de points douloureux.

11
Evan

Si vous ne souhaitez pas utiliser un framework à part entière pour le développement multiplate-forme, jetez un coup d'œil à C++ en tant qu'option. iOS prend entièrement en charge l'utilisation de C++ pour la logique de votre application via Objective-C++. Je ne sais pas à quel point le support d'Android pour C++ via le NDK convient à la logique de votre entreprise en C++ plutôt qu'à quelques extraits de code critiques en termes de performances, mais si le cas d'utilisation est bien pris en charge, vous pouvez l'essayer.

Bien entendu, cette approche n’a de sens que si la logique de votre application constitue la plus grande partie de votre projet, car les interfaces utilisateur devront être écrites individuellement pour chaque plate-forme.

En fait, C++ est le langage de programmation le plus largement pris en charge (à l'exception du C), et est donc le langage principal de la plupart des grandes applications multiplates-formes.

7
yeoman

Bien que je commence à peine à examiner ce domaine de développement, je pense que cela tient à cette différence fondamentale: certains outils conservent le code d'origine, et certains ports en natif ...

par exemple, PhoneGap conserve simplement le code HTML/CSS/JS que vous écrivez et l'enveloppe dans du code iOS suffisant pour qu'il soit qualifié d'application, tandis qu'Appcelerator vous fournit un projet XCode ... donc si vous n'êtes pas familier avec iOS, alors cela ne vous apporterait vraiment aucun avantage sur PhoneGap, mais si vous FAITES en savez un peu, cela vous donnera peut-être un peu plus de capacité à modifier les versions natives après votre plus gros effort de codage.

Je n'ai pas utilisé appcelerator moi-même, mais j'ai travaillé sur un projet il y a quelques semaines dans lequel l'un des membres de notre équipe a créé une application iPad complète en environ 24 heures.

Et oui, pour soumettre réellement à Apple, vous devrez vous procurer un Mac, mais si ce n’est pas votre plate-forme de travail principale, vous pouvez vous permettre de faire des économies.

5
Robot Woods

Si vous avez déjà utilisé LUA, vous pouvez essayer que Corona SDK puisse créer des applications fonctionnant sur IOS et Android

http://developer.anscamobile.com/

Je l’ai téléchargé et en ai bousculé quelques-uns. Je trouve que LUA est très facile à apprendre le langage de script sans les inconvénients/limitations habituels du langage de script ....

3
Jeff

Cappuccino ou PhoneGap .

Parfois, essayer de trouver un raccourci ne vous fait pas gagner du temps et ne vous donne pas un produit final comparable.

3
SK9

Il y a aussi MoSync Mobile SDK

GPL et licences commerciales. Il y a un bon aperçu de leur approche ici .

3
Roger Dahl

Il y a aussi BatteryTech que nous utilisons depuis 18 mois et qui a publié plusieurs jeux. http://www.batterypoweredgames.com/batterytech

Tous les utilisateurs de C++, Android et iOS, tous les utilisateurs obtiennent le code source complet. La nouvelle v2 inclut les liaisons Lua.

2
Rob