Question

Je suis un développeur web et je veux passer mes produits web pour iPhone. L'un des produits est comme Google Maps:. Afficher la carte sur l'écran du téléphone, vous pouvez faire glisser ou redimensionner la carte et voir quelques informations que nous ajoutons à la carte

Je sais qu'il ya des technologies qui vous permet d'utiliser HTML, CSS et Javascript pour développer des applications iPhone natives. J'ai identifié quelques-unes:

Y at-il d'autres produits similaires? Quelles sont les différences entre eux? Que dois-je choisir?

Était-ce utile?

La solution

Je me suis inscrit avec stackoverflow uniquement dans le but de commenter la réponse la plupart du temps voté sur le dessus. La mauvaise chose est stackoverflow ne permet pas de nouveaux membres pour poster des commentaires. Donc, je dois faire ce commentaire look plus comme une réponse.

La réponse de Rory Blyth contient quelques points valides sur les deux javascript cadres mobiles. Cependant, ses points clés sont incorrects. La vérité est que titane et PhoneGap sont plus semblables que différents. Ils ont tous deux exposer les fonctions de téléphonie mobile grâce à un ensemble d'API javascript, et la logique de l'application (html, css, javascript) fonctionne dans un contrôle WebView natif.

  1. PhoneGap est non seulement une enveloppe native d'une application Web. Grâce à la PhoneGap API javascript, la « application web » a accès aux fonctions de téléphonie mobile tels que la géolocalisation, caméra Accéléromètre, les contacts, base de données, système de fichiers, etc. Fondamentalement, toutes les fonctions que le SDK de téléphone mobile offre peut être « pontés » à la monde javascript. D'autre part, une application web normale qui fonctionne sur le navigateur Web mobile n'a pas accès à la plupart de ces fonctions (sécurité étant la principale raison). Par conséquent, une application PhoneGap est plus d'une application mobile d'une application web. Vous pouvez certainement utiliser PhoneGap pour envelopper une application web qui n'utilise les API PhoneGap du tout, mais ce n'est pas ce que PhoneGap a été créé.

  2. Le titane ne compile pas votre code html, css ou code javascript dans "bits natifs". Ils sont conditionnés sous forme de ressources à l'ensemble exécutable, un peu comme un fichier d'image intégré. Lorsque l'application fonctionne, ces ressources sont chargées dans un contrôle UIWebView et exécuter là (comme le javascript, pas de bits natifs, bien sûr). Il n'y a pas une telle chose comme un compilateur javascript à code natif (ou à Objective-C). Cela se fait de la même manière dans PhoneGap aussi bien. De point de vue architectural, ces deux cadres sont très similaires.

Maintenant, sont-ils différents? Oui. Tout d'abord, le titane semble être plus riche que PhoneGap caractéristique en comblant plus de fonctions de téléphonie mobile à javascript. Le plus remarquable, PhoneGap n'expose pas beaucoup (le cas échéant) des composants de l'interface utilisateur native de javascript. Titane, d'autre part, a une API de l'interface utilisateur complète qui peut être appelé en javascript pour créer et contrôler tous les types de contrôles d'interface utilisateur native. Utilizaing ces API d'interface utilisateur, une application de titane peut-être plus « natif » qu'une application PhoneGap. Deuxièmement, PhoneGap prend en charge les plates-formes de téléphones mobiles plus que ne le titane. API PhoneGap sont plus génériques et peuvent être utilisés sur différentes plates-formes telles que iPhone, Android, Blackberry, Symbian, etc. Titanium cible principalement iPhone et Android au moins pour l'instant. Certaines de ses API sont spécifiques de la plate-forme (comme les API d'interface utilisateur iPhone). L'utilisation de ces API réduira la capacité multi-plateforme de votre application.

Donc, si votre souci de votre application est de le rendre plus à la recherche « native », le titane est un meilleur choix. Si vous voulez être en mesure de « port » de votre application à une autre plate-forme plus facilement, PhoneGap sera mieux.

