X

Anmelden

Zur Bestätigung jetzt anmelden

Passwort vergessen?

... oder mit Facebook anmelden:

Du hast noch keinen Zugang zu AndroidPIT? Registrieren

Entwicklertagebuch Teil 2: App-Konzeption im Detail

styx
16

Wie entsteht eine App? Was sind die ersten Überlegungen bei der Konzeption? Welche Probleme treten bei der Programmierung auf? Und überhaupt: Sitzt ein Mensch, der Maschinencode schreibt, eigentlich den ganzen Tag vor dem Computer? Mit unserem Entwicklertagebuch wollen wir Euch am Alltag eines App-Entwicklers teilhaben lassen. In mehreren Kapiteln wird styx (Rüdiger Merz) einen Einblick in sein (Entwickler)Leben und in die Arbeit an seiner E-Mail-App "Compail" geben.

Compail auf unterschiedlichen Geräten: Für welche Android-Versionen kann und sollte ich eine App entwickeln? / (c) styx

Bei der Planung einer App stehen eine Menge Überlegungen an. Wieviel Zeit muß ich einplanen? Auf welchen Geräten soll Compail laufen und unter welchen Android OS Versionen? Ist das ein Geschäfts-, Hobby- oder Freizeit-Projekt? Wie soll ich meiner Frau verkaufen, dass ich mal wieder jede Nacht am Computer hängen werde? Kann ich sie vielleicht sogar davon überzeugen, dass dieses neue Projekt die Anschaffung eines weiteren (neuen) Handys notwendig macht? Leider bin ich eben Programmierer – mit anderen Worten: Die meisten Überlegungen mache ich unglücklicherweise oft erst, nach dem ich schon die ersten Wochen in das Projekt investiert habe.

"fragments" und "activities"

Bei Compail war allerdings eine wesentliche Frage gleich am Anfang zu klären: Soll die App auf Handy und Tablets laufen? Einfache standard-"activities" oder "fragments"? "fragments" sind modularisierte "activities" die es unter anderem erlauben, die Benutzeroberfläche dynamischer zu gestalten oder auszunutzen, zum Beispiel, um den größeren Bildschirm eines Tabletts sinnvoll zu nutzen. Es entspricht im Allgemeinen meiner Philosophie, mich während der Entwicklung an die Leitsätze von Google zu halten. Ich finde es unschön, wenn jede App mit eigenen Bedienelementen und -Strukturen arbeitet. Wie soll ein normaler Anwender klarkommen, wenn immer alles anders ausschaut oder anders zu bedienen ist?


Google "fragments": Hier sind sie von Google erklärt / (c) Google 

Google empfiehlt, auf neueren Android Releases "fragments" zu verwenden. Also sollte auch Compail  "fragments" verwenden. Zum Zeitpunkt meiner Überlegungen liefen 55 Prozent der Geräte mit Gingerbread (API 10) und 24 Prozent mit Ice Cream Sandwich (API 15) . Um größte Kompatibilität zu bieten, sollte Compail alle Geräte von API 10 – API 16 unterstützen. Aber der Teufel liegt hier im Detail: API 10 unterstützt noch keine "fragments“, aber glücklicherweise stellt Google mit der "Android.Support.V4" Library einen Workaround zur Verfügung. Also alles klar? Eben nicht. Denn die Support-Library muss ich etwas anders ansprechen, als native "fragments". Entsprechend muss ich, in Abhängigkeit der Betriebssystem-Versionen, auch die Methoden anders ansprechen. Das alles ist zwar lösbar, aber in anderen Bereichen wird der Spagat zwischen den unterschiedlichen Android-Versionen dann doch deutlich komplizierter, als ich es mir zu Beginn der Arbeit vorgestellt hatte. Doch davon später.

POP3 oder IMAP

Es gibt im wesentlichen zwei etablierte Protokolle, um auf E-Mail zugreifen zu können.  Allerdings sind sowohl POP3 als auch IMAP für eine Mobilfunk-E-Mail-Schnittstelle eher ungeeignet. Während man sein Postfach mit POP3 nur schwierig synchron halten kann, ist IMAP eher für Verbindungen geeignet, die dauerhaft und zuverlässig zur Verfügung stehen. Ein Mobiltelefon stellt prinzipiell andere Anforderungen. Ich möchte meine E-Mails mit dem Server so synchron wie möglich halten, schnell über eingehende E-Mails informiert werden, das Datenvolumen soll aber so gering wie möglich gehalten werden und die ganze Sache muss auch ordentlich funktionieren, auch wenn ich zwischendurch mal das Netz verliere.

