Google I/O 2018 - Teil 1 - AI und Machine Learning

Die Google I/O ist noch nicht vorbei, aber ein paar Worte wollte ich trotzdem schon einmal verlieren. Vor allem die Keynote habe ich mir direkt Live angesehen, während mir für den Rest bis dato leider die Zeit fehlte. Dort werde ich jetzt je nach Interesse früher oder später rein schauen. Allerdings ist ziemlich sicher, dass ich mir die meisten Android Panels ansehen werden, alleine schon um auf dem neusten Stand zu bleiben. Google hat auch dieses Jahr wieder einiges raus gehauen und ein sehr großes Thema ist weiterhin AI und Machine Learning. Doch allem voran wurde noch einmal darauf eingegangen das man das Burger und Bier Emoji repariert hat. Ein kleiner Spaß zum Start kann ja bekanntlich nicht schaden und ein gut gefülltes Glas Bier sollte schließlich auch für Softwareentwickler Priorität haben.
Device Metrics - Welche Smartphone-Größen sind verbreitet

Geräte Metriken sind wichtig für Designer, Website-Entwickler und auch Software-Entwickler. Konkret gemeint ist z.B. welche Auflösungen bekannte Geräte haben, wie die Seitenverhältnisse ausfallen und wie groß die Geräte in der Realität sind. Ich selbst benötigte solche Daten, da ich aktuell die finalen Anpassungen an der mobilen Version meiner neuen Blog-Seite vornehme. Zwei nicht komplett aktuelle, aber durchaus sehr hilfreiche Listen habe ich auf screensiz.es und material.io gefunden. Diese nutze ich aktuell, um einen Überblick zu erhalten. Eine komplett aktuelle Liste fand ich leider nicht, allerdings sollten die genannten auch für einen Überblick reichen. Denn wichtig ist meistens, welche Geräte genutzt werden die etwas kleiner oder älter sind, denn für diese ist extra Handling nötig. Neuere und große Geräte sind meist automatisch auf dem Weg zwischen kleineren Smartphones und Desktops mit abgedeckt.
Android Studio 3.1 erschienen

Als Android Entwickler ist das Hauptwerkzeug bei der täglichen Arbeit Android Studio. Selbiges wurde vor einigen Tagen auf Version 3.1 aktualisiert. Ich habe das Update bereits durchgeführt und habe bis dato keine Probleme. Ein Kollege musste allerdings seine Build Tasks anpassen, da Android Studio nicht mehr neu baute sobald man Run wählte, sondern nur eine alte Version auslieferte. Falls ihr ein ähnliches Problem habt, schaut mal hier bei Stackoverflow open_in_new vorbei. Aber nun zu den Neuerungen der Version 3.1. Sie bietet einen Performance Profiler für C++, sowie allgemeine Verbesserungen an den Profilern, besseren Room Support, optimierten Lint Support für Kotlin und einem verbesserten Android Emulator durch optimiertes Quick Boot. Zusätzlich fokussiert sich dieser Release auf “Quality Changes” im Kern des Tools, also diverse kleine Optimierungen und Bugfixes. Dazu gehört auch die Standardmäßige Aktivierung des schnelleren D8 Dex Compilers. Abschließend fällt noch eine kleine Überarbeitung der generellen UI auf. Falls ihr einen schnellen Überblick in Videoform wollt, schaut einfach in den unteren Teil der News. Alles weitere, sowie den Downloadlink, findet ihr wie gewohnt in den Related Links.
Droidcon 2018 - Ticket-Vorbestellung

Ende Juni ist es wieder soweit und die Droidcon steht in Berlin an. Bereits in die zehnte Runde geht die Konferenz und auch ich werde vermutlich wieder mit dabei sein. Solltet auch ihr Interesse haben, schaut am besten bis zum 28. Februar auf der Website vorbei. Denn dies ist die Deadline für die günstigeren Super Early Bird Tickets. Ich war bereits 2016 vor Ort und habe die Zeit sehr genossen. Letztes Jahr machte ich lediglich eine Pause, da das Event mit meiner Hochzeit kollidierte. Das genaue Datum ist der 25-27. Juni 2018.
Annotation Processing in Android Studio aktivieren