Mise à jour 8/13/2010: Lien vers un la réponse de l'employé de titane à la question de Mickey.

Mise à jour 12/04/2010: J'ai décidé de donner à ce poste un examen annuel pour garder son courant d'information. Beaucoup de choses ont des changements d'une année qui a fait une partie des informations contenues dans le message initial pas à jour.

Le plus grand changement est venu de titane. Plus tôt cette année, Appcelerator Titanium 1.0 libéré, qui a quitté radicalement de ses versions précédentes du point de vue architectural. En 1.0, le contrôle ne UIWebView est plus utilisé. , Vous appelez au lieu API titane pour toutes les fonctions de l'interface utilisateur. Ce changement signifie un couple de choses:

  1. Votre interface utilisateur de l'application devient complètement native. Il n'y a pas plus interface Web dans votre application depuis le Tita natifAPI nium prendre le contrôle de tous vos besoins de l'interface utilisateur. Titane mérite beaucoup de crédit en avant-garde à la frontière « multi plate-forme UI native ». Il donne aux programmeurs qui préfèrent l'aspect et la convivialité de l'interface utilisateur native mais n'aiment pas le langage de programmation officielle une alternative.

  2. Vous ne pouvez pas utiliser HTML ou CSS dans votre application, comme l'affichage Web est parti. (Remarque: vous pouvez toujours créer l'affichage Web en titane Mais il y a quelques fonctionnalités de titane que vous pouvez profiter de la vue sur le Web..) titane Q & A: Qu'est-ce qui est arrivé à HTML & CSS

  3. Vous ne pourrez pas utiliser les bibliothèques populaires telles que JS JQuery qui supposent l'existence d'un objet DOM. Vous continuez à utiliser JavaScript comme langage de codage. Mais c'est à peu près la seule technologie Web que vous pouvez utiliser si vous venez à Titanium 1.0 en tant que programmeur web.

vidéo titane. Ce qui est nouveau en titane 1.0

Maintenant, ne Titanium 1.0 compile votre JavaScript dans "bits natifs"? Non Appcelerator est finalement propre sur cette question avec ce blog de développeur: Guides titane projet:. Environnement JS nous les programmeurs sont des gens plus authentiques que ceux dans le département de marketing, non? :-)

Passez à PhoneGap. Il n'y a pas beaucoup de nouvelles choses à dire sur PhoneGap. Ma perception est que le développement PhoneGap n'a pas été très actif jusqu'à ce que IBM a sauté à bord plus tard cette année. Certaines personnes ont même fait valoir que IBM contribue à plus de code que PhoneGap est Nitobi. Cela étant vrai ou non, il est bon de savoir que PhoneGap est en cours d'élaboration active.

PhoneGap continue de se baser sur les technologies web, à savoir HTML, CSS et JavaScript. Il ne ressemble pas à PhoneGap a un plan pour combler fonctionnalités d'interface utilisateur native de JavaScript que le titane est en train de faire. Alors que l'interface utilisateur Web est toujours en retard sur l'interface utilisateur native performance et apparence native et sentir, ce chiffre est en train rapidement. Il y a deux tendances dans les technologies Web qui assurent à l'interface utilisateur fonctionnalité lumineux Web mobile en termes de performance:

    Moteur
  1. JavaScript

    passer d'un interprète pour une machine virtuelle. JavaScript est JIT compilé en code natif pour une exécution plus rapide.

  2. page Web rendu en mouvement de se fonder sur le processeur à utiliser l'accélération GPU. tâches graphiques intensives telles que la page de transition et l'animation 3D deviennent beaucoup plus lisse avec l'aide de l'accélération matérielle. GPU accéléré dans Chrome Compositing

De telles améliorations sont originaires des navigateurs de bureau sont livrés aux navigateurs mobiles rapidement. En fait, depuis iOS 3.2 et Android 2.0, le contrôle de l'affichage Web mobile est devenu beaucoup plus performant et HTML5 convivial. L'avenir du web mobile est si prometteur qu'il a attiré un grand enfant à la ville: JQuery a récemment annoncé son cadre de Web mobile Avec JQuery mobile offrant des gadgets de l'interface utilisateur, et PhoneGap offrant des fonctionnalités de téléphone, ils deux combinés crée une plate-forme web mobile parfaite à mon avis.

