Verwenden von Phonegap für die native Anwendungsentwicklung [geschlossen]


97

Ich bin kürzlich auf Phonegap gestoßen . Hat jemand von euch es versucht? Es ist ein unglaubliches Tool, das behauptet, dass Entwickler HTML 5-basierte Frameworks wie Sencha Touch und Jquery verwenden können, während sie gleichzeitig auf native Funktionen auf dem Telefon zugreifen können. Auch der Code ist mit etwas Aufwand von Android auf Iphone portierbar. Bevor ich mich darauf einlasse, möchte ich wissen, welche Erfahrungen das Forum mit Phonegap gemacht hat. Was sind die Schwachpunkte und ist es wirklich skalierbar für die Anwendungsentwicklung auf Unternehmensebene?

Antworten:


95

Ich habe einige Anwendungen mit PhoneGap erstellt und für das, was es bietet, ist es großartig. Es gibt ein paar kurze Notizen, auf die ich hinweisen möchte, die Ihnen helfen könnten.

Disable device-based features you're not using Die Beschleunigungsmesser- und Geolokalisierungsfunktionen sind standardmäßig aktiviert. Wenn Sie sie nicht verwenden, würde ich sie deaktivieren, da Ihre App schneller geladen (initialisiert) und reibungsloser ausgeführt wird.

onDeviceReady- Dies ist die Methode, die aufgerufen wird, sobald Phonegap geladen und bereit ist. $ (document) .ready oder was auch immer Sie gewohnt sind, trifft hier nicht wirklich zu - es sei denn, Sie machen nur Interface / fest codiertes HTML-Zeug. Wenn Sie mit iPhone-Funktionen wie GeoLocation interagieren, müssen Sie alles tun, nachdem onDeviceReady aufgerufen wurde.

Pick a UI/library Es gibt eine Vielzahl von Optionen für die Benutzeroberfläche / Bibliotheken, jquery-mobile, sencha touch, jqtouch usw. Diese bieten jeweils einen einzigartigen Ansatz und Funktionsumfang. Recherchiere und benutze eine, aber vermeide das Kombinieren. Weitere Optionen und Tools finden Sie hier: http://www.phonegap.com/tool (Link aktualisiert)

Also, more on just mobile development in general, with PhoneGapWenn Sie Apps erstellen möchten, die über den Android Market und den iPhone App Store vertrieben werden, würde ich deren ausführliche Listen lesen, um Richtlinien für die Entwicklung Ihrer App zu erhalten. Im obigen Tool-Link gibt es beispielsweise ein "Tool / Plugin" namens Easy APNS - dies ist zwar für Android nützlich - und auf dem iPhone technisch machbar. Es verstößt jedoch gegen die Entwicklungsvereinbarung, da angegeben wird, dass Sie die Apple-Benachrichtigung verwenden müssen Netzwerk usw. Dies ist nur ein Beispiel, aber wenn Sie sich diese Dinge ansehen, ersparen Sie sich viele Kopfschmerzen, wenn dies Ihr Endziel ist.

Alles in allem eignet es sich hervorragend für leichte Apps, insbesondere wenn Sie einen Webentwicklungshintergrund haben. LocalStorage, GeoLocation usw. funktionieren sehr gut. Ich hoffe das hilft ein wenig ... und habe das Gefühl, Fragen zu stellen.

Zusätzliche Bearbeitung:

Ich denke wirklich, es kommt darauf an, was Sie tun wollen und was Sie wissen, wie man es macht. Matt wies darauf hin, dass die Entwicklung nativer Apps für iOS usw. besser ist. Ja, wenn Sie die Zeit und das Wissen haben, dies zu lernen, ist native natürlich besser. PhoneGap wurde jedoch für Webentwickler entwickelt, die ihre vorhandenen Fähigkeiten nutzen und Apps erstellen können. Mit PhoneGap können Sie außerdem schnell Apps für iOS, Android, Symbian, Palm und Blackberry erstellen. Mit geringfügigen Anpassungen an Ihrer Codebasis für jede.


