Frage

Ich bin ein Web-Entwickler, und ich möchte meine Web-Produkte iPhone bewegen. Eines der Produkte ist wie Google Maps. Anzeigen Karte auf dem Handy-Bildschirm, können Sie die Karte ziehen oder die Größe und einige Informationen anzuzeigen, die wir auf der Karte hinzufügen

Ich weiß, dass es einige Technologien, die Sie HTML, CSS und Javascript zu verwenden, ermöglicht nativen iPhone-Anwendungen zu entwickeln. Ich habe ein paar identifiziert:

Gibt es noch andere, ähnliche Produkte? Was sind die Unterschiede zwischen ihnen? Welche soll ich wählen?

War es hilfreich?

Lösung

ich mit Stackoverflow registrierte nur zum Zweck der meist gestimmt Antwort auf der Kommentierung. Das Schlimme ist, Stackoverflow erlaubt keine neuen Mitglieder um Kommentare zu schreiben. Also muß ich wie eine Antwort diesen Kommentar mehr aussehen lassen.

Rory Blyth Antwort enthält einige gültige Punkte über die beiden Javascript mobilen Frameworks. Allerdings sind seine wichtigsten Punkte falsch. Die Wahrheit ist, dass Titan und PhoneGap ähnlicher sind als andere. Beide aussetzen Handy-Funktionen durch eine Reihe von JavaScript-APIs und die Anwendungslogik (HTML, CSS, JavaScript) werden innerhalb einer nativen WebView Kontrolle.

  1. PhoneGap ist nicht nur eine native Wrapper eines Web-App. Durch die PhoneGap JavaScript-APIs, hat die „Web-App“ Zugriff auf die Handy-Funktionen wie Geolokalisierung, Beschleunigungs-Kamera, Kontakte, Datenbanken, Dateisystem, etc. Grundsätzlich kann jede Funktion, dass das Mobiltelefon SDK bietet kann „überbrückt“, um die Javascript Welt. Auf der anderen Seite, eine normale Web-Anwendung, die auf dem mobilen Web-Browser läuft keinen Zugriff auf die meisten dieser Funktionen (Sicherheit der Hauptgrund zu sein). Daher ist eine PhoneGap App mehr von einer mobilen App als ein Web-App. Sie können sicher PhoneGap verwenden, um einen Web-App zu wickeln, die keine PhoneGap APIs überhaupt verwenden sind, aber das ist nicht das, was PhoneGap für erstellt wurde.

  2. Titan nicht kompiliert Ihr HTML, CSS oder Javascript-Code in "native Bits". Sie werden als Ressourcen an die ausführbare Datei Bündel verpackt, ähnlich wie eine eingebettete Bilddatei. Wenn die Anwendung ausgeführt wird, werden diese Ressourcen in eine UIWebView Steuerung geladen und dort (wie Javascript, nicht nativen Bits, natürlich). Es gibt nicht so etwas wie einen Javascript-to-native-Code (oder zu Objective-C) Compiler. Dies ist die gleiche Art und Weise in PhoneGap als gut gemacht. Vom architektonischen Standpunkt aus sind diese beiden Frameworks sehr ähnlich.

Jetzt sind sie anders? Ja. Zuerst erscheint Titanium mehr funktionsreiche als PhoneGap zu sein, indem mehr Handy-Funktionen zu javascript überbrückt. Am auffälligsten, hat PhoneGap nicht viele (falls vorhanden) nativen UI-Komponenten Javascript aus. Titan, auf der anderen Seite, hat einen umfassenden UI-APIs, die in Javascript aufgerufen werden können, erstellen und alle Arten von nativen UI-Steuerelemente zu steuern. Utilizaing diesen UI-APIs kann ein Titan-App aussehen „native“ als eine PhoneGap App. Zweitens unterstützt PhoneGap mehr Handy-Plattformen als Titan der Fall ist. PhoneGap APIs sind generisch und kann auf verschiedenen Plattformen wie iPhone, Android, Blackberry, Symbian, etc. verwendet werden Titan wird in erster Linie iPhone und Android-Targeting zumindest vorerst. Einige seiner APIs sind plattformspezifische (wie die iPhone UI-APIs). Die Verwendung dieser APIs wird die Cross-Plattform-Fähigkeit Ihrer Anwendung reduzieren.

Also, wenn Sie Ihr Interesse für Ihre Anwendung zu machen, ist es mehr „native“ sucht, ist Titan eine bessere Wahl. Wenn Sie noch einfacher auf eine andere Plattform können „Port“ App möchten, PhoneGap besser sein.