Je dois aussi mentionner Sencha tactile comme un autre cadre de gadget de l'interface utilisateur Web mobile. Sencha Touch version 1.0 a récemment été publié sous un modèle de double licence qui comprend GPLv3. Sencha tactile fonctionne bien avec PhoneGap tout comme le fait JQuery Mobile.

Si vous êtes programmeur GWT (comme moi), vous pouvez vouloir vérifier GWT mobile , un projet open source pour créer des applications Web mobiles avec GWT. Il comprend une enveloppe GWT PhoneGap qui permet l'utilisation de PhoneGap dans GWT.

Autres conseils

D'après ce que j'ai compris, voici quelques différences entre les deux:

  • PhoneGap génère essentiellement des emballages d'origine pour ce qui sont encore applications web . Il recrache un projet WhateverYourPlatformIs, vous le construisez, et à déployer. Si nous parlons de l'iPhone (qui est l'endroit où je passe mon temps), il ne semble pas très différent de la création d'un lanceur d'applications web (un raccourci qui obtient son propre icône Tremplin, vous pouvez donc lancer comme ( comme ) une application native). La « app » est lui-même encore html / js / etc., Et fonctionne à l'intérieur d'un contrôle du navigateur hébergé. Qu'est-ce que PhoneGap fournit au-delà est un pont entre JavaScript et API de périphérique natif. , Vous écrivez Donc JavaScript contre les API PhoneGap et PhoneGap fait l'appel natif correspondant approprié. À cet égard, il est différent de déployer une application web ancienne plaine.

  • La source de titane est compilée vers le bas pour les bits natifs. Autrement dit, votre code html / js / etc. ne sont pas simplement attaché à un projet, puis hébergé à l'intérieur d'un contrôle du navigateur Web - ils sont transformés en applications natives. Cela signifie, par exemple, que l'interface de votre application sera composé de natif composants de l'interface utilisateur. Il y a plusieurs façons d'obtenir l'aspect et la sensation native sans avoir une application native, mais ... eh bien ... ce cauchemar qui se généralement être.

Les deux sont semblables à ce que vous écrivez tous vos trucs en utilisant des technologies web typiques (html / js / css / bla bla bla), et que vous aurez accès à des fonctionnalités natif API JavaScript par la coutume.

Mais, encore une fois, les applications PhoneGap (PhonGapps Je ne sais pas ... est-ce un nom stupide, il est plus facile de dire -? Je sais que beaucoup) commencent leur vie comme des applications Web et à la fin de leur vie comme des applications web. Sur l'iPhone, votre code html / js / etc. est juste exécuté à l'intérieur d'un contrôle UIWebView et le JavaScript PhoneGap APIs vos js appels sont acheminés vers des API natives.

applications de titane deviennent des applications natives - ils sont juste développées à l'aide technique dev web

.

Qu'est-ce que cela en fait signifie

  1. Une application Titanium regardez comme une application "réelle" parce que, en fin de compte, il est une application "réelle".

  2. Une application PhoneGap va ressembler à une application web hébergé dans un contrôle de navigateur, car, en fin de compte, il est une application web hébergé dans un contrôle du navigateur.

Ce qui est bon pour vous?

  • Si vous voulez écrire des applications natives en utilisant les compétences de dev web, Titanium est votre meilleur pari.

  • Si vous voulez écrire une application en utilisant les compétences de dev web que vous pouvez déployer de manière réaliste à plusieurs plates-formes (iPhone, Android, Blackberry, et tout ce qu'ils décident d'inclure), et si vous souhaitez accéder à un sous-ensemble caractéristiques de plates-formes natives (GPS, accéléromètre, etc.) via une API JavaScript unifiée, PhoneGap est probablement ce que vous voulez.

Vous pourriez demander: Pourquoi voudrais-je écrire un PhoneGapp (je l'ai décidé d'utiliser le nom) plutôt que d'une application Web qui est hébergé sur le web? Je ne peux pas accéder encore du périphérique natif caractéristiques de cette façon, mais aussi la commodité d'un véritable déploiement web plutôt que de forcer l'utilisateur à télécharger mon application « native » et l'installer?

La réponse est: Parce que vous pouvez soumettre votre PhoneGapp à l'App Store et la charge pour elle. Vous pouvez également obtenir cette icône du lanceur, ce qui rend plus difficile pour l'utilisateur d'oublier votre application (je suis beaucoup plus susceptibles d'oublier un signet que l'icône d'une application).