2
Es scheint, dass Entwickler auf Phonegap gespalten sind.
SaKet

8
Wenn Sie am Ende des Tages Zeit und Geld haben, um die verschiedenen Sprachen zu lernen, um native Apps für Android und iOS zu erstellen - dann tun Sie das auf jeden Fall :) Aber für die meisten von uns verwenden Sie das, was wir wissen, um Apps zu erstellen, die ausgeführt werden wirklich gut auf mehreren Geräten, ist ein Kinderspiel.
TNC

easyapns ist nur für die iPhone-Benachrichtigung (nicht für Android) und verwendet das Apple-Benachrichtigungsnetzwerk. Sie sind sich nicht sicher, woher Sie die Idee haben, dass es gegen die Entwicklervereinbarung verstößt.
Travelling_Monk

nette Erklärung .. Danke :)
Mrunal

Ein guter Debugger ist dein bester Freund. Überprüfen Sie dies, um iOS remote zu debuggen: stackoverflow.com/questions/7242997/…
JoshuaDavid

52

Hier sind die besten Leistungshandbücher, die ich für PhoneGap gelesen habe ... Es gibt viel zu beachten, um sicherzustellen, dass Sie eine solide, stabile Leistung haben ... aber Sie können alles an nur einem Abend des Lesens abholen.

Hier sind die besten Nuggets:

Tipps zur Leistung von PhoneGap / Mobile Web

Neue Funktionen aktivieren

Die Architektur

Architektur Ihrer App in Ext JS 4: http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2


1
Tolle Sammlung von Dokumentationen. Wirklich hilfreich, danke :)
Mrunal

29

Bevor ich meine Meinung zu Phonegap zum Ausdruck bringe, muss ich einen kleinen Haftungsausschluss herausgeben, der besagt, dass ich keineswegs ein Webentwickler bin. Für mich ist das Schreiben von JavaScript und CSS wie das Ziehen von Zähnen. Trotzdem mag ich Phonegap nicht.

Es gibt einige sehr ansprechende Aspekte des Frameworks, hauptsächlich den Aufruf "Write-Once-Run-Anywere" und den "I-Don't-Have-To-Learn-Objective-C?" Beschwerde. Das Framework kann Ihnen sogar Zugriff auf einige Hardwarefunktionen wie den Beschleunigungsmesser geben. All dies gilt bis zu einem gewissen Grad.

Trotzdem wird keine der großartigen iOS-Apps mit einem plattformübergreifenden Framework erstellt. Es gibt so viele subtile und elegante Benutzeroberflächeninteraktionen, die von den nativen UIKit-Steuerelementen für Sie ausgeführt werden, dass viele Benutzer und Entwickler sie für selbstverständlich halten, bis sie fehlen, wie z. B. unglaublich detaillierte Ansichtsanimationskurven und nicht vorhandene Bildlauf-Bounces in der Webansicht-basierten Benutzeroberfläche. Sie könnten sich die Mühe machen, sie perfekt zu reproduzieren, aber für diese Zeitinvestition, warum nicht einfach einheimisch werden?

Ein zweiter zu beachtender Punkt ist, dass die Support-Community für von Phonegap erstellte iOS-Anwendungen drastisch kleiner ist als für nativ entwickelte Anwendungen. Wenn Sie sich bei Projekten auf die Community verlassen, sollten Sie auch eine Pause einlegen.

Am Ende kommt es auf die Qualität der Erfahrung an, die Sie liefern möchten. Die Obergrenze ist bei Phonegap niedriger. Wenn Sie bereit sind, eine weniger als hervorragende Benutzererfahrung im Austausch für kürzere Entwicklungszeiten und erhöhte Portabilität zu akzeptieren, ist dies ein sehr praktikables Framework.

Marco Arment und Dan Benjamin haben dieses Thema kürzlich als Subtext für alle Interessierten diskutiert. Sie können es hier anhören .


5
+1 Großartiger Punkt für die Größe der Community.
David Tang

