Développement multiplateforme iOS / Android [fermé]

113

Je joue avec le développement d'applications Android en Java depuis un certain temps et je commence à comprendre. Cependant, si je veux démarrer sur une version iOS, je dois tout coder à partir de zéro - ce qui est, bien, indésirable.

Je me demandais quelles sont les solutions multiplateformes disponibles et dans quelle mesure elles fonctionnent dans la pratique. J'ai pensé aux applications Web - peut-être en utilisant jQuery Mobile ou Titanium , ou Adobe Flash / Flex / Air. Je n'ai pas encore de Mac, dans lequel je devrai probablement investir.

Donc mes questions:

  1. Quels environnements de développement multiplateformes existent pour iOS / Android (et / ou d'autres appareils)?

  2. Quelle a été votre expérience avec ces outils? (c'est ce que j'ai vraiment hâte de savoir)

Alister
la source
1
Alister, vous n'êtes certainement pas la première personne à poser ce genre de question, ni la première personne à vouloir une réponse! :) N'oubliez pas PhoneGap, dont j'ai entendu des critiques mitigées, et Red Foundry, qui est plus emporte-pièce mais qui a l'air bien - pas encore multi-plateforme.
makdad
1
Vous pouvez également utiliser PhoneGap. Je l'ai utilisé et je vous conseille d'y aller. Il existe une disposition pour générer un fichier exe (IPA pour iOS) à l'aide d'une application développée sur PhoneGap sous Android.
Jayprakash Dubey
Je souhaite mettre à jour cette question car nous sommes maintenant fin 2016 et le paysage des outils multiplateformes a changé. Je dirais que cela dépend de votre langage de programmation de choix et où votre équipe a le plus d'XP avec: 1. JavaScript: Phonegap Les performances sont mauvaises sur mobile, donc utiliser des outils avec des composants natifs mais JS pour la logique de l'application est recommandé. Les options sont V-Play ( v-play.net/apps ) ou React ( reactnative.com ). 2. C #: Xamarin est votre ami. 3. C ++: Utilisez un framework C ++ comme Qt ( qt.io ) Avertissement: Je suis l'un des gars derrière V-Play, qui est basé sur Qt.
Christian Feldbacher
Réponse: Flutter , c'est le nouveau cadre d'interface utilisateur mobile de Google pour créer des interfaces natives sur iOS et Android en un temps record.
naXa
Il existe également un projet actif haxe.org prometteur .
Eugene Gr. Philippov

Réponses:

104

Avertissement: Je travaille pour une entreprise, Particle Code, qui crée un cadre multiplateforme. Il y a une tonne d'entreprises dans cet espace. De nouveaux semblent surgir chaque semaine. Bonne nouvelle pour vous: vous avez beaucoup de choix.

Ces cadres adoptent différentes approches, et nombre d’entre eux sont fondamentalement conçus pour résoudre différents problèmes. Certains se concentrent sur les jeux, d'autres sur les applications. Je poserais les questions suivantes:

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

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

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

Mon entreprise est plus dans l'espace de jeu, donc je n'ai pas autant joué avec les frameworks JavaScript + CSS comme Titanium, PhoneGap et Sencha. Mais je peux vous parler un peu de certains des frameworks orientés jeux. Les jeux et les applications Internet riches sont un domaine dans lequel les cadres multiplateformes peuvent briller, car ces applications ont tendance à accorder plus d'importance au fait d'être visuellement uniques et moins à se fondre dans les interfaces utilisateur natives. Voici quelques frameworks à rechercher:

  • Unity www.unity3d.com est un moteur de jeux 3D. Il 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 le comportement en attachant des scripts à des objets. Vous pouvez créer des scripts en JavaScript, C # ou Boo. Si vous souhaitez écrire un jeu basé sur la physique 3D qui fonctionnera sur iOS, Android, Windows, OS X ou des consoles, c'est probablement l'outil qu'il vous faut. Vous pouvez également écrire des jeux 2D en utilisant des ressources 3D - un bel exemple de ceci est le jeu indépendant Max and the Magic Marker., un side-scroller basé sur la physique 2D écrit dans Unity. Si vous ne le savez pas, je vous recommande de le 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 des exemples de jeux complets avec des actifs et des textures 3D, ce qui aide vraiment à se familiariser avec ce qui peut être un environnement assez 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 point de vente de Corona est la possibilité d'écrire très rapidement des jeux basés sur la physique en quelques lignes de code, et 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 est livré avec un simulateur et un débogueur. Vous ajoutez l'éditeur de texte de votre choix et vous disposez d'un environnement de développement. Le SDK de base n'inclut aucun composant d'interface utilisateur, comme des boutons ou des zones de liste, mais un module complémentaire CoronaUI est disponible pour les abonnés.

  • Le SDK Particle www.particlecode.com est une solution multiplateforme légèrement plus générale avec une expérience dans les jeux. Vous pouvez écrire en Java ou en ActionScript à l'aide d'un modèle d'application MVC. Il comprend un IDE basé sur Eclipse avec un éditeur d'interface utilisateur WYSIWYG. Nous prenons actuellement en charge la création pour les appareils Android, iOS, webOS et Windows Phone 7. Vous pouvez également générer du Flash ou HTML5 pour le Web. Le framework 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 et applications 2D avec une logique complexe. Le framework prend en charge les graphiques 2D et comprend un moteur physique 2D.

NB:

Aujourd'hui, nous avons annoncé que Particle Code a été acquis par Appcelerator, créateur du framework multiplateforme Titanium.

...

Depuis le 1er janvier 2012, [ Particle Code ] ne prendra plus officiellement en charge la plate-forme [ Particle SDK ].

La source

  • Le SDK Airplay www.madewithmarmalade.com est un framework C ++ qui vous permet de développer dans 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 ont également un module complémentaire pour créer des applications AirPlay pour PSP. Mon C ++ étant très rouillé, je n'ai pas beaucoup joué avec, mais il a l'air cool.

En termes de courbe d'apprentissage, je dirais que Unity avait la courbe d'apprentissage la plus raide (pour moi), Corona était la plus simple, et Particle et Airplay se situent 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 perdre de l'espace sur l'écran lorsque vous passez d'un écran 4: 3 comme l'iPhone à un 16: 9 comme les nouveaux appareils Android qHD. L'éditeur d'interface utilisateur du SDK Particle vous permet de concevoir des mises en page flexibles qui s'adaptent, mais vous permet également d'ajuster les mises en page pour des tailles d'écran individuelles. Cela prend un peu plus de temps, mais vous permet de donner à l'application un aspect personnalisé pour chaque écran.

Bien sûr, ce qui fonctionne pour vous dépend de vos goûts individuels 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 leur donner une chance. Tous ces outils sont gratuits.

De plus, si je pouvais simplement faire une annonce d'intérêt public, la plupart de ces outils sont en développement vraiment actif. Si vous trouvez un framework que vous aimez, envoyez-leur des commentaires et dites-leur ce que vous aimez, ce que vous n'aimez pas et les fonctionnalités que vous aimeriez voir. Vous avez une réelle opportunité d'influencer ce qui se passe dans les prochaines versions de ces outils.

J'espère que cela t'aides.

DocDude
la source
Je pensais plus au développement d'entreprise, mais vous m'avez peut-être inspiré à regarder l'un de ces SDK pour le plaisir.
Alister
des liens vers chaque framework seraient utiles
Petrus Theron
2
Mise à jour: Particle Code a été acquis par Appcelerator, fabricant de Titanium, le sort du Particle SDK est donc incertain. Airplay a changé son nom, plutôt inexplicablement, en «Marmelade».
DocDude
15

MonoTouch et MonoDroid, mais ce qui va arriver à cette partie d'Attachmate maintenant est une conjecture. Bien sûr, même avec les solutions mono, vous créez toujours des vues non multiplateformes, mais l'idée étant la réutilisation de la logique métier.

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

Derek Beattie
la source
12

Mon expérience avec la création de quelque chose de très simple dans PhoneGap + jQuery Mobile était bien. J'ai pu le faire rapidement pour iOS. Cependant, cela n'a pas fonctionné sur mes téléphones Android sans apporter de modifications. 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, c'était "maladroit" par rapport à une véritable application native.

Je ne crois pas qu'il y aura jamais de développement multiplateforme facile. Je pense que le navigateur est aussi proche que possible. En choisissant quelque chose comme PhoneGap, je pense que vous n'échangez qu'un ensemble de points de douleur pour un ensemble différent de points de douleur.

Evan
la source
7

Si vous ne souhaitez pas utiliser un framework à part entière pour le développement multiplateforme, jetez un œil à C ++ en option. iOS prend entièrement en charge l'utilisation de C ++ pour la logique de votre application via Objective-C ++. Je ne sais pas dans quelle mesure la prise en charge d'Android pour C ++ via le NDK est adaptée pour faire votre logique métier en C ++ plutôt que juste quelques extraits de code critiques pour les performances, mais si ce cas d'utilisation est bien pris en charge, vous pouvez l'essayer.

Cette approche n'a bien sûr de sens que si votre logique applicative constitue la plus grande partie de votre projet, car les interfaces utilisateur devront être écrites individuellement pour chaque plateforme.

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

yeoman
la source
3
Btw, Android semble en fait prendre directement en charge les activités écrites en C ++ uniquement: developer.android.com/reference/android/app/NativeActivity.html
yeoman
4
Avec une mise en garde - pas d'accès Java (donc pas d'intégration de bibliothèque tierce ou d'accès SDK) de NativeActivity. Le rend inadapté à de nombreuses fins.
rbgrn
6

Bien que je viens de commencer à me pencher sur ce domaine de développement, je pense que cela se résume à cette différence fondamentale: certains outils conservent le code d'origine, et certains portaient en natif ...

par exemple, PhoneGap conserve simplement le code HTML / CSS / JS que vous écrivez et l'enveloppe dans suffisamment de code iOS pour être qualifié d'application, tandis qu'Appcelerator vous livre un projet XCode ... donc si vous n'êtes pas familier avec iOS, alors cela ne constituerait pas vraiment un avantage pour vous sur PhoneGap, mais si vous DO connaissez un peu, cela pourrait vous donner un peu plus la capacité de modifier les versions natives après votre effort de codage plus.

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

Et oui, pour vous soumettre à Apple, vous devrez vous procurer un Mac, mais si ce n'est pas votre plate-forme de travail principale, vous pouvez aller bon marché.

Bois de robot
la source
3

Cappuccino ou PhoneGap .

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

SK9
la source
3

Si vous avez déjà utilisé LUA, vous pouvez essayer Corona SDK pour créer des applications qui s'exécutent sur IOS et Android

https://coronalabs.com/

Je l'ai téléchargé et en ai dérangé quelques-uns, je trouve que LUA est un langage de script très facile à apprendre sans les tracas / limitations habituels du langage de script ...

Jeff
la source
2

Il y a aussi BatteryTech que nous utilisons depuis 18 mois et en avons sorti plusieurs jeux. http://www.batterypoweredgames.com/batterytech

Tous les supports C ++, Android et iOS, tous les utilisateurs obtiennent la source complète. La nouvelle version 2 inclut des liaisons lua.

Rob
la source
3
À partir du 30/05/12: 200 $ pour une licence pour 5 développeurs ou moins. 800 $ pour plus de 5. Ne peut pas être utilisé pour les projets open source.
Roger Dahl