Anmelden

Zur Bestätigung jetzt anmelden

Passwort vergessen?

... oder mit Facebook anmelden:

Du hast noch keinen Zugang zu AndroidPIT? Registrieren

Entwicklertagebuch Teil 3: Mit kleinen Erfolgen gegen die Verzweiflung

styx
24

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.

Rüdiger Merz aka styx: Entwickler mit 25 Jahren Berufserfahrung. Android ist die jüngste Herausforderung. / (c) styx

Zunächst erst einmal die gute Nachricht: Die erste Compail-Mail hat das Licht der Welt erblickt und ist ordentlich von meinem Handy zum Empfänger gelangt. Und zur Feier des Tages möchte ich Euch hier den entsprechenden Kopfzeilen-Eintrag zeigen:

Message-id: <569741360.0.1353152888830.Compail.compailuser@localhost>
Subject: Test-Mail 129
X-Mailer: Compail 1.0.1 Alpha Debug (17.11.2012 12:46:03)

Es sind diese kleinen oder großen Erfolge, die einen Programmierer dazu motivieren, immer weiter zu machen. Trotz der Probleme, der Frustrationen und schwierigen Momente.

Und meistens sind es die kleinen Dinge, die mich zur Verzweiflung treiben: Zum Beispiel die Action Bar. Das sind ab Android Honeycomb (API 11) die Symbole in der oberen oder unteren Leiste. Das von Gingerbread bekannte Menü ist verschwunden oder besser gesagt von einem ausklappbaren zu einem ständig sichtbaren Menü modifiziert worden.


Compail aus Entwicklersicht: Auch die kleinsten Erfolge helfen gegen die mitunter aufkommende Verzweiflung. / (c) styx

Mit anderen Worten: Würde ich gemäß den Android-Regeln die Action-Bar verwenden, würde Compail nicht auf Gingerbread laufen. Würde ich mich auf Gingerbread ausrichten, würden die neuen Honeycomb-Menus nicht funktionieren. Also musste ich Compail so stricken, dass die Software unterschiedliche Module (Klassen) ansprechen kann – je nach der auf dem Handy installierten Android-Version.

Hier nun wieder ein kleiner Hinweis an die Hacker unter uns: Um Klassen ab API 11 in API 10 benutzen zu können, sollte man Reflection- oder Wrapper-Klassen verwenden und diese dann API-abhängig ansprechen. Es dauert immer eine Weile, bis man solche Lösungen gefunden hat.

Um ehrlich zu sein: Bisher habe ich mir noch gar keine Gedanken darüber gemacht wie viel Zeit ich neben meiner Arbeit als Geschäftsführer der Steyla Technologies Deutschland GmbH in Compail investiert habe. Das Projekt läuft jetzt seit rund drei Monaten. Im Durchschnitt programmiere ich fünf bis sechs Stunden pro Tag für Compail – auch am Wochenende oder in Hotelzimmern, wenn ich geschäftlich unterwegs bin. Das sind rund 500 Stunden oder rund 70 Personentage. Wahrscheinlich brauche ich noch einmal 50 Tage, bis Compail zufriedenstellend und zuverlässig funktioniert.

Natürlich hatte ich zu Beginn dieses Projektes nie im Leben an einen solchen Aufwand gedacht. Glücklicherweise habe ich eine Frau, die mindestens genau so gut programmiert wie ich – allerdings mehr im Datenschutz- und Datensicherheitsbereich – und deswegen ebenso lange Stunden an der Tastatur sitzt.

Bevor die erste Zeile Code geschrieben wurde, musste ich mir darüber klar werden, welche Standards, Unterstützungsbibliotheken und Technologien ich verwenden wollte, zum Beispiel Fragments, Activities, Javamail, Datenbanken, undsoweiterundsofort. Wie schon beschrieben sollte Compail auch die neuesten Android-Versionen unterstützen, also musste ich mich in die Fragments-Thematik einarbeiten. Schnell war dann klar, dass ich dadurch leider viele Module aus bereits entwickelten Projekten nicht mehr verwenden konnte. Dabei ist ja eigentlich die Philosophie einer objektorientierten Programmiersprache wie Java, dass man das Rad eben nicht immer wieder neu erfindet. Doch in der Praxis klappt das leider dann doch oft nicht wie geplant.