5
+1 Großartiger Punkt für die Benutzererfahrung. In iOS ist das wirklich wichtig.

1
Sie können dieselbe Benutzererfahrung auch in Phonegap erstellen. Ich denke nicht, dass es nur um das Lernziel geht. C. Da andere mobile Betriebssysteme immer beliebter werden: Androi zeigt nun, was mit Windows Mobile und Firefox passiert. Die plattformübergreifende Lösung ist DIE Lösung, wenn Sie nicht auf den Marktanteil von x% beschränkt sein möchten, den iOS dann haben wird.
memical

1
@memical, das Facebook-Entwicklerteam würde Ihnen zum einen nicht zustimmen. Ich sage nicht, dass es aus Sicht der Marktabdeckung keinen Sinn ergibt, ich sage, dass es nicht so performant ist wie native. Trotz allem, was Sie sagen, ist das eine Tatsache.
Matt Wilding

4

Das Installationsverfahren umfasst eine Reihe von Paketen (Java, Apache Ant, Ruby, iOS SDK, Android SDK und PhoneGap selbst), die alle korrekt installiert und eingerichtet werden müssen. Dies kann eine große Anstrengung sein. Um fair zu sein, haben sie etwas namens PhoneGap Build in der Beta, das dies viel einfacher machen sollte.

Wir verwenden es mit NS Basic / App Studio, um Apps zu erstellen, die für App Stores geeignet sind.


PhoneGap Build befindet sich noch ein Jahr später in der Beta-Phase, mehr als sechs Monate nachdem Adobe den ursprünglichen Entwickler Nitobi gekauft hat.
DOK

2

Wenn Sie weder ein Spiel noch ein Widget erstellen, sondern nur eine gut aussehende App, dann ist Phonegap Ihre Wahl.

Aber Sie sollten vorsichtig mit Ihrem JS sein, nichts in JS tun, zum Beispiel, wenn Sie eine Animation machen möchten, vermeiden Sie es, einen Timer mit kleinen Intervallen (z. B. 100 ms) einzustellen, vermeiden Sie Abfragen und ähnliche Animationen. Anstatt beispielsweise das Überblenden zu animieren, indem Sie einen Kurzzeit-Timer einstellen, der die Deckkraft an jedem Punkt Schritt für Schritt verringert (so funktioniert jquery fade), sollten Sie CSS3-Übergänge von Deckkraft 1 zu Deckkraft 0 verwenden.

Mein Rat ist, mit so etwas wie zeptojs.com zu gehen, schließlich läuft Phonegap nicht ie6 :-)

Sehen Sie sich ein Tutorial an, wie Sie Ihr JS leichter machen können

http://bcksp.blogspot.com/


Eigentlich können Sie jetzt auch Spiele bauen
memical

1

Wenn Sie keine der Hardwarefunktionen oder -leistungen benötigen, die über HTML5 und Phonegap hinausgehen, ist eine gekapselte Web-App (plus eingeschränkter Zugriff auf andere Funktionen) eine großartige Lösung.

Viele Unternehmen stellen umfangreiche Webanwendungen bereit. Mit Phonegap (oder nur einem einfachen Webansicht-Steuerelement mit eingebettetem Inhalt) können Sie diese Webanwendungen offline ausführen (außer natürlich für alle erforderlichen Online-Daten).


0

Ein "Schmerz", der bei der Bereitstellung zwischen mehreren verschiedenen Geräten nicht erwähnt wird: Je mehr Geräte, desto größer die Lernkurve. Um mit PhoneGap auf iOS-Geräten bereitzustellen, müssen Sie die Grundlagen von Xcode auf einem Mac erlernen. Für die Bereitstellung auf Android müssen Sie Eclipse, das Android SDK usw. installieren und lernen. Die anderen Plattformen erfordern die Verwendung eigener SDKs. Das Erlernen von rudimentärem Xcode, Javascript und Java hilft mir, Fehler und die allgemeine Syntax zu verstehen.

"Einmal erstellen, überall bereitstellen" lässt viele Schritte aus!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.