Aktualisiert 8/13/2010: Link zu einer Titan Mitarbeiter Antwort auf Mickys Frage.

Aktualisiert 12/04/2010: Ich beschloss, diesem Beitrag eine jährliche Überprüfung zu geben, ihre Informationen aktuell zu halten. Viele Dinge haben Veränderungen in einem Jahr, das einige der Informationen in der ersten post veraltet.

gemacht

Die größte Veränderung kam aus Titan. Zu Beginn dieses Jahres veröffentlicht Appcelerator Titanium 1.0, die sich drastisch von seinen früheren Versionen vom architektonischen Standpunkt abgewichen. In 1.0 wird die UIWebView Steuerung nicht mehr in Gebrauch. Stattdessen rufen Sie Titanium APIs für alle UI-Funktionen. Diese Änderung bedeutet, ein paar Dinge:

  1. Ihre App UI wird vollständig heimisch. Es gibt keinen mehr Web-UI in Ihrer App seit dem nativen Titanium APIs übernehmen die Kontrolle über alle Ihre UI Bedürfnisse. Titan verdient viel Anerkennung durch Pionierarbeit auf der „Cross-Platform Mutter UI“ Grenze. Es gibt Programmierer, die das Aussehen und das Gefühl von nativen UI bevorzugen aber die offizielle Programmiersprache eine Alternative nicht mögen.

  2. Sie HTML oder CSS nicht in Ihrer Anwendung nutzen können, da die Web-Ansicht ist weg. (Hinweis: Sie können immer noch Web-Ansicht in Titanium erstellen Aber es gibt nur wenige Titanium-Features, die Sie nutzen in der Web-Ansicht nehmen..) Titan Q & A: Was ist mit HTML & CSS passiert

  3. Sie nutzen können, um beliebte JS-Bibliotheken wie JQuery nicht, dass die Existenz eines DOM-Objekt übernehmen. Weiter geht es JavaScript als Codierung Sprache zu verwenden. Aber das ist so ziemlich die einzige Web-Technologie, die Sie nutzen können, wenn Sie Titanium 1.0 als Web-Programmierer kommen.

Titanium Video. Was in Titanium 1.0 neu ist

Nun hat Titanium 1.0 Ihr JavaScript in "native Bits" kompilieren? Nr Appcelerator kam schließlich sauber zu diesem Thema mit diesem Entwickler-Blog: Titanium Guides Projekt:. JS Umwelt wir Programmierer sind echte Menschen als die in der Marketing-Abteilung, nicht wahr? :-)

Fahren Sie fort mit PhoneGap. Es gibt nicht viele neue Dinge über PhoneGap zu sagen. Meine Wahrnehmung ist, dass PhoneGap Entwicklung nicht sehr aktiv war, bis IBM an Bord sprang später in diesem Jahr. Einige Leute argumentieren sogar, dass IBM mehr Code PhoneGap beiträgt als Nitobi ist. Das ist wahr oder nicht, ist es gut zu wissen, dass PhoneGap aktiv entwickelt wird.

PhoneGap sich weiterhin auf Web-Technologien basieren, nämlich HTML, CSS und JavaScript. Es sieht nicht wie PhoneGap keinen Plan hat nativen UI Funktionen JavaScript zu überbrücken, wie Titan tut. Während Web-Benutzeroberfläche immer noch hinter nativen UI auf Leistung und nativen Look and Feel, wird eine solche Lücke schnell geschlossen. Es gibt zwei Trends in Web-Technologien, die in Bezug auf Leistung helle Funktion, um mobilen Web-UI gewährleisten:

  1. JavaScript-Engine von einem Dolmetscher zu einer virtuellen Maschine zu bewegen. JavaScript ist JIT in nativen Code kompiliert für eine schnellere Ausführung. Safari JS Engine SquirrelFish Extreme

  2. Webseite Rendering, sich auf CPU bewegt GPU-Beschleunigung zu verwenden. Grafik-intensive Aufgaben wie Seiten Übergang und 3D-Animation viel glatter mit Hilfe von Hardware-Beschleunigung werden. GPU Accelerated Compositing in Chrome

Solche Verbesserungen, die von Desktop-Browsern entstanden sind, werden schnell auf mobilen Browser ausgeliefert. In der Tat, da iOS 3.2 und Android 2.0, die mobile Web-Ansicht Kontrolle hat viel leistungsfähigeres und HTML5 freundlicher werden. Die Zukunft der mobilen Web so viel versprechend ist, dass es ein großes Kind in die Stadt angezogen hat: JQuery hat vor kurzem angekündigt, seine mobile Web-Framework Mit UI-Gadgets JQuery Mobile-Bereitstellung und PhoneGap Telefonfunktionen bietet sie zwei eine perfekte mobile Web-Plattform meiner Meinung nach schafft kombiniert.