Vous pouvez certainement payer pour l'accès à votre application Web Web hébergé, mais combien de personnes vont vraiment passer par le processus de le faire? Avec l'App Store, je prends une application, appuyez sur le bouton « Acheter », entrez un mot de passe, et je suis fait. Il installe. Quelques secondes plus tard, je l'utilise. Si je devais utiliser quelqu'un d'autre unique interface de transaction web mobile, ce qui signifie probablement avoir à taper mon nom, adresse, numéro de téléphone, numéro de CC, et d'autres choses que je ne veux pas taper, je wouldn presque certainement » t passer par là. Aussi jeconfiance Apple -. Je suis convaincu que Steve Jobs ne va pas vous connecter mes informations, puis charger un groupe d'abonnements à des magazines méchant à mon CC pour coups de pied

Quoi qu'il en soit, à l'exception du fait que la technologie dev web est impliqué, PhoneGap et titane sont très différentes - au point d'être qu'apparemment comparables

.

Je déteste des applications Web, par le par, et si vous lisez les commentaires iTunes App Store, les utilisateurs sont très bonnes à les repérer. Je ne nommerai pas de noms, mais j'ai un couple « apps » sur mon téléphone qui ressemblent et fonctionnent comme des ordures, et c'est parce qu'ils sont des applications Web qui sont hébergées à l'intérieur des instances de UIWebView. Si je voulais utiliser une application web, j'ouvre Safari et, vous savez, accédez à l'un. Je l'ai acheté un iPhone parce que je veux que les choses qui sont iPhone-y. Je n'ai pas de problème en utilisant, par exemple, une application web Google tape à l'oeil dans Safari, mais je me sens triché si Google juste faufilé un signet sur Springboard en présentant une application web comme un natif.

dois y aller maintenant. Ma copine a qui pourrait-vous-s'il vous plaît-stop-USING que-ordinateur pour trois secondes regard sur son visage.

Je vais prendre un cours dans le développement Android / iPhone et nous avons passé 8 semaines avec du titane (pas temps plein) (version était en titane et le temps était 1.4.2 vers Novembre 2010). Voici mon expérience.

iPhone Android double ciblage

Même si les guides API prétendent que la fonctionnalité est disponible pour Android et iPhone, ce n'est pas le cas. Une grande partie des choses ne fonctionnent tout simplement pas sur l'une des plates-formes. Certaines choses fonctionne différemment.

Beaucoup de gens dans la classe a fait des applications iPhone, et ils ne peuvent pas les faire fonctionner sur Android sans réécritures majeurs. J'ai développé une application simple pour enfants appelé Carte animap (voir android market / Appstore en Suède) et a commencé à développer sous Windows. Une fois la cible Android travaillait j'ai ouvert le projet sur OS X. Il ne montre aucune substance de construction pour iPhone, juste pour Android. Vous devez commencer un projet à double cible sous OS X. (Ok, je copiais les fichiers pertinents à un nouveau projet). Problème suivant - les animations ne fonctionne pas sur l'iPhone (ils fonctionnent sur Android). Les événements de défilement ne fonctionne pas la même chose sur l'iPhone. (I.e. sur Android vous obtenez l'événement untouch lorsque l'utilisateur cesse de défiler et libère le doigt de l'écran, cela ne se produit pas sur l'iPhone).