Ehrlich gesagt: Ich hatte mir das am Anfang einfacher vorgestellt.

Da POP3 von vielen Anbietern nicht (mehr) unterstützt wird habe ich also IMAP als Protokoll ausgewählt. Wer sich schon einmal etwas intensiver mit dem IMAP-Protokoll beschäftigt hat, kann verstehen, dass allein die Implementation einer IMAP-Lösung ein ganzes Buch füllen würde. Hinzu kommen die zahlreichen Unterschiede zwischen den IMAP-Anbietern. Sinnvolle Protokoll-Mechanismen wie zum Beispiel das IDLE-Kommando werden von einigen großen Mail-Hosts gar nicht unterstützt.

Natürlich habe ich keine besondere Lust, einen IMAP-Client "from scratch" zu entwickeln und glücklicherweise gibt es hier Hilfe. Die JavaMail-API soll es ermöglichen, plattform- und protokollunabhängige E-Mail Lösungen zu bauen. Dumm nur, dass verschiedene Bereiche als "experimental" beschrieben werden. Und die Bedeutung dieses Begriffes durfte ich dann auch schnell feststellen, als sich nach einem Library-Update wesentliche Schnittstellen derart änderten, dass ich ein gutes Drittel meiner App komplett umschreiben musste.


Fie Unterschiede zwischen IMAP und POP3 / (c) signinx

Aber zurück zu den Entwicklungsüberlegungen. Damit E-Mails auch ohne Netz gelesen werden können (und die Datenmengen gering bleiben) müssen die Daten natürlich in einer lokalen Datenbank auf dem Android-Gerät gespeichert werden – parallel muss der Status meiner Mails (und meiner Aktionen) mit dem Mailserver synchron gehalten werden.

Viele große und kleine Probleme

Und nun kommen die nächsten Probleme. Zum Beispiel: Eine Mail wird auf das Handy übertragen und in die Datenbank eingepflegt. Zu einem späteren Zeitpunkt habe ich kein Netz (oder das Datenvolumen ist mal wieder verbraucht) – trotzdem kann ich meine E-Mail auf compail lesen, löschen oder sogar beantworten. Ganz ohne Netz. Aber natürlich ist mein Mail-Folder auf dem Server jetzt nicht mehr auf dem selben Status wie mein Handy. Entsprechend muss sich Compail die ganzen Offline-Aktionen merken und den Serverstatus aktualisieren, sobald man wieder online ist.

(Kleiner Hinweis an die Hacker unter Euch: Wird der Body einer E-Mail abgerufen, wird in der Regel automatisch das "seen"-Flag gesetzt, obwohl die E-Mail eben auf dem Handy nur in der Datenbank gespeichert und noch nicht gelesen wurde – also setze ich das "seen"-Flag automatisch zurück.)

Man kann sich leicht vorstellen, welche merkwürdigen Konstellationen sich ergeben, wenn man zwischendurch einmal keine Netzverbindung besteht – IMAP ist schlicht und ergreifend nicht dazu geeignet, um solche und ähnliche Szenarien zu berücksichtigen.

Ich hätte mir gewünscht, dass ich die ganzen möglichen Probleme im Vorfeld bedacht hätte. Aber ganz ehrlich: Man kann ein komplexes Projekt wie Compail nicht wirklich im Voraus komplett durchdenken. Rückblickend muss ich sogar gestehen, dass ich es möglicherweise nicht gestartet hätte, wären mir die vielen kleinen und großen Probleme von Anfang an klar gewesen. Eigentlich wollte ich nur ein einfaches, neues und modernes E-Mail-Interface entwickeln. Aber eine Sache war mir von vornherein absolut klar: Compail wird frei zur Verfügung stehen. Es wird keine Werbebanner oder ähnliches geben.