Ich sollte auch Sencha Touch erwähnen als eine andere mobile Web-UI-Gadget Rahmen . Sencha Touch-Version 1.0 wurde vor kurzem unter einem dualen Lizenzmodell veröffentlicht, die GPLv3 enthält. Sencha Touch funktioniert gut mit PhoneGap wie JQuery Mobile unterstützt.

Wenn Sie ein GWT Programmierer (wie mich), sollten Sie GWT Mobil , ein Open-Source-Projekt für die Erstellung von mobilen Web-Anwendungen mit GWT. Es enthält einen PhoneGap GWT-Wrapper, der die Verwendung von PhoneGap in GWT ermöglicht.

Andere Tipps

Von dem, was ich gesammelt habe, sind hier einige Unterschiede zwischen den beiden:

  • PhoneGap erzeugt grundsätzlich nativen Wrapper für was noch Web-Anwendungen . Es spuckt ein WhateverYourPlatformIs Projekt, Sie bauen es, und bereitstellen. Wenn wir reden über das iPhone (das ist, wo ich meine Zeit verbringen), ist es nicht viel erscheinen unterscheidet sich von einer Web-App Launcher erstellt werden (eine Abkürzung, die ihre eigene Springboard Symbol wird, so können Sie es starten wie ( wie ) eine native App). Die „App“ selbst ist noch html / js / etc., Und läuft innerhalb einer gehosteten Browser-Steuerung. Was PhoneGap bietet darüber hinaus eine Brücke zwischen JavaScript und nativer Geräte-APIs. Also, schreiben Sie JavaScript gegen PhoneGap-APIs und PhoneGap macht dann den entsprechenden entsprechenden nativen Aufruf. In dieser Hinsicht ist es ist unterscheidet sich von einer einfachen alten Web-App bereitstellen.

  • Titan Quelle wird auf native Bits zusammengestellt nach unten. Das heißt, Ihre html / js / etc. sind nicht einfach zu einem Projekt gebunden und dann in einem Web-Browser-Steuerelement gehostet wird - sie in native Anwendungen worden ist. Das bedeutet zum Beispiel, dass Ihre App-Schnittstelle wird von nativer UI-Komponenten zusammengesetzt sein. Es gibt Wege, um native Look-and-Feel, ohne eine native App zu haben, aber ... na ja ... was für ein Alptraum, der in der Regel stellt sich heraus zu sein.

Die beiden ähnlich sind, dass Sie alle Ihre Daten mit typischen Web-Technologien schreiben (html / js / css / bla bla bla), und dass Sie Zugriff auf native Funktionen durch benutzerdefinierte JavaScript-APIs erhalten.

Aber noch einmal, PhoneGap apps (PhonGapps Ich weiß nicht ... ist, dass ein blöder Name Es ist einfacher zu sagen? - Ich weiß, dass viel) ihr Leben als Web-Anwendungen starten und ihr Leben als Web-Anwendungen beenden. Auf dem iPhone, Ihre html / js / etc. ist nur innerhalb einer UIWebView Steuerung ausgeführt, und die PhoneGap JavaScript-APIs Ihre js Anrufe zu nativen APIs weitergeleitet werden.

Titan-Apps werden native Anwendungen - sie sind nur Web-Entwickler Tech entwickelt mit

.

Was bedeutet das eigentlich bedeutet

  1. A Titanium App aussieht wie eine "echte" App weil letztlich es ist ein "echter" App.

  2. Eine PhoneGap App wird wie ein Web-App aussieht in einem Browser-Steuerelement gehostet wurde, weil letztlich es ist ein Web-App in einem Browser-Steuerelement gehostet wird.

Welche ist die richtige für Sie?

  • Wenn Sie native Anwendungen mit Web-dev Fähigkeiten schreiben wollen, Titan ist die beste Wahl.

  • Wenn Sie eine App mit Web-dev Fähigkeiten schreiben, die Sie realistisch auf mehreren Plattformen (iPhone, Android, Blackberry und was sonst auch immer sie sich entscheiden, gehören) bereitstellen können, und wenn Sie den Zugriff auf eine Teilmenge von native Plattform-Features (GPS, Beschleunigungssensor, etc.) durch eine einheitliche JavaScript API, PhoneGap ist wahrscheinlich das, was Sie wollen.