Étant donné que ce n'est pas mentionné quelque part que vous devez faire basiquement essai et la programmation d'erreur sur la première une plate-forme, puis sur l'autre plate-forme. Par tâtonnement, je veux dire qu'il faudra environ deux jours pour obtenir une application simple comme le travail de l'autre Carte animap plate-forme. Vous devrez également avoir si (android), puis ... ou si (iphone) ... tout votre code ...

Télécharger et configuration

Vous devez suivre les instructions à la lettre. Ne pas essayer d'utiliser 64 bits java. Il ne sera pas compiler l'application de démonstration KitchenSink 1.4.0. (1.3 fonctionne bien!) Vous devez mettre les fichiers directement sur le lecteur C aussi longtemps feront le noms de fichiers programme externe ne reçoit pas tous les paramètres de ligne de commande s'ils arrivent à temps. (Fine pour les petits programmes bien) 1/3 des temps, la chaîne d'outils arrête simplement et vous devez appuyer sur « lancement » à nouveau. Ensuite, il fonctionnera probablement ... très peu fiable. Le simulateur ne sera pas trouvée au démarrage et vous devez simplement tuer des adb.exe avec Ctrl + Alt + Suppr et réessayer.

Connexion réseau

Sur un réseau wifi vous desserre parfois la connexion en direct et se bloque titane sur vous (l'interface compilation / déploiement) Si vous ne disposez pas d'une connexion Internet active, il ne démarre pas car il ne peut pas vous connecter à leurs serveurs.

API

CSS, HTML et jQuery est un jeu d'enfant par rapport à cela. Titanium ressemble à tout autre ancienne API graphique, et vous devez définir certaines propriétés pour chaque bouton / champ / etc. Obtenir un mauvais champ est juste facile, se souvenant de toutes les propriétés qui doit être réglé? Avez-vous épeler avec des lettres majuscules au bon endroit? (Car ce n'est pas pris par le compilateur, mais sera considéré comme une erreur d'exécution si vous avez la chance de tester cette partie)

Dans les choses de titane casser tout simplement lorsque vous ajoutez une autre vue sur le dessus d'un contrôle ou cliquez ailleurs dans l'interface graphique.

Documentation

Plusieurs pages API portent le symbole Android, mais ne retournera une valeur NULL lorsque vous essayez de créer le contrôle. Ils ne sont pas simplement disponibles sur la plate-forme Android, malgré les symboles. Parfois, Android est mentionné de ne pas soutenir une méthode particulière, mais toute l'API est manquante.

KitchenSink

L'application de démonstration. Ai-je mentionné qu'il ne compile pas si vous le mettez dans votre dossier de projet Eclipse car le chemin est trop longue? Doit être mis sur votre lecteur C dans le dossier racine. J'utilise actuellement un lien Symbolik (mklink / J ...)

méthodes non documentées

Vous devez propably utiliser des choses comme label.setText ( « Bonjour tout le monde ») pour changer une étiquette fiable, mais ce n'est pas documenté du tout.

Debugging

Titanium.API.info ( 'Les impressions sont la seule façon de debug');

Editing

Les API ne sont pas disponibles dans tout bon format afin que vous ne pouvez pas obtenir le code d'achèvement ordinaire avec l'aide, etc. dans Eclipse. Aptana s'il vous plaît aider!

Matériel

Il semble que le compilateur / outils ne sont pas multithread donc un ordinateur rapide avec un disque dur rapide est un must, comme vous devez faire beaucoup d'essais et d'erreurs. Ai-je mentionné la mauvaise documentation? Vous devez essayer tout ce qu'il ya comme vous ne pouvez pas faire confiance!

Certaines choses positives

  • Open Source
  • Des projets précédents, je l'ai à nouveau moi-même promis jamais à utiliser une source fermée que vous ne pouvez pas simplement arranger les choses simplement en jetant heures et la main-d'œuvre dans ce domaine. Important lorsque vous êtes en retard dans le projet et la nécessité de fournir un délai difficile. Ceci est open source et j'ai pu voir pourquoi les ruptures de la chaîne d'outil et fait réparer aussi bien.

  • Bugdatabase

  • Il est également ouvert. Vous pouvez simplement voir que votre seul et faire une solution de contournement au lieu de 4 heures passées à l'essai et erreur.

  • Communauté

  • Semble être actifs sur leurs forums.

Bugs

  • Titanium 1.4 n'est pas threadsafe . Cela signifie que si vous utilisez des fils (utiliser l'url: la propriété dans un appel createWindow) et le programme comme les fils travaillent et envoyer des événements avec des données avant et en arrière vous rencontrez beaucoup de très, très étrange choses - gestionnaires perdus, perdus fenêtres, trop d'événements, trop peu d'événements, etc., etc. tout cela est en fonction du temps, mettre les lignes de code dans un ordre différent peut se bloquer ou guérir votre application. Ajout d'une fenêtre dans un autre file.js brise votre exécution app.js ... Cela a également trashes datastructures internes en titane, car ils peuvent mettre à jour parfois datastructures internes paralell, une valeur juste en écrasant changé avec autre chose.

