Mobile Crossplattform Entwicklung auf Basis von Phonegap – Ein Erfahrungsbericht

Ameisen sind fleissig, tatkräftig, rastlos und oft unterwegs, haben aber kein Internet.

Ähnlich geht es den Namics-Mitarbeitern auf so manchem Außendiensteinsatz, die trotzdem auf verschiedene Services angewiesen sind, wie der Zugriff auf sämtliche Mitarbeiter Kontaktdaten, der nicht immer online erfolgen kann. Die in die Jahre gekommene, mobile Weblösung sollte mit einem mobilen Telefonbuch abgelöst werden. Da bei Namics jeder sein eigenes Mobile Phone nutzen darf (BYOD-Philosophie) muss die erstellte Lösung auf möglichst vielen Plattformen laufen. Die Devices sind zu ca. 80% auf iOS und Android verteilt und diese Devices sollen primär auch unterstützt werden.

Idee – Offline Phonebook App für Samartphones

Das ein oder andere Problem kommt einem bekannt vor: die Adressdaten der Kollegen sind nicht aktuell und eine Internetverbindung zum Aktualisieren besteht nicht zwingend unterwegs im Zug oder im Ausland. Die Einbettung der Kontaktdaten über einen Exchange-Account saugt den Akku beim automatischen Datenabgleich leer und Bedarf einer Datenverbindung. Die neue sollte also in jedem Fall auch in Funklöchern funktionieren.

Wie lassen sich diese Anforderungen mit minimalem Programmieraufwand lösen? Wer will, soll direkt aus der App jemanden anrufen, eine SMS, Mails schreiben oder sogar per Skype eine Nachricht hinterlassen können. Und für diejenigen, die immernoch auf ihr altes Adressbuch schwören: auch einzelne Kontakte dort einspeichern.

Ziel ist also zum einen das Unterstützen von verschiedenen Plattformen, aber auch das Nutzen von systemnahen Funktionen. Ein netter Use case, um Phonegap auszuprobieren.

Phonegap? Theorie – Crossplattform

Phonegap ist ein Framework das dazu dient einen Programmcode nur einmal zu schreiben und auf die Vielzahl gängiger Betriebssysteme zu verteilen.

Weniger Programmcode schreiben bedeutet häufig, weniger benötigte Zeit. Weniger Zeit resultiert in einem attraktiveren Kostenrahmen v.a. dann wenn mehrere Plattformen abgedeckt werden sollen. Doch wie sieht es in der Realität aus? Wir haben die neue Version von Phonegap an einem internen Projekt auf Herz und Nieren geprüft.

4 Erfahrungen aus der Crossplattform Entwicklung

  1. Entwicklungsaufwand – Die ersten 80% sind schnell geschafft – danach wirds aufwändig
    Der wahre Umfang der versprochenen Funktionalität lässt sich immer schwer einschätzen. Atomar betrachtet ist jede Funktion als solche realisierbar, sogar mit verhältnismäßig wenig Aufwand. Lässt sich das beliebig skalieren? Harmonieren die angepriesenen Funktionen auch miteinander.
  2. Darstellung geht leider nicht „out of the box“
    Wie in der „konventionellen“ Web-Entwicklung auch, nutzen die unterschiedlichen Plattformen verschiedene Browser-Versionen, die ihrerseits verschiedene Funktionen anbieten oder eben auch nicht. Das ist kein Fehler am Grundgedanken des Frameworks (genau so wie HTML und CSS eine schöne Sache sind), erschweren jedoch die angepriesene „write once, run anywhere“-Ideologie.
    Hier kann man leider nicht unterschiedliche Browserfenster parallel bemühen und die Unstimmigkeiten identifizieren. Denn auch hybride Apps sind Konstrukte, die „nativiziert“ zu einem spezifischem Fragment des Systems werden. Dieses Fragment muss seinerseits aber auf die jeweiligen Betriebssysteme verteilt werden, die wiederum unterschiedliche Umgebungen wünschen.
  3. Optimieren der dyamischen Elemente zur Laufzeit ist zeitaufwändig
    Einfache Layoutings – wie von üblichen Umgebungen unterstützt – funktionierten nicht und erforderten ein manuelles Manipulieren der sichtbaren Elemente wie zum Beispiel das automatische Anpassen aller Elemente auf gleiche Höhe. Das Programm wird zur Laufzeit interpretiert und speicherverwaltung wird hier klein geschrieben. Es ist der Komfort der nativen Entwicklungsumgebung, der für die Code-Singularität und ihre inhärenten Vorteile aufgegeben wird.
  4. Animationen und Interaktion – Es gilt den grössten gemeinsamen Nenner zu finden
    Vorkompilierter Code muss nicht während der Laufzeit interpretiert werden, was auch bei Animationen eine entscheidende Rolle spielt. Es ist schwierig viele alte Testgeräte parat zu haben, um zu prüfen, auf welchen das Layout noch visuell ansprechend ist und wo nicht. Eine Eingrenzung der Geräte und Firmwares könnte hier natürlich die Vielfalt ebenfalls etwas einschränken.
    Zudem zeichnen sich unterschiedliche Systeme durch ihre vielfältigen Interaktionsformen aus. Ein generischer Ansatz muss diese Vielfalt auf den größten gemeinsamen Nenner bringen, ohne fremd für die jeweiligen Nutzer der verschiedenen Systeme zu sein.

Fazit

Für diesen sehr spezifischen Hintergrund mit klar bekannten Animationen und Interaktionen ist eine Crossplattform-Lösung eine geeignete Wahl, die nichts desto Trotz nur ein universelles, visuelles Erscheinungsbild mit sich bringt, wenngleich mehrere denkbar wären. Die Gefühle bei der Umsetzung des Projektes polarisierten hier sehr stark. Zum einen waren die Herausforderungen gern gesehen, dennoch rief die plattformbedingte Inkompatibilität des Öfteren Verzagen hervor und erforderte neue Lösungsansätze.

Im Entwicklungsalltag stellt vor allem das Sicherstellen der Qualität über alle Gerätetypen und Plattformen eine große Herausforderung dar. Eine Änderung muss unter Umständen auf allen Geräten überprüft werden und es ist nicht immer sichergestellt, dass der Fehler damit behoben ist.
Wir unterstützen derzeit zwei Plattformen (iOS und Android). Phonegap unterstützt offiziell 7 Plattformen (http://phonegap.com/about/feature/). Evtl. (e)skaliert der hybride Ansatz dann erst so richtig?

2 Gedanken zu “Mobile Crossplattform Entwicklung auf Basis von Phonegap – Ein Erfahrungsbericht

  1. Ich habe ähnliche Erfahrungen mit Phonegap gemacht und kann bestätigen, dass der Komfort im Vergleich zur nativen Entwicklungsumgebung stark eingeschränkt ist.

    Jüngst habe ich endlich eine IDE gefunden, die meine Anforderungen etwas besser erfüllt: https://monaca.mobi

    Viele Grüße an dich Tobias, alter HiWi Kollege.

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>