The gap between PhoneGap and Apache Cordova

Im Zuge von Mobile Apps wird oft von WebApps, native Apps und hybriden Apps gesprochen. Dabei fallen auch immer öfters die Stichworte PhoneGap oder Apache Cordova. In diesem Blogpost will ich die Begriffe PhoneGap und Apache Cordova erklären.

phonegap-cordova-logo

 

Was ist der Unterschied zwischen PhoneGap und Apache Cordova?

Kurz und knapp gesagt – PhoneGap ist eine Apache Cordova Distribution.

Geschichte

PhoneGap wurde als Open Source Framework von der Firma Nitobi Software entwickelt um Webentwicklern die Möglichkeit zu geben via JavaScript auf Funktionen vom mobilen Betriebssystem zu zugreifen.

Im Jahre 2011 wurde Nitobi Software von Adobe Systems aufgekauft und von Adobe vertrieben. Im selben Jahr wurde PhoneGap in die Apache Software Foundation aufgenommen und seither als eigenes Open Source Projekt unter dem Namen Apache Cordova weiter entwickelt.

Wer bei der weiter Entwicklung von PhoneGap weiterhelfen will, der entwickelt heute nicht mehr direkt am Quellcode von PhoneGap, sondern am Quellcode von Apache Cordova. Wenn Adobe eine neue Version von PhoneGap auf den Markt bringt, dann wird der Quellcode von Apache Cordova verwendet und ein Build mit den Funktionen, die Adobe publizieren will, erstellt. Adobe hat auch die Möglichkeit eigene Funktionen hinzu zu fügen, welche bei Apache Cordova nicht implementiert sind. Stand heute entspricht der Apache Cordova Build 1-zu-1 dem PhoneGap Build (siehe hier). Der einzige unterschied ist der Name.

Was heisst das jetzt genau für Entwickler?

Von Linux gibt es diverse Distributionen (Ubuntu, Debian, RedHat, Suse, etc.). Wer Linux einsetzen will, der sollte seine Distribution für seinen UseCase auswählen. Bei Apache Cordova ist dies heute (noch) nicht der Fall. Zwar setzte z.B. Facebook oder Salesforce auf eigene Distributionen, doch gibt es von Apache Cordova nur eine bekannte Distribution: Adobe PhoneGap.

Das heisst: als Entwickler nutzen wir entweder eine PhoneGap Version von Adobe oder wir verwenden eine den Quellcode von Apache Cordova und erstellen unsere eigene Distribution.

Funktionsumfang von PhoneGap

  • Accelerometer: Möglichkeit zum reagieren auf Gerätebewegungen.
  • Camera:  Zugriff auf die Standardkamera des Geräts.
  • Capture: Möglichkeit Audio, Bild oder Video aufzunehmen.
  • Compass: Zugriff auf den Kompass.
  • Connection: Erlaubt den Zugriff auf Informationen über WiFi- und Mobilefunkt-Netzwerk.
  • Contacts: Ermöglicht den Zugriff auf Geräte-Kontakte.
  • Device: Ermöglicht den Zugriff auf Geräteinformationen zu Hardware und Software.
  • Events: Cordova Lifecylce Events.
  • File: Ermöglicht das Lesen, das Schreiben und das Navigieren durch das Geräte-Filesystem, basierend auf dem W3C File API.
  • Geolocation: Ermöglicht die Lokalisierung mit Hilfe des Geräte Sensors (GPS und/oder WiFi).
  • In-AppBrowser: Der In-AppBrowser ist ein Web Browser, welcher vom Gerät zu Verfügung gestellt wird.
  • Media: Möglichkeit zum Aufzeichnen und Abspielen von Audio-Dateien auf dem Gerät.
  • Notification: Erlaubt das Absetzen von visuellen, hörbaren und taktilen Geräte-Nachrichten.
  • Splashscreen: Erlaubt das Anzeigen oder Verbergen des App-Splash-Screens.
  • Storage: Ermöglicht den Zugriff auf den Gerätespeicher.
Unterstützte Plattformen

Unterstützte Plattformen: iOS, Android, Windows Phone, Blackberry, Symbian, bada, webOS, Tizen.

Aufbau eines PhoneGap Apps

Wer eine PhoneGap App programmiert, der muss in der Regel praktisch keine Kenntnisse von nativer Software-Entwicklung haben.

Das App-Layout wird komplett in HTML5 und CSS umgesetzt. Die Logik wird in JavaScript geschrieben. Anschliessend wird das Paket in ein App-Bundle für jede vorgesehene Plattform gepackt und kann auf dem entsprechenden Markplatz veröffentlicht werden.

Wie man ein PhoneGap App in eine App-Bundle packt, ist sehr gut Dokumentiert.

Kleiner Exkurs – Erstellen eines Kontakts im Geräte Adressbuch.

Quelle: http://docs.phonegap.com/en/3.0.0/cordova_contacts_contacts.md.html#Contacts

Quelle: http://docs.phonegap.com/en/3.0.0/cordova_contacts_contacts.md.html#Contacts

Problem und Lösung: Source Verwaltung für mehrere Plattformen mit PhoneGap Build

Wie bereits oben erwähnt muss man für jede Plattform eine App-Bundle erstellen. Für ein iOS App erstellt man ein iOS-Projekt, für Android erstellt man ein Android-Projekt usw. Es kann sehr aufwändig sein, wenn man kleine Änderungen am Code immer in jedem Projekt nachziehen muss. Dafür stellt Adobe nun einen kostenpflichtigen Service bereit um dieses Problem zu lösen: PhoneGap Build.

Quelle: http://build.phonegap.com

Quelle: http://build.phonegap.com

Als Entwickler stellt man die Source-Dateien (HTML, CSS und JavaScript) in einem Git-Repository zu Verfügung und erhält als Resultat das begehrte App-Bundle für alle gewünschten Plattformen.

Abgrenzung

Um Missverständnisse aus dem Weg zu räumen, will ich noch klar abgrenzen was PhoneGap nicht kann. PhoneGap ist nicht dazu gemacht, coole Animationen oder fancy UI Komponenten zu Verfügung zu stellen. Es fungiert einzig und allein als Schnittstelle zwischen den Geräte-Treibern und der HTML5 App.

Wer fertige UI Komponenten verwenden will, der muss diese entweder selber programmieren oder auf dafür geeignete Frameworks zurück greifen. Davon gibt es mittlerweile haufenweise. (Sencha Touch, jQuery Mobile, MGWT, Kendo UI, etc.)

Erfahrungen bei Namics 

Über Erfahrungen mit PhoneGap hat Tobias Baube bereits einen sehr guten Artikel geschrieben.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>