Sie könnten fragen: Warum würde ich eine PhoneGapp schreiben will (ich habe beschlossen, den Namen zu verwenden), anstatt eine Web-Anwendung, die auf dem Web gehostet? Kann ich nicht auf noch etwas nativem Gerät verfügt auf diese Weise, haben aber auch die Bequemlichkeit der wahre Web-Deployment, anstatt den Benutzer zu zwingen meine „native“ App herunterladen und installieren?

Die Antwort lautet: Weil Sie Ihre PhoneGapp zum App Store und Kosten für ihn abliefern können. Sie erhalten auch, dass Launcher-Symbol, das es schwieriger für den Benutzer über Ihre App zu vergessen macht (ich bin viel eher über ein Lesezeichen als ein App-Symbol vergessen).

Sie könnten sicherlich für den Zugriff auf Ihren Web-hosted Web-App laden, aber wie viele Menschen wirklich gehen durch den Prozess zu gehen, das zu tun? Mit dem App Store, nehme ich eine App, tippen Sie auf die Schaltfläche „Kaufen“, ein Passwort eingeben, und ich bin fertig. Es installiert. Sekunden später, ich verwende es. Wenn ich jemand anderes einmalige Schnittstelle mobile Web-Transaktion zu bedienen hatte, was wahrscheinlich bedeutet, mit meinem Namen klopfen, Adresse, Telefonnummer, CC-Nummer und andere Dinge, die ich will nicht klopfen, fast wouldn ich sicher‘ gehen t mit ihm durch. Auch ichApple-vertrauen -. Ich bin zuversichtlich, Steve Jobs wird sich meine info nicht anmelden und dann ein paar frechen Zeitschriftenabonnements zu meinem CC für Kicks laden

Wie auch immer, mit Ausnahme der Tatsache, dass Web-Entwickler Tech beteiligt ist, PhoneGap und Titan sind sehr unterschiedlich - bis zu dem Punkt nur oberflächlich vergleichbar zu sein

.

Ich hasse Web-Anwendungen, die durch, und wenn Sie iTunes App Store Bewertungen lesen, werden die Benutzer ziemlich gut sie Spek. Ich werde keine Namen nennen, aber ich habe ein paar „Apps“ auf meinem Handy, das wie Müll aussieht und läuft, und es ist, weil sie Web-Anwendungen sind, die in UIWebView Instanzen gehostet werden. Wenn ich eine Web-App nutzen wollte, würde ich öffne Safari und, wissen Sie, navigieren Sie zu einem. Ich kaufte ein iPhone, weil ich Dinge wollen, die iPhone-y sind. Ich habe kein Problem mit, sagen wir, einen pfiffigen Google Web-App innerhalb Safari, aber ich würde betrogen fühlen, wenn Google nur ein Lesezeichen schlich auf Sprungbrett durch eine Web-App als native präsentiert ein.

Haben Sie jetzt zu gehen. Meine Freundin hat die könnte-you-please-Stop-mit-das-Computer-für-drei-Sekunden auf ihrem Gesicht zu sehen.

Ich bin ein Kurs in Android / iPhone Entwicklung zu nehmen und wir verbrachten 8 Wochen mit Titanium (nicht Vollzeit) (Version war Titanium 1.4.2 und war etwa im November 2010). Hier ist meine Erfahrung.

iPhone Android Dual-Targeting

Auch wenn die API Führer behaupten, dass die Funktionalität sowohl für den Android und iPhone verfügbar ist, ist dies nicht der Fall. Ein großer Teil der Sachen einfach nicht funktionieren auf einer der Plattformen. Einige Dinge anders funktioniert.

Viele der Menschen in der Klasse hat iPhone-Anwendungen getan, und sie können sie nicht ohne große Schreibungen auf Android arbeiten. Ich entwickeln ein einfaches Kinder App Animap (siehe Android Market / Appstor in Schweden) genannt und begann unter Windows zu entwickeln. Nachdem das Android Ziel arbeitet öffnete ich das Projekt auf O X macht es keine Build-Sachen für iPhone zeigen, nur für Android. Sie benötigen ein Dual-Zielprojekt unter OS X starten (Ok, ich die entsprechenden Dateien in ein neues Projekt kopiert). Nächstes Problem - die Animationen nicht funktioniert auf dem iPhone (sie auf Android funktionieren). Die Scroll-Ereignisse nicht funktioniert das gleiche auf dem iPhone. (Das heißt auf Android Sie das untouch Ereignis bekommen, wenn der Benutzer nicht mehr steigt und veröffentlicht ihre Finger vom Bildschirm, dies geschieht nicht auf dem iPhone).