Une grande partie des problèmes que je l'ai eu avec du titane vient de mon arrière-plan sur les systèmes en temps réel comme OSE qui prennent en charge des centaines de fils, les événements et le passage de messages. Ceci est censé fonctionner en titane 1.4, mais il n'a tout simplement pas le faire de manière fiable.

  • Javascript (ce qui est nouveau pour moi) meurt en silence sur les erreurs d'exécution. Cela signifie aussi que les petits et les bugs communs, comme un nom de variable faute d'orthographe ou de la lecture dans un pointeur nul ne plante pas quand il devrait donc vous pouvez le déboguer. Au lieu de votre programme parties juste cesser de travailler, par exemple un gestionnaire d'événements, parce que vous avez égaré / misstyped un caractère.

  • Ensuite, nous avons des bugs plus simples en titane, comme certains paramètres ne fonctionnent pas dans les fonctions (ce qui est assez courant sur la plate-forme Android au moins).

  • Trial and Error vitesse du cycle de débogage Après avoir couru Titnium Developer sur plusieurs ordinateurs, j'ai remarqué que le goulot d'étranglement est le disque dur. Un disque SSD sur un ordinateur portable rend le cycle de construction d'environ 3-5 fois plus rapide que sur un disque 4200 tours par minute. Sur un ordinateur de bureau, ayant deux disques en RAID 1 (mode striping) rend la construction d'environ 25 pour cent plus rapide que sur un seul disque avec un processeur un peu plus rapide et il bat aussi l'ordinateur portable de disque SSD.

Résumé

  • D'après les commentaires sur ce sujet, il semble être un combat pour le nombre de plates-formes d'un outil comme celui-ci peut fournir des applications est pour. Le nombre d'API semble être la vente point clé.

transparaît très bien quand vous commencez à l'utiliser. Si vous regardez le bugtracker ouvert, vous voyez que le nombre de bogues ne cesse d'augmenter plus rapidement que le nombre de bogues corrigés. Cela est généralement un signe que les développeurs continuent à ajouter plus de fonctionnalités, plutôt que de se concentrer sur l'obtention du nombre de bugs vers le bas.

En tant que consultant en essayant de livrer plutôt des applications simples à multiplateformes pour un client - Je ne suis pas sûr que c'est plus rapide que de faire le développement d'applications natives sur deux plates-formes. Cela est dû au fait que lorsque vous êtes à vous rapide avec la vitesse sont en titane, mais tout à coup vous regardez vers le bas et trouver le vôtreelfe dans un trou si profond que vous ne savez pas combien d'heures doit être dépensé pour une solution de contournement. Vous ne pouvez pas promettre une certaine fonctionnalité pour un certain délai / temps / coût.