Android Studio ist die erste Wahl für Android Entwickler und Annotation Processing ist eine Funktion auf die ebenfalls viele setzen. Dies ist generell kein Problem, doch unter Android Studio kann es zu nervigen Meldungen kommen, sobald man z.B. das Lombok Plugin nutzt. Besagte Nachtrichten weisen dann daraufhin, dass man Annotation Processing aktivieren müsse damit Lombok funktioniert. Das Problem ist, das Setting ist nicht wie in IntelliJ direkt verfügbar. Ihr könnt unter File / Other Settings / Default Settings / Build, Execution, Deployment / Compiler / Annotation Processors den Standard für folgende Projekte einstellen, doch in aktuellen Projekten wird die Meldung weiterhin erscheinen. Welche nebenbei erwähnt falsch ist, denn auch wenn diese Funktion nicht explizit in Android Studio aktiviert ist, funktioniert sie.
Arbeiten mit der Android WebView

Ich arbeite sowohl in meinen privaten Projekten, wie auch professionell, mit der Android WebView. Dabei hat sich eine gewisse Hass-Liebe entwickelt. Denn zum einen bietet die WebView eine gute und schnelle Möglichkeit HTML Content anzuzeigen und das direkt im Umfeld der eigenen App. Auf der anderen Seite sollte man aber auch einige Dinge beachten. Dazu gehört unter anderem: Niemand fasst den Draw-Cycle der WebView an, das Layout der WebView gehört einzig und allein der WebView, die WebView akzeptiert kein / sehr wenig anderes Scroll-Handling und verschiedene Android Versionen haben verschiedene WebViews und dies muss man einfach akzeptieren. Die Liste geht weiter und im Allgemeinen sollte man einfach versuchen der WebView nicht in ihre internen Abläufe zu springen. Ich tue dies hin und wieder trotzdem und muss meine Gehirnwindungen dann durchaus malträtieren, um vielleicht eine Lösung zu finden.
Google Files Go

Vor einigen Tagen hat Google eine neue App veröffentlicht. Mit Files Go gibt es nun eine leichtgewichtige App, welche es euch ermöglicht ungenutzte Dateien zu entfernen und ebenfalls das Smartphone generell etwas aufräumen zu können. Dafür können temporäre Dateien entfernt oder z.B. Downloads gelöscht werden. Für mich interessante Funktionen, allerdings nicht die wichtigsten dieser App. Denn Google hat innerhalb von Files Go einen schnellen Dateitransfer via lokalem Ad-Hoc WLAN eingeführt. Hierfür geben bei Teilnehmer der App die entsprechenden Rechte und der sendende aktiviert die entsprechende Funktion. Sobald der Empfänger in den entsprechenden Modus schaltet, geht der Transfer los. Für ein ca. 500MB großes Video brauchten wir weniger als 30 Sekunden. Meiner Meinung nach sehr praktisch, denn direkte Dateiübertragungen via Bluetooth sind einfach zu langsam. Ich werde versuchen die App häufiger zu nutzen. Zusätzlich finde ich es interessant, dass die App eine Aufräumfunktion für große Dateien bietet. Denn diese Funktion gab es lange nicht und so entwickelte ich selbst mit FileSize open_in_new eine kleine App, die euch helfen soll das Smartphone von unnötigem Ballast zu befreien.
Meine Bildschirmhintergründe