Da dies nicht irgendwo erwähnt wird, müssen Sie basicly Versuch und Irrtum Programmierung auf erste Plattform zu tun, dann auf der anderen Plattform. Durch Versuch und Irrtum meine ich es etwa zwei Tage dauern wird, eine solche einfache App als Animap arbeitet auf der anderen Plattform zu bekommen. Sie werden auch dann, wenn (android) haben müssen ... oder wenn (iphone) ... ganzen Code ...

Download und Setup

Sie müssen die Anweisungen befolgen. Versuchen Sie nicht, Java 64 Bit zu verwenden. Es wird nicht die KitchenSink 1.4.0 Demo-Anwendung kompilieren. (1.3 funktioniert OK!) Sie müssen Dateien direkt auf dem Laufwerk C setzen, so lange Pfadnamen wird das externe Programm nicht empfangen alle Befehlszeilenparameter machen, wenn sie zu lang werden. (Fine für kleine Programme, obwohl) 1/3 der Zeit, stoppt die Werkzeugkette einfach und Sie müssen ‚Start‘ erneut drücken. Dann wird es wahrscheinlich funktionieren ... sehr unzuverlässig. Der Simulator wird beim Start nicht gefunden werden und dann müssen Sie einfach von adb.exe töten mit Strg + Alt + Entf und versuchen Sie es erneut.

Netzwerkverbindung

Auf einem Wi-Fi-Netzwerk, das Sie manchmal verliert die Live-Verbindung und Titan stürzt auf Sie (die Kompilierung / deploy-Schnittstelle) Wenn Sie nicht über eine funktionierende Internetverbindung haben wird es nicht gestartet werden, da es nicht Sie zu ihren Servern anmelden können.

API

CSS, HTML und jQuery ist ein Kinderspiel im Vergleich zu diesem. Titan ähnelt anderen alten GUI-API, und Sie müssen einige Eigenschaften für jede einzelne Taste / Feld / etc einzustellen. Erste ein Feld falsch ist nur zu leicht, erinnert alle Eigenschaften, die eingestellt werden muss? Haben Sie buchstabieren es mit Großbuchstaben an der richtigen Stelle? (Da dies nicht vom Compiler abgefangen wird, wird aber als Laufzeitfehler zu sehen, wenn Sie Glück haben, dass ein Teil zu testen)

In Titanium Dingen einfach brechen, wenn Sie eine andere Ansicht auf ein Steuerelement hinzufügen oder irgendwo anders in der GUI klicken.

Dokumentation

Mehrere API-Seiten tragen das Android-Symbol, sondern nur eine Null zurück, wenn Sie versuchen, das Steuerelement zu erstellen. Sie sind nicht nur auf der Android-Plattform trotz der Symbole. Manchmal ist Android erwähnt nicht eine bestimmte Methode zu unterstützen, aber dann ist die ganze API fehlt.

KitchenSink

Die Demo-Anwendung. Habe ich erwähnt, es nicht kompilieren, wenn Sie es in Ihrem Eclipse-Projekt-Ordner abgelegt, weil der Pfad zu lang wird? Muss auf dem Laufwerk C: in dem Stammordner gestellt werden. Ich verwende derzeit eine symbolik Link (mklink / J ...)

Undocumented Methoden

Sie müssen propably Dinge wie label.setText ( ‚Hallo Welt‘) verwenden, um ein Etikett zuverlässig zu ändern, aber dies ist nicht dokumentiert.

Debuggen

Titanium.API.info ( 'Ausdrucke sind die einzige Möglichkeit, zu debuggen');

Editing

Die APIs sind in jedes guten Format nicht zur Verfügung, so dass Sie keine gewöhnliche Code-Completion mit Hilfe usw. in Eclipse bekommen. Aptana bitte helfen Sie!

Hardware

Es scheint, dass der Compiler / Tools nicht so ein schneller Computer mit einer schnellen Festplatte multithreaded sind, ist ein Muss, da man viel Trial & Error tun müssen. Habe ich erwähnt, die schlechte Dokumentation? Sie müssen alles versuchen, da draußen, wie Sie es nicht vertrauen können!