Ein nettes Motto zum Abschluss: Everybody said that it is not possible to create a new E-Mail interface. I am sorry, I didn't know and nobody told me. So I created one.

Im dritten Teil des Entwicklertagebuches erklärt uns styx, wie aus Codezeilen langsam eine bedienbare Anwendung entsteht. Den ersten Teil verpasst? Hier geht es zum Entwicklertagebuch Teil 1: Jede App beginnt mit einer Idee.

Kommentare

Neuen Kommentar schreiben:
  • fleckdalm 27.10.2012 Link

    echt super blog, danke!

    0
    0
  • fleckdalm 27.10.2012 Link

    Gibt es die App noch nicht im PlayStore?

    0
    0
  • Emir F. 27.10.2012 Link

    Super interessanter Blog. Danke

    0
    0
  • Stefan Querl 27.10.2012 Link

    Super ... bitte weiter machen..

    0
    0
  • Harald H. 27.10.2012 Link

    Schöner Einblick! Mal was anderes als die "Apple News".

    P.S. "Machinencode" ist was anderes, bezweifle dass den jmd hier von Hand erstellt :D

    0
    0
  • DaMaurice 27.10.2012 Link

    Toller Blog und sehr interessant zu sehen, wie so ein Tag bei einem Programmierer von statten geht.
    Bin schon sehr auf die Compail App gespannt !
    Wann wird die App kommen/zur Verfügung stehen ??

    0
    0
  • David Noel Z. 27.10.2012 Link

    Eine tolle Serie, sehr schön zu lesen, die einem einen sehr interessanten Einblick in das Entwicklerleben gibt. Danke dafür! Wirklich super!

    0
    0
  • easy t. 27.10.2012 Link

    Danke für diesen Block, sehr interessant zu lesen....

    0
    0
  • easy t. 27.10.2012 Link

    scheiß rechtschreib Korrektur

    0
    0
  • Björn Tiemann 27.10.2012 Link

    War spannend zu lesen, danke!

    0
    0
  • Pure★Aqua ツ 28.10.2012 Link

    Sehr schöner Blog ,freu mich auf Teil 3. :D

    0
    0
  • Nick Ecki 28.10.2012 Link

    Hi für alle interessierten ...das Google Event am Montag wurde wegen dem Sturm Sandy auf unbestimmte Zeit abgesagt. Und es gibt ein Preis für das Galaxy Nexus demnach liegt es wohl bei 500€. ( wurde in Britannien gesichtet).Quellen vermeide ich hier mal. Kann man aber googlen.

    0
    0
  • jens k. 28.10.2012 Link

    Cooler Beitrag, macht Spaß zu lesen und mal "die Person hinter der app" zu sehen :-)

    0
    0
  • Rene Denkewitz 28.10.2012 Link

    Ich find's klasse, daß ein Entwickler sich die Zeit nimmt, mal von "hinter den Kulissen" zu berichten. Hoffentlich wird das auch von den Usern gelesen, die Apps einfach mal achtlos mit 1 Stern bewerten, weil sie sich nicht vorstellen können, daß das Problem nicht die App, sondern ihr Handy ist. Bitte ausfühlich weiter berichten.

    0
    0
  • Marcel S. 29.10.2012 Link

    Meinen großen Respekt.
    So viel motivation, nach so vielen "Rückschlägen" und
    dann noch kostenlos anbieten wollen.
    Freue mich auf den 3. Teil.
    Viele Grüße an das motivierte AndroidPit Team.

    0
    0
  • styx 29.10.2012 Link

    Wahnsinn ! Erst mal Vielen Dank für das super Feedback. Eure Kommentare motivieren mich enorm, an Compail weiter zu arbeiten. Um ein paar Fragen zu beantworten. Compail ist noch nicht im PlayStore, sorry. Und ich kann es selbst kaum erwarten bis die App fertig ist. :) Wenn die erste Release fertig ist wird eine Beta veröffentlicht. Was dann hier auf AndoidPIT bekanntgegeben wird. Bis dahin bitte ich Euch noch um ein bisschen Geduld.

    Ich stehe Euch auch für weiterhin für Fragen hier im Blog zur Verfügung.

    Danke,

    VLG

    Styx

    0
    0