Wenn es um meine digitalen Geräte geht habe ich eine kleine Eigenart, alle haben denselben Bildschirmhintergrund. Egal ob Smartphone, Tablet, Laptop oder der gute alte Desktop PC, wobei letzterer natürlich mit mindestens zwei Monitoren unterwegs ist. Hier hat man natürlich das Problem, dass die Bilder überall gut aussehen müssen und sie sollten in einer hohen Auflösung verfügbar sein. Ebenfalls wichtig ist, dass der Content auf dem Bildschirm noch gut sichtbar ist. Denn sowohl der Android Homescreen, wie auch der Desktop, wollen ja weiterhin genutzt werden. Ich bevorzuge deswegen Naturhintergründe, da diese häufiger etwas ruhiger von der Bildgestaltung her sind. In diesem Bereich bin ich bereits vor einiger Zeit auf eine wirklich gute Sammlung von Bildern auf Google Drive gestoßen. Diese verlinke ich in den Related Links. Initial stammen diese Bilder scheinbar von Bing und wurden, bzw. werden dort als Hintergrund genutzt. Wie gestaltet ihr eure Hintergründe oder ist euch dies nicht so wichtig?
Android Developer Kurse von Google

Es gibt diverse Wege um sich Programmiersprachen beizubringen und selbiges gilt auch für die Entwicklung auf der Android Plattform. Ich habe mir zum Beispiel den Großteil selbst beigebracht und einiges an Java Kenntnissen aus meiner Schulzeit und Studienzeit eingebracht. Wenn auch ihr Interesse an der Android-Entwicklung habt, schaut euch vielleicht mal die folgenden Kurse direkt von Google an. Es gibt einen Einsteigerkurs, der sich Android Developer Fundamentals nennt und seit kurzem ist ebenfalls der Advanced Android Development Kurs verfügbar. Im ersten Kurs richtet ihr Android Studio ein und arbeitet mit der initialen Struktur eures Projekts, um eine gute User Experience zu erreichen. Weiter geht es mit Hintergrundaufgaben für eure App, die allgemeine Verwaltung eurer Daten und einem Ausblick. Der zweite Kurs hilft euch die User Experience weiter zu verbessern und soll eure Apps kleiner und schneller machen. Accessibility ist ebenfalls ein Thema, genau wie Geo Features und das Arbeiten mit Grafiken via z.B. Canvas Elementen. Ich selber habe die Kurse zwar nicht durchgearbeitet, aber vielleicht schaue ich sie mir mal an. Im allgemeinen sind sie für z.B. Unis gedacht, aber alle Unterlagen sind fürs Selbststudium vorhanden, sodass ihr die Aufgaben auch bequem von zuhause bearbeiten könnt. Alles ist in englischer Sprache vorhanden.
Android Builds mit Gradle automatisieren

Android ist eine große Plattform und die Entwicklung erfolgt dankenswerterweise in einer recht beliebten Sprache (Java oder alternativ in Kotlin). Doch neben dem eigentlichen entwickeln müssen die Apps auch gebaut werden. Dafür haben wir Gradle, welches für kleine Projekte von Haus aus gut eingerichtet ist, aber bei komplexen Projekten sollte man sich in diesem Bereich tiefer einarbeiten. Denn auch wenn der Einstieg mitunter verwirrend ist, vor allem was den Scope von Variablen und die Verfügbarkeit von Tasks oder ähnlichem angeht, so lohnt sich die Investition von Zeit hier wirklich. Dabei gibt es Dinge die man einfach lernen muss, wie z.B. die verschiedenen Kontexte (z.B. signingConfigs, buildTypes, flavors und den durchaus hilfreichen afterEvaluate). Weiter geht es dann mit eigenen Tasks, welche auf Variablen arbeiten können und durch doLast unabhängig vom restlichen Projekt Dinge, wie z.B. das Deployment übernehmen können. In diesem Kontext ist vor allem die commandLine Funktion interessant, da diese mit dem CI direkt interagieren kann. Hier kann man eine komplette Kette mit z.B. SSH Setup -> Git Clone -> Build -> Signing -> Deploy via Curl aufbauen, sofern man etwas Erfahrung mitbringt. Sehr spannend und gut für die Übersicht ist die Möglichkeit Funktionen zu nutzen und diese mittels apply from: in andere Dateien auszulagern. Ich kann nur ein weiteres Mal empfehlen, vor allem für größere Projekte, hier einen Einstieg zu wagen. Ich habe in den Related Links ein paar Ressourcen zum Thema hinterlegt und falls ihr Fragen oder Anregungen habt, meldet euch gerne in den Kommentaren.