Einige positive Dinge

  • Open Source
  • Aus früheren Projekten, die ich versprochen habe mich nie geschlossen Quelle wieder zu verwenden, wie Sie können nicht einfach Dinge reparieren nur von Stunden und Arbeitskraft auf sie zu werfen. Wichtig, wenn Sie im Projekt spät und müssen für eine harte Frist liefern. Dies ist Open Source und ich in der Lage gewesen, warum die Werkzeugkette bricht um zu sehen, und es ist eigentlich auch zu beheben.

  • Bugdatabase

  • Es ist auch offen. sehen Sie können einfach, dass Ihr nicht allein und tun eine Abhilfe statt weitere 4 Stunden damit verbracht, auf Versuch und Irrtum.

  • Gemeinschaft

  • Es scheint auf ihren Foren aktiv zu sein.

Bugs

  • Titanium 1.4 ist nicht THREAD . Das heißt, wenn Sie die Verwendung von Threads (verwenden Sie die URL: Eigenschaft in einem create Anruf) machen und Programm wie die Themen arbeiten und senden Ereignisse mit Daten hin und her Sie laufen in eine Menge sehr, sehr seltsame Sachen - verlorene Handler, verloren Dieses Fenster, zu viele Ereignisse, zu wenige Veranstaltungen, etc. etc. ist alles abhängig vom Zeitpunkt, um die Zeilen von Code in einer anderen Reihenfolge setzen könnte Ihre Anwendung abstürzen oder heilen. Hinzufügen eines Fenster in einem anderen file.js bricht Ihre app.js Ausführung ... Diese trashes auch interne Datenstrukturen in Titan, wie sie manchmal interne Datenstrukturen in paralell aktualisieren, einen gerade geänderten Wert mit etwas überschreiben sonst.

Ein großer Teil der Probleme, die ich mit Titan gehabt haben kommt von meinem Hintergrund auf Echtzeit-Systemen wie OSE, die Hunderte von Themen, Ereignisse und Nachrichten unterstützen vorbei. Dies sollte in Titanium 1.4 arbeiten, aber es funktioniert einfach nicht zuverlässig tun.

  • Javascript (das ist neu für mich) stirbt leise auf Laufzeitfehler. Das bedeutet auch, dass kleine und gemeinsame Fehler, wie falsche Schreibweise einen Variablennamen oder in einem Null-Pointer-Lesen nicht abstürzt, wenn es sollte, so können Sie es debuggen. Stattdessen Teile des Programms stoppen gerade arbeiten, zum Beispiel eines Eventhandler, da Sie fehl am Platz / ein Zeichen misstyped.

  • Dann haben wir mehr einfache Fehler in Titan, wie einige Parameter nicht in den Funktionen arbeiten (die auf der Android-Plattform mindestens durchaus üblich ist).

  • Trial and Error Debug-Taktgeschwindigkeit laufen Titnium Entwickler auf mehreren Computern zu haben, bemerkte ich, dass der Engpass die Festplatte ist. Ein SSD-Laufwerk auf einem Laptop macht den Build-Zyklus etwa 3-5 mal schneller als auf einem 4200 rpm Laufwerk. Auf einem Desktop, in RAID Dual-Laufwerke mit 1 (Striping Modus) macht den Build etwa 25 Prozent schneller als auf einem einzigen Laufwerk mit einer etwas schnelleren CPU und es schlägt auch die SSD-Laufwerk Laptop.

Zusammenfassung

  • Aus den Kommentaren zu diesem Thema scheint es für die Anzahl von Plattformen ein Werkzeug, wie dies ein Kampf sein kann für App liefern. Die Anzahl der API scheint der Schlüssel Verkaufsargument zu sein.

Dies scheint durch sehr viel, wenn Sie es benutzen. Wenn Sie an dem offenen Bugtracker betrachten, sehen Sie, dass die Anzahl der Fehler immer wieder als die Anzahl der behobenen Fehler schneller zu erhöhen. Dies ist in der Regel ein Zeichen dafür, dass die Entwickler halten mehr Funktionalität hinzufügen, anstatt sich darauf, die Anzahl der Fehler nach unten.

Als Berater eines Kunden zu liefern, eher einfache Anwendungen zu mehr Plattformen für den Versuch - ich bin nicht sicher, ob dies tatsächlich schneller als tun native App Entwicklung auf zwei Plattformen. Dies ist aufgrund der Tatsache, dass, wenn Sie sind auf Sie zu beschleunigen sind schnell mit Titan, aber dann plötzlich schauen Sie nach unten und finden Sie IhrElf in einem Loch so tief Sie wissen nicht, wie viele Stunden müssen für dieses Problem zu umgehen ausgegeben werden. Sie können nicht einfach eine bestimmte Funktionalität für eine bestimmte Frist / Zeit / Kosten versprechen.

über mich: benutze Python für zwei Jahre mit wxPython. (Das GUI ist inconsitent, bricht aber nie so. Es könnte mir sein, dass nicht das Threading-Modell von Javascript und Titan verwendet verstanden hat, aber ich bin nicht allein nach ihren offenen Diskussionsforen, GUI-Objekte werden den falschen Kontext plötzlich mit / nicht aktualisiert .. ???) vor, dass ich einen Hintergrund in C und ASM-Programmierung für mobile Geräte haben.

[Bearbeiten - added Teil mit Bugs und ist Thread-sicher nicht] [Bearbeiten - jetzt mit ihm für einen Monat +, vor allem auf dem PC, aber einige auf OS X als auch gearbeitet. Hinzugefügt iPhone und Android Dual-Targeting. Added Trial and Error Debug-Taktgeschwindigkeit.]

Das Corona SDK (Ansca Mobile) verwendet Lua als Codierung Sprache. Siehe lua.org für mehr über Lua.

Während wir weitere Web-Integration und Native-UI-Elemente hinzufügen möchten, unser Fokus liegt eher auf grafikintensive Anwendungen sein, wie zum Beispiel der Entwicklung von Spielen, im Gegensatz zu Web-basierten Technologien. Mit anderen Worten, stellen wir uns Menschen Corona nicht apps komplett in Javascript / HTML / CSS zu schreiben.

Ich habe über eine Woche lang mit Titan gearbeitet jetzt und fühle mich wie ich ein gutes Gefühl über ihre Schwäche haben.

1) Wenn Sie Sie den gleichen Code auf mehreren Plattformen viel Glück verwenden gehofft! Sie werden so etwas wie backgroundGradient sehen und staunen, bis Sie Android-Version herausfinden, nicht unterstützt wird. Dann zurückkehren ein Gradienten Bild zu verwenden, könnte genauso gut verwendet es für beiden Versionen des Code leichter richtig zu machen?

2) Viele seltsame Verhalten, auf dem Titan android sdk müssen Sie verstehen, was ein „schweres“ Fenster nur ist die Zurück-Taste, um zu arbeiten, oder sogar eine bessere Orientierung Ereignis-Tracking. Dies ist nicht, wie die Android-Plattform ist wirklich, es ist nur, wie Titan versucht, ihre API Arbeit zu machen.

3) Ihr geworfen in der Dunkelheit, werden die Dinge abstürzen und Sie müssen anfangen, Code zu kommentieren und dann, wenn Sie es finden, es nie verwenden. Es gibt bestimmte offensichtliche Fehler, wie Orientierung und Prozent auf Android, die ein Problem für mehr als sechs Monate gewesen sein.

4) Bugs .... es gibt eine Menge von Fehlern sind, und sie werden gemeldet werden, sitzen seit Monaten, erhalten in wenigen Tagen behoben. Ich bin überrascht, dass sie sogar eine schwarze Beere Mobil sdk freizugeben planen, wenn es so viele andere Probleme mit Android sind.

5) Titan Iphone gegen Titan Android Javascript-Motoren sind völlig verschieden. Auf Android-Version können Sie Remote-Javascript-Dateien herunterladen, enthalten und verwenden Bibliotheken wie Mootools, jquery und so weiter. Ich war im Himmel, als ich das herausfand, weil ich nicht meinen Android-App zu halten habe kompilieren. Der Androide apk Installationsvorgang dauert so lange! Iphone nichts davon ist möglich, auch die iPhone-Version eine viel schnellere JavaScript-Engine hat.

Wenn Sie bleiben weg von einer Menge der nativen UI Teile, das heißt, statt setInterval verwenden Orientierungsänderungen zu erfassen, mit Gradientenbildern kleben, vergessen Sie die Zurück-Taste, bauen Sie Ihre eigenen Animationen, vergessen Fenster Header, Symbolleisten und Armaturenbrett. Sie können wirklich eine api machen, die auf beiden Werken, die nicht von Umschreiben des Loses erfordert. Aber das zeigt seine ebenso träge als Webapp.

So ist es das wert? Nach all dem Schmerz, seine jede Minute wert. Sie können die Logik abstrakt und nur unterschiedliche UI für jede bauen eher dann, wenn überall elseing. Titanium können Sie Flüssigkeitsanwendungen machen, die schnell zu fühlen. Sie verlieren die leistungsfähige Layout Fähigkeiten der einzelnen Plattform aber wenn man einfach denken, können die Dinge in einer einzigen Sprache erledigen.

Warum nicht ein Web-App? Auf Einstiegs Markt Android-Handys seine schrecklich langsam eine Webansicht und verbraucht viel Speicher erzeugen Sie komplexere Logik zu tun verwenden könnte.

Hier ist eine neuere und eingehende Analyse von Appcelerator und PhoneGap: http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap

Und hier ist noch mehr Details darüber, wie sie sich unterscheiden programmatisch: http://savagelook.com/blog/portfolio / phonegap-is-web-based-Appcelerator-is-pure-javascript

nativen MapKit wird in Titanium unterstützt

Erstellen HTML5-Widgets tha wie iphone Widgets aussehen ist eine Sache, aber sie gleich gut ist eine ganz andere Sache zu machen. Performance von html5-Animationen (auch der normalen Ansicht Transitions), Scrollen lange Listen, Ansprechbarkeit auf Gesten fühlen klebrig und ruckelt. Ein iPhone-Nutzer werden den Unterschied bemerken.

Es gibt auch einige Unterschiede in den Arten von Gesten, die von verschiedenen Geräten unterstützt werden, die auch in plattformspezifischen Code und Usability-Probleme führen.

ich mit nativen Apps bleiben werde jetzt denke ich.

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) ist sehr ähnlich in Ansatz zu PhoneGap, ist aber der einzige Rahmen mit:

  1. Model-View-Controller-Muster (wie die meisten Web-Frameworks)
  2. ein Object Relational-Manager
  3. Unterstützung für alle gängigen Smartphones (einschließlich Windows Phone 7)
  4. eine gehostete Entwicklungsdienst (nicht nur gehostete Build): http://rhohub.com
  5. ein voller Debugger und SDK-Emulator weniger in dem RhoStudio IDE
  6. Unterstützung für synchronisierte Offline-Daten

Für jeden, der sich in Titanium muss ich sagen, dass sie nicht über eine sehr gute Dokumentation einige Klassen, Eigenschaften fehlen Methoden. Aber viel wird „dokumentiert“ in ihrer Stichprobe App die KitchenSink so ist es nicht so schlimm ist.

Mein Verständnis von PhoneGap ist, dass sie Javascript-APIs zu viel von dem iPhone-APIs bieten.

Titan scheint einfacher für Web-Entwickler Hintergrund. Es ist eine einfache XML-Datei, die eine grundlegende TabView Anwendung und dann alles im Content-Bereich erstellen wird durch HTML / JS gesteuert. Ich weiß auch, dass Titan einigen Javascript Zugriff auf einige der Frameworks tut bieten (insbesondere Zugang zu Standortinformationen, Telefonnummer usw.).

UPDATE: Titan hinzugefügt Maps API in Version 0.8 ihres Rahmens.

Sie sollten lernen, Objective-C und Programm native Anwendungen. Verlassen Sie sich nicht auf diese Dinge, die Sie denken, wird das Leben leichter machen. Apple hat dafür gesorgt, der einfachste Weg, ihre nativen Tools und Sprache verwenden. Für Ihre 100 Zeilen Javascript, kann ich das gleiche in 3 Zeilen Code tun oder kein Code überhaupt je nach Elemente. einige Tutorials anschauen - wenn Sie Javascript, dann Objective C ist nicht schwer zu verstehen. Abhilfen sind miserabel und Apfel kann den Stecker ziehen auf Sie, wann immer sie wollen.

Von den Lösungen, die Sie erwähnt, keiner von ihnen scheinen Sie einen direkten Zugang zum MapKit Rahmen in OS 3.0 eingeführt zu geben.

Da die Google Maps HTML-Widgets sind nicht annähernd so gut wie MapKit (siehe Google Latitude für ein Beispiel), Sie sind wahrscheinlich am besten aus einer native Cocoa Touch-Anwendung zu entwickeln, oder die Wahl eine Lösung, die Sie erweitern können MapKit Integration hinzuzufügen. PhoneGap ist erweiterbar auf diese Weise (es ist Open-Source, so dass es standardmäßig ist), und einige der anderen Lösungen könnten genauso gut sein.

edit: Titan hat jetzt Unterstützung für MapKit

Ich habe versucht Corona habe. Es war gut, bis ich entdeckte es nicht Streaming-MP3-Audio unterstützt. Also hörte ich auf recht. Ich denke, wenn ich obj c ich ein iphone app Entwickler möchte sein sollte wirklich lernen. Alles, was ich wollte, eine App machen, die eine Liste von Radiosendern hat und Sie auf sie klicken, es zu spielen beginnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top