Android Entwicklung - Meine Must Have Libraries

Ich programmiere Android Apps und ich habe einen Blog, da sollte es doch eigentlich naheliegend sein das ich mal Libraries erwähne mit denen ich aktuell entwickle. Die Betonung liegt hier auf sollte, denn bis dato habe ich diesen Themenbereich tatsächlich eher spärlich behandelt. Dies soll sich innerhalb der nächsten Wochen ändern. Denn ich werde nun immer mal wieder Libraries vorstellen die ich gerne und häufig nutzte. Ihr seid herzlich eingeladen auch eure Favoriten in den Kommentaren zu erwähnen, denn ich schaue mir gerne neues an und probiere etwas herum. Solltet ihr also Vorschläge für Libraries haben die ihr gut findet, meldet euch doch einfach unter dieser News. Vielleicht habe ich sie ohnehin auf der Liste oder aber schaue sie mir mal an. Mit dabei sein werden z.B. Dagger, FragmentArgs, OkHttp, Retrofit, Butterknife und Project Lombok.
Eigene Java Libraries veröffentlichen mit JitPack.io

Eigene Java Libraries entstehen vermutlich recht häufig, denn Java ist nun einmal die Basis von Android und ein paar Klassen auszugliedern und diese bei GitHub zu verwalten ist auch kein Akt. Doch wie bekommt man diese nun einfach und schnell zu anderen Usern? Man könnte eigene Wege gehen oder schauen wo man seine Pakete hin exportieren kann, sodass sie in den Repositories gefunden werden. Aber es gibt auch eine praktische Alternative, vor allem wenn ihr bereits bei z.B. GitHub seid. Ihr könnt sie mit JitPack.io veröffentlichen. Auf diesem Weg müsst ihr für eure JVM und Android Libraries lediglich ein paar Konfigurationsinformationen in eurem Repository ablegen und schon kann man sie via compile ‘com.github.User:Repo:Version’ in Gradle einbinden. Dafür erstellt ihr GitHub Releases und schon gibt es die entsprechende neue Version. Außerdem kann auch immer die aktuellste Snapshot Version oder ein bestimmter Commit geholt werden und zusätzlich lässt sich mit JavaDoc auch direkt eine Dokumentation verfügbar machen. BitBucket und GitLab werden auch unterstützt. Ich selber nutze die Plattform für eine kleine Library die ich zwar noch nicht fertig habe, aber bereits via JitPack.io einbinde. Dazu vermutlich nächste Woche etwas mehr. Falls ihr auch Interesse habt euren Code auf diesem Wege zu verteilen, schaut einfach mal in die Related Links. Die Dokumentation ist übersichtlich und gut gemacht und es gibt zwei Anleitungen für Java und Android. Ich brauchte glaube ich zwei bis drei Commits bis alles lief, aber alles in allem ging der Vorgang gut von der Hand.
Associate Android Developer Certification

Ich bin Android Entwickler, dies kann im Prinzip jeder von sich behaupten. Aber im Gegensatz zum z.B. Netzwerkbereich gibt es nichts um dies zu beweisen ohne das man eine App oder dergleichen inklusive Quellcode zeigt und erklärt. Google ändert dies nun und stellt interessierten die Associate Android Developer Certification by Google zur Verfügung. Für diese muss gelernt und implementiert werden. Ca. 150 Dollar kostet der Spaß, welchen ihr nach der Lernphase binnen 48 Stunden umsetzen müsst. Das ganze wird anschließend teils von Software und teils von Menschen geprüft. Zuletzt genannte bitten bei erfolgreicher Absolvierung der Implementierungsphase dann um ein direktes Interview. Dieses wird zwar Remote durchgeführt, aber direkt mit einem menschlichen Gegenüber. Dadurch möchte man vermutlich Schummler entlarven. Ob eine Zertifizierung nun viel aussagt oder nicht sei dahingestellt, ich persönlich finde dies ist eine gute Aktion. Ich selber werde mir das ganze mal ansehen und zu gegebener Zeit dann vermutlich auch selber durchführen.
Android Experiments - Neue Ideen für Android

Android ist uns allen bekannt als Handybetriebssystem und dort gibt es quasi Apps für alles. Doch was wenn man Ideen-Technisch etwas mehr aus seinem Gerät herausholen will, was sowohl im Bereich Hardware, wie auch im Bereich Software gilt. Hier kommt Android Experiments ins Spiel, denn dort wird aus eurem Handy schnell mal eine dynamisch animierte Wettersimulation, ihr nutzt euer Gerät als 3D Mouse für die 3D Software Blender oder ihr steuert ein Spiel auf eurem Smartphone mittels eurer Android Watch. Diverse weitere gute und interessante Ideen findet ihr auf der unten verlinkten Plattform. Ich habe gestern mal etwas gestöbert und muss sagen, dass eine oder andere spannende ist dabei und ich finde es erfrischend auch nach der etwas längeren Zeit die es das ganze System schon gibt noch neue Ideen und Umsetzungen zu entdecken.
Android Instant Apps - Erster Test läuft