Aktueller Stand: So sieht Compail momentan aus. / (c) styx

Also habe ich mich hingesetzt und das Projekt in verschiedene Bereiche aufgeteilt:

GUI (Graphical User Interface)

Fragments, Activities, Knöpfe – diese Arbeit mag ich am liebsten. Grafiker kann ich natürlich für eine 'freie' Software nicht in Anspruch nehmen. Bei einer E-Mail-App braucht man glücklicherweise auch nicht so viele Icons oder Grafiken. Entsprechend kann ich mich auf die Bedienbarkeit der App konzentrieren. Aus meiner Sicht kommt es bei Compail entscheidend darauf an, dass man auf einem Tablet, besonders aber auf dem Handy, mit einem Blick schnell erkennen kann, ob und von wem eine wichtige E-Mail eingegangen ist.

Client-Server Communication (IMAP)

Senden und Empfangen von E-Mails. Das hatte ich mir sehr viel einfacher vorgestellt – ist ja auch ganz bestimmt nicht mein erster E-Mail-Client. Allerdings muss man sich auf 'normalen' Computern nicht darum kümmern, dass sich plötzlich ein Telefonanruf in den Vordergrund drängt, dass die Verbindung zum Netz mal da ist und dann im nächsten Moment abbricht. Es stört ein normales Programm auch nicht, dass der Monitor auf dem Schreibtisch gedreht wird. Im Gegensatz dazu ist der Bildschirm eines Handys mit der Applikation verknüpft. Dreht man den Bildschirm, muss das Programm reagieren, damit etwa die Schrift nicht auf dem Kopf steht und Breite und Höhe korrekt ausgenutzt werden. Kommt ein Anruf, wird die App im Vordergrund oft sogar beendet. Damit die gerade geschriebene E-Mail dann nicht verloren geht, hat man ein paar Sekunden Zeit, um vor dem "Abschuss" noch ein paar Sachen zu sichern, um beim Neustart wieder aufsetzen zu können.

Datenbank-Modellierung

Auf einem Android-Handy ersetzt die Datenbank im Prinzip die Festplatte. Ob wir nun das betrachten, was auf dem Bildschirm zu sehen ist, oder das, was beim erzwungenen Stop der App zwischengespeichert wird – alles wird in der Datenbank abgelegt. Natürlich muss sich die App auch merken, wann das letzte Mal synchronisiert wurde, ob die Mails erfolgreich versendet oder empfangen werden konnten. Es macht keinen Sinn, den Nutzer damit zu nerven, dass eine E-Mail nicht raus ging, weil kein Netz da war. Also merkt sich Compail die E-Mail(s) und sendet sie eben, wenn es geht. Der Gestaltung der Datenbank kommt also eine wichtige Rolle zu. Wie müssen Tabellen anglegt werden, welche Inhalte sollen in welchem Format eingetragen werden, wie werden die Suchfunktionen gestaltet? Wenn man am Anfang richtig plant (was meistens nicht klappt), hat man später deutlich weniger Stress.

Hintergrund-Prozesse

Natürlich muss Compail auch die eingehenden und ausgehenden E-Mails überwachen, abholen und senden, wenn die App gar nicht auf dem Bildschirm angezeigt wird. Hier steckt der Teufel im Detail. Denn im Hintergrund läuft dauerhaft ein Prozess, der wie auch die Bildschirm-App auf die Datenbank zugreift. Die Zugriffe müssen sorgfältig synchronisiert werden und die Prozesse müssen auch "miteinander reden" können, damit sie sich nicht ins Gehege kommen, was zu einer "corruption" der Datenbank und damit zu einem Verlust von E-Mails führen kann.

Alle diese Module müssen einwandfrei funktionieren, damit die App am Ende das tut, was sie soll. Um die Funktionen zu entwickeln und zu überwachen, verwende ich natürlich eine Workbench (Arbeitsplatte) – man sagt dazu auch IDE (Integrated Development Environment) oder integrierte Entwicklungsumgebung. In der Regel werden die Programme Netbeans oder Eclipse verwendet. Ich bin eher ein Netbeans-Programmierer, weil ich eben mit NetBeans angefangen habe. Aber Eclipse hat auch Vorteile und daher ich habe ich mich mittlerweile auch an die Macken von Eclipse gewöhnt.

Soweit dieser Blog-Artikel. Im nächsten Artikel werde ich Euch davon erzählen, wie man in einem IDE arbeitet, wie man Fehler sucht (und meistens auch findet) und wann Compail in einer ersten pre-Release Version von Euch getestet werden kann.

Den ersten und zweiten Teil verpasst? Hier geht es

zum Entwicklertagebuch Teil 1: Jede App beginnt mit einer Idee und
zum 
Entwicklertagebuch Teil 2: App-Konzeption im Detail.

Kommentare

Neuen Kommentar schreiben:
  • DaMaurice 20.11.2012 Link

    Mal wieder ein interessanter & super Blog !
    Bin schon sehr auf die erste pre-Release Version gespannt.

    0
  • User-Foto
    Admin
    Nico Heister 20.11.2012 Link

    Sehr schöner Artikel, vielen Dank dafür! Ich freue mich schon auf den nächsten Teil der Reihe und natürlich die erste testbare Version. :-)

    0
  • Zwergi987 20.11.2012 Link

    Ich liebe diesen Blog! :)

    Wahnsinn was da alles dahinter steckt!

    0
  • User-Foto
    Admin
    Caspar Wrede 20.11.2012 Link

    Herrlich! Mehr mehr mehr

    0
  • harald meier 20.11.2012 Link

    Knallharte Arbeit, schlimmes Hobby und ich glaube alle sind froh das es euch gibt. Schön mal einen solchen Beitrag zu lesen. Weitet so und lasst euch nicht unterkriegen. Durch euch wird der Umgang mit Medien, gleich welcher Art erst angenehm und oft praktisch und sinnvoll. Ich fünf sich unentbehrlich und toll!

    0
  • harald meier 20.11.2012 Link

    Wie man lesen kann, sliden ist auch nicht immer ein Segen, dennoch tolle Erfindung, soll zuvor heißen: "ich find euch.... "

    0
  • Achim R. 20.11.2012 Link

    Und sich dann auch noch die Arbeit machen und das dem Fussvolk zu vermitteln.

    Extraklasse und vielen Dank dafür.

    Ich freue mich schon auf die Fortsetzung.

    0
  • User-Foto
    Admin
    Sven Woltmann 20.11.2012 Link

    Von mir auch herzlichen Dank für die tollen Artikel!

    Ich werde diese Serie in Zukunft jedem empfehlen, der mir mit "Mach doch mal eben... !", "Kann man nicht mal schnell... ?" oder "Man braucht doch bloß..." kommt ;)

    0
  • Klaus Wedekind 20.11.2012 Link

    Und da finden manche Leute 79 Cent für eine App zu viel Geld ... Danke für den mehr als interessanten Einblick in dein Entwicklerleben, Rüdiger.

    0
  • Jan-Paul Nachtwey 20.11.2012 Link

    Hi, hast Du Dir mal Actionbar Sherlock angeschaut? Das ist die Actionbar für Gingerbread...

    Grüße, Paul

    0
  • fleckdalm 20.11.2012 Link

    Wieder mal ein Super, interessanter Blog!

    0
  • Oliver P 21.11.2012 Link

    Vielen Dank für den tollen Blog!
    Besonders für mich als Technik-Student, der schon Probleme hat, kleine C-Programme auf einem µC zum Laufen zu bringen, sehr interessant und beeindruckend.

    Du bist hoffentlich nicht böse, wenn ich auf deinen Screenshots einen kleinen Rechtschreib-Bug gefunden habe? ;) "Ereignis" schreibt man ohne ss, das kommt erst bei der Mehrzahl dazu.

    Freue mich schon auf eine Fortsetzung, vielleicht wage ich mich auch mal an so ein Projekt.

    0
  • styx 21.11.2012 Link

    Paul, ich bin der Meinung das Gingerbread apps wie Gingerbread apps zu bedienen sein sollten. Das ist der Grund warum ich mich gegen Actionbar Sherlock entschieden habe. Auch wenn es mehr Arbeit ist.:)

    0
  • styx 21.11.2012 Link

    Oliver, warum soll ich Dir böse sein, im Gegenteil. Danke für den Hinweis, werde ich gleich ändern.:)

    0
  • Jürgen Meyer 21.11.2012 Link

    Ich bin selbst Softwareentwickler ... zwar nicht für Android. Kollegen versichern mir aber immer wieder das für Android zu entwickeln relativ aufwendig sei. Da lob ich mir doch Visual Studio 2012 ...

    und jetzt wieder mal los .... steinigt mich weil ich ein Windows-Wort hier geschrieben habe .... lol.

    0
  • Arie K. 21.11.2012 Link

    Interface gefällt mir auf ein paar kleine dinge. zB. die rote Punkte schreien sehr, da wurde ich lieber ein Blau ton sehen. Aber das ist Geschmacksache.

    Werde wohl die test Version auf meinen HTC one X und Nexus 7 ausprobieren und mir dann noch mal melden ob mir die Interface in Benutzung auch gefallt.

    Weiter so Rüdiger.

    0
  • JPsy Droid 21.11.2012 Link

    Arbeitsaufwand ist beeindruckend, hatte mir zwar gedacht das es für Mail etwas komplizierter wird - aber 120 Arbeitstage... Respekt. Da muss man bei Preisen von 0,79-1,99€ (die man wohl meist so sieht) etliche Apps absetzen damit es sich lohnen würde.

    Also scheint Geld verdienen mit Android noch eher beschränkt zu klappen? Oder lohnen sich hier eher "viele" kleine Apps?

    Guter Blog, weiterhin...

    0
  • Jörg 21.11.2012 Link

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ActionBar bar = getActionBar();
    [...]

    }

    0
  • Emir F. 21.11.2012 Link

    Toller Blog und unglaublich wie viel Arbeit darin steckt. Jetzt habe ich ein neues Bild zu den Preisen von Apps.

    0
  • Max K. 21.11.2012 Link

    Super Blog, kann mich da richtig gut rein versetzen.
    Ich schreibe zwar (noch??) nicht für android, sondern eher kleine Spiele für PC, allerdings auch in Java. Ich kann das mit den kleinen Erfolgen richtig gut nachvollziehen :D

    0
  • Sam B 21.11.2012 Link

    ich denke eine Email App zu entwickeln ist wohl etwas vom Schwersten, Respekt!
    Kann Compail auch von einer anderen Mail Adresse senden, welche ich mit meinem GMAIL Konto verknüpft habe?

    0
  • styx 21.11.2012 Link

    Sam, ja, eine Email app ist schon eine von den schwierigeren Projekten. Mein schwierigstes Projekt war bisher GREAT (http://ftp.gwdg.de/linux/tsx-11/BETA/GREAT/GREAT.README.0.92) Entwickelt in C/Motif.

    Deine Frage habe ich aber nicht ganz verstanden.

    0
  • Sam B 21.11.2012 Link

    Hi styx,
    zur Frage, in GMAIL kann ich andere Mailadressen hinzufügen z.B. von GMX und dann aus dem GMAIL Konto ein Mail senden mit der GMX Adresse als Absender.
    Meine Frage wird das auch mit Compail möglich sein? Vermutlich aber eher nicht, ist wahrscheinlich ein riesen Aufwand oder gar nicht möglich und da die App ja gratis sein soll...

    0
  • styx 21.11.2012 Link

    Sam, gute Idee, aber wahrscheinlich nicht in der ersten Version.

    0