A propos de moi: Python utilise depuis deux ans avec wxPython. (Que l'interface graphique est inconsitent, mais ne rompt jamais comme ça. Il pourrait être moi qui n'ont pas compris le modèle de thread utilisé par Javascript et titane, mais je ne suis pas seul en fonction de leurs forums de discussion ouverts, les objets de l'interface graphique utilisent soudainement le mauvais contexte / pas la mise à jour .. ???) avant que j'ai une formation en programmation C et ASM pour les appareils mobiles.

[modifier - pièce rapportée avec des bugs et ne pas être sûr de fil] [Edit - maintenant avoir travaillé avec elle pendant un mois +, la plupart du temps sur PC, mais certains sur OS X ainsi. Ajouté iPhone et Android double ciblage. Ajouté Trial and Error vitesse du cycle de débogage.]

Le SDK Corona (Ansca Mobile) utilise Lua comme langue de codage. Voir lua.org pour plus sur Lua.

Alors que nous prévoyons d'ajouter une plus grande intégration web et éléments natifs-UI, notre attention a tendance à être sur les applications graphiques intensives telles que le développement du jeu, par opposition aux technologies basées sur le Web. En d'autres termes, nous ne prévoyons pas que les gens à écrire des applications Corona entièrement en Javascript / HTML / CSS.

Je travaille avec du titane pour l'instant plus d'une semaine et se sentir comme je l'ai une bonne idée au sujet de sa faiblesse.

1) Si vous en espérant que vous utilisez le même code sur plusieurs plates-formes bonne chance! Vous verrez quelque chose comme backgroundGradient et étonné jusqu'à ce que vous trouver la version Android ne supporte pas. Ensuite, doivent revenir à l'utilisation d'une image de gradient, pourrait tout aussi bien l'utiliser pour les deux versions pour rendre le code plus facile droit?

2) Beaucoup de comportements étranges, sur le sdk android Titanium vous devez comprendre ce qu'est une fenêtre « lourd » est juste pour obtenir le bouton de retour au travail, ou mieux encore le suivi des événements d'orientation. Ce n'est pas comment la plate-forme Android est vraiment, comment son juste essaie Titanium de faire leur travail API.

3) Votre jeté dans l'obscurité, les choses vont tomber en panne et vous devez commencer à commenter le code et puis quand vous le trouvez, utilisez jamais. Il y a certains bogues évidents, comme l'orientation et sur Android qui Percents ont été un problème depuis plus de six mois.

4) Bugs .... il y a beaucoup de bugs et ils seront signalés, assis pendant des mois, se fixe en quelques jours. Je suis surpris qu'ils envisagent même de libérer une baie noire sdk mobile quand il y a tant d'autres problèmes avec Android.

5) Iphone Titanium contre les moteurs javascript Titanium Android sont complètement différents. Sur la version Android, vous pouvez télécharger des fichiers à distance javascript, inclure et utiliser des bibliothèques comme Mootools, JQuery et ainsi de suite. J'étais dans le ciel quand je trouve cela parce que je ne devais pas garder compiler mon application Android. Le processus d'installation android apk prend tellement de temps! Iphone rien de tout cela est possible, aussi la version iPhone a un moteur beaucoup plus rapide javascript.

Si vous restez loin de beaucoup des parties de l'interface utilisateur native, i.e. utiliser à la place setInterval pour détecter les changements d'orientation, coller des images de gradient, oublier le bouton de retour, construire vos propres animations, oublier tête de la fenêtre, les barres d'outils, et le tableau de bord. Vous pouvez vraiment faire une api qui fonctionne sur les deux qui ne nécessite pas de beaucoup de réécriture. Mais à qui pointe son tout aussi lent comme webapp.

est-il la peine? Après tout la douleur, sa valeur chaque minute. Vous pouvez la logique abstraite et simplement construire différentes pour chaque interface utilisateur plutôt que si elseing partout. Titanium vous permet de faire des applications fluides, qui se sentent rapidement. Vous perdez les puissantes capacités de mise en page de chaque plate-forme, mais si vous pensez simple, les choses peuvent se faire sous une seule langue.

Pourquoi ne pas une application web? Sur le marché d'entrée de gamme des téléphones Android son lent horriblement pour générer un WebView et consomme beaucoup de mémoire que vous pourriez utiliser pour faire une logique plus complexe.

Voilà une version plus récente et une analyse approfondie des Appcelerator et PhoneGap: http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap

Et voici encore plus de détails sur la façon dont ils diffèrent par programme: http://savagelook.com/blog/portfolio / phonegap-is-web-based-Appcelerator-est-pur-javascript

MapKit natif est pris en charge en titane

Faire des widgets HTML5 tha ressembler widgets iphone est une chose, mais ce qui les rend aussi est bien effectuer une autre affaire. Performance des animations html5 (même plaine Voir Transitions), le défilement des listes longues, la réactivité aux gestes se sentir collant et saccadé. Un utilisateur iPhone remarquera la différence.

Il y a aussi quelques différences dans les types de gestes qui sont pris en charge par les différents dispositifs qui se traduit par le code propre à la plateforme et les questions utilisabilité aussi bien.

Je vais rester avec les applications natives pour l'instant je suppose.

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) est très similaire dans l'approche à PhoneGap, mais est le seul cadre avec:

  1. un modèle Voir motif de contrôleur (comme la plupart des cadres web fournissent)
  2. un objet Relational Gestionnaire
  3. Prise en charge pour tous les smartphones populaires (y compris Windows Phone 7)
  4. un service de développement hébergé (build non seulement hébergé): http://rhohub.com
  5. un débogueur et un émulateur SDK moins dans le RhoStudio IDE
  6. Prise en charge des données hors ligne synchronisées

Pour toute personne intéressée en titane je dois dire qu'ils ne sont pas une très bonne documentation certaines classes, les propriétés, les méthodes manquent. Mais beaucoup est « documenté » dans leur exemple d'application de la KitchenSink il est donc pas si mal.

Ma compréhension de PhoneGap est qu'ils fournissent des API Javascript pour la plupart des API iPhone.

Titanium semble plus facile pour un fond de développeur web. Il est un simple fichier XML pour créer une application de base TabView puis tout dans la zone de contenu est contrôlé par HTML / JS. Je sais aussi que Titanium fournit un certain accès javascript à certains des cadres (en particulier d'accès aux informations de localisation, l'ID de téléphone, etc.).

MISE À JOUR: Titane ajouté API Maps dans la version 0.8 de leur cadre.

Vous devriez apprendre objectif c et les applications natives du programme. Ne comptez pas sur ces choses que vous pensez va rendre la vie plus facile. Apple a assuré le plus simple est l'utilisation de leurs outils natifs et la langue. Pour vos 100 lignes de javascript je peux faire la même chose en 3 lignes de code ou pas de code du tout en fonction de l'élément. Regardez quelques tutoriels - si vous comprenez javascript alors objectif c est pas difficile. Contournements sont misérables et la pomme peuvent tirer le bouchon sur vous quand ils le veulent.

Parmi les solutions que vous avez mentionné, aucun d'entre eux semblent vous donner un accès direct au cadre de MapKit introduit dans OS 3.0.

Comme les widgets Google Maps HTML ne sont pas presque aussi bon que MapKit (voir Google Latitude pour un exemple), vous êtes probablement mieux loti développer une application tactile Cocoa native, ou le choix d'une solution que vous pouvez étendre à ajouter l'intégration de MapKit. PhoneGap est extensible de cette manière (il est open-source donc il est par défaut), et quelques-unes des autres solutions pourrait être aussi bien.

edit: Titanium supporte maintenant MapKit

J'ai essayé couronne. Il était bon jusqu'à ce que je découvre qu'il ne supporte pas le streaming audio mp3. Alors, je me suis arrêté là. Je pense que si je veux vraiment être un développeur d'applications iphone, je devrais apprendre obj c. Tout ce que je voulais faire une application qui a une liste de stations de radio et vous cliquez dessus, il commence à jouer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top