Google hat für einen ersten ausgewählten Entwicklerkreis die neue Android Instant App Funktion freigeschaltet. Dies Betrifft die Apps BuzzFeed, Wish, Periscope und Viki. Also eher englische / amerikanische Apps die einigen in Deutschland nichts sagen werden, aber trotzdem zeigt dies das es voran geht. Außerdem kann man ein kleines Formular open_in_new ausfüllen und selbst Interesse bekunden. Zusätzlich gibt es bereits einen Guide open_in_new, um seine App bereit für Instant Apps zu machen. Meiner Meinung nach ist der Ansatz extrem interessant, denn er ermöglicht nach einem kurzen Download Teile einer App ohne Installation zu starten. So kann ein Shop z.B. den schnellen Kauf von Produkten ermöglichen, ohne das man erst in der App lange navigieren muss, obwohl man z.B. auf der mobilen Website des Shops bereits den Artikel entdeckt hat. Die weiteren Einsatzzwecke sind vielseitig und sogar für meine Apps und Projekte kommt Instant Run in Frage. Ich bin gespannt auf die Entwicklungen der nächsten Monate in diesem Bereich, wie sieht es bei euch aus?
Android Studio 2.3 - Beta 1

Seit einigen Tagen teste ich die frisch erschienene Android Studio 2.3 - Beta 1. Sie bringt ein Update der Basis IDE IntelliJ von Version 2016.1 auf 2016.2 und zusätzlich wurde der Run Knopf vom Instant Run Knopf getrennt. Somit kann man nun immer direkt entscheiden ob man schnelle, aber in manchen Situationen unsichere oder langsamere aber immer korrekte Anwendungen seiner Änderungen möchte. Zusätzlich gibt es durch den Build Cache open_in_new optimierte Build Zeiten. Der Layout Editor wurde massiv überarbeitet, für die bessere Nutzung optimiert und an neue Funktionen, wie z.B. das ConstraintLayout, weiter angepasst. Weitere Optimierungen gab es im Lint Bereich und auch einige Fehler beim Data Binding wurden aus der Welt geschafft. Alles in allem wirkt es an vielen Stellen etwas flüssiger beim täglichen Arbeiten.
Bilder laden mit Picasso

Letztes Wochenende habe ich mich etwas mit dem laden und verwalten von Bildern auseinander gesetzt. Dabei wollte ich das Rad nicht neu erfinden und ohne wirklich großen Aufwand Bilder laden und anschließend aus dem Cache holen können. Die Aufrufe sollten nicht unnötig komplex sein und ich wollte soweit es geht auf die normalen Android Strukturen zugreifen, vor allem im UI Bereich. Denn dort sind mir native Dinger lieber, als selbst gebaute Strukturen, die dann Probleme mit Themes oder Styles haben. Meine Wahl fiel nach ein paar Vergleichen zwischen Fresco open_in_new und Picasso open_in_new auf letzteres. Es wirkte etwas einfacher und ist bereits etablierter. Dafür bietet Fresco neuere Ansätze und Ideen. Hier muss man also selber wissen was einem gerade besser gefällt. Ich habe mir Picasso geschnappt und mit nur einer Zeile konnte ich asynchron Bilder laden, diese aus dem Cache neu holen und das ganze funktionierte auch UI technisch sehr schön. In einer ListView kam alles z.B. schön via Fade-In Effekt ins Sichtfeld, sobald man scrollte. Falls ihr also mal Bilder laden wollt, schaut euch Picasso mal an.
Android UiAutomatorViewer zur UI Analyse

Android Apps bestehen im allgemeinen aus XML Dateien für das Design und jeder Menge Java Code für die eigentliche Implementierung. Nun gibt es manchmal Situationen wo man sich fragt warum die eigene UI komisch aussieht oder wie andere Apps Dinge gelöst haben. Vor allem bei sehr komplexen Schachtelungen, vielleicht kombiniert mit System Komponenten wie z.B. der WebView, kann dies schwer werden zu debuggen. Doch eigentlich hat man alle Tools dafür direkt zur Hand, sofern man das Android SDK installiert hat. Denn der UiAutomatorViewer liegt dort direkt im android-sdk/tools/ Ordner und kann dort auch geöffnet werden. Er bietet eine UI und lässt euch einfach und schnell Screenshots + XML Screenshots erstellen. Beides zusammen erlaubt euch die UI unter die Lupe zu nehmen und dürfte beim finden des einen oder anderen Problems helfen oder falls ihr vorhabt UI Automation Tests zu erstellen. Mir hat das kleine Tool bereits bei einem komplexen Problem auf der Arbeit geholfen und ich kann euch bei Bedarf nur empfehlen es mal anzuschauen. Relativ gute und kurz zusammen gefasste Tipps und Informationen zum UiAutomatorViewer gibt es auf gitbooks.io open_in_new.
Google und die EU - Thema Android

Google und die EU liegen aktuell im Clinch wegen Android und wie Google mit seiner dortigen Marktmacht umgeht. Denn die EU wirft Google hier vor den Wettbewerb zu beherrschen und dadurch zu manipulieren das sie ihre Apps mit Android bündeln. Die Art und Weise wie die EU das ganze betrachtet ist allerdings sehr “einseitig” und erinnert an die damalige Aktion mit Microsoft und dem Internet Explorer. Auch diese fand ich schon albern, doch dieses Mal geht es etwas weiter. Denn zum einen ist die EU der Meinung iOS und Android seien keine direkten Konkurrenten und zum anderen kann man Android sehr wohl ohne die Google Apps anbieten. Diverse Anbieter z.B. aus China tun dies, was auf anderen Plattformen übrigens soweit ich weiß nicht möglich ist. Das Google etwas verlangt, um selber auch mit dem eigentlich offenen Android Umsatz zu machen, ist meiner Meinung nach nicht verwerflich, vor allem da die Hersteller in diesem Bereich dadurch auch einige Vorteile haben. Vor allem aber die Entwickler haben dadurch eine Basis mit einer Plattform, Tools und diversen weiteren Dingen, welche das Leben der Entwickler einfacher machen. Googles Antwort ist deutlich und zumindest für mich nachvollziehbar. Die Ausführungen der EU hingegen wirken etwas undurchdacht und kurzsichtig. Ich bin gespannt was sich hier ergibt und hoffe sowohl für die Kunden, wie auch die Entwickler, dass es keine Probleme geben wird.
Android Extensions - Fragmentierung bekämpfen

Das Android System ist riesig. Es gibt viele Hersteller, viele Versionen die auf dem Markt aktiv sind und somit auch sehr viele verschiedene API Level die Entwickler beachten müssen. Dies schafft Fragmentierung, welche man bekämpfen muss. Denn wenn die Umstellung von Geräten auf neuere Versionen nicht schnell genug oder sogar gar nicht stattfindet, können die Nutzer neue Funktionen nicht genießen und die Entwickler müssen mit Altlasten jonglieren. Doch wie soll man dies tun, es gibt viele sehr günstige Smartphones die wenig Updates kriegen, Hersteller die sehr viele Geräte auf den Markt bringen und es nicht schaffen Updates zu liefern und selbst die die sich verpflichten einen bestimmten Zeitraum Updates bereitzustellen halten sich nicht immer daran. Google sieht hier nur die Möglichkeit selbst einen Teil der Updates direkt bringen zu können und zwar in Form der Android Extensions. Durch eine Einschränkung der erlaubten Veränderbarkeit des Kern-Android-Systems will Google eine feste Basis schaffen und diese dann unabhängig von Providern und Herstellern aktualisieren. Soll heißen ein API Level wird vielleicht nicht angehoben, aber für eine ältere Version können trotzdem Patches kommen, welche direkt von Google, vermutlich auch direkt über den Play Store zum Nutzer kommen. Dadurch erweitert sich die Funktionalität, Fehler können behoben werden und alles in allem gibt es einfach schnelle Updates. Ich dachte im ersten Moment dies macht es für Entwickler noch schlechter zu Überblicken welche Version mit was kompatibel ist, doch eigentlich wird es nicht wirklich schlimmer. Dadurch das jedes z.B. Lollipop Gerät ja alle Extensions für die Version hätte, reicht es im Prinzip weiterhin anzugeben welche Funktion die jeweilige Version unterstützt, vielleicht mit einem kleinen Zusatz was durch Extensions hinzugefügt wird und was direkt im Kern dabei ist. Manchmal für Entwickler ein Blick mehr, dafür aber ein guter Versuch die Fragmentierung zu bekämpfen. Aktuell ist einiges hier noch Vermutung, aber ich hoffe Google wird es so wie wir denken umsetzen, es wäre ein guter Ansatz.