Google I/O - Interessantes für Android Entwickler
Die Google I/O ist bereits ein paar Tage vorbei und nun kam ich endlich auch dazu die eine oder andere Session anzuschauen. Im Bezug auf Android möchte ich euch ein paar relevante Videos ans Herz legen. Sofern ihr in den Android Welt unterwegs seid und die Chance habt auf aktuelle Dinge setzen zu können, dürfte die eine oder andere neue Funktionalität sicherlich spannend für euch sein.
Google I/O startet heute
In nicht einmal einer Stunde ist es soweit und die diesjährige Google I/O öffnet digital ihre Pforten. Es wird wie gewohnt neues zu Google Software, wie z.B. Android und Flutter, geben, aber vermutlich auch Informationen zu neuer Hardware, z.B. in Form von neuen Pixel Geräten.
Ich bin gespannt welche Änderungen es im Android und Flutter Bereich gibt, denn sowohl als Nutzer, wie auch als Entwickler habe ich mit beiden Bereichen täglich zu tun. Als Nutzer bin ich außerdem auf Informationen zu neuen Pixel Geräten gespannt, denn ich überlege aktuell mein etwas betagtes Handy zu erneuern und Pixel Geräte zu realistischen Preisen wären da auf jeden Fall eine Option.
Im Rahmen der I/O gibt es diverse Aktionen und Aktivitäten, welche ihr auf der offiziellen Webseite findet. Den Link findet ihr in den Related Links. Den Live Stream der Keynote habe ich im unteren Teil der News für euch eingebunden.
Android Studio 4.2
Eines meiner wichtigsten täglichen Werkzeuge bei der Software Entwicklung ist Android Studio. Aus diesem Grund sind Updates für selbiges immer durchaus relevant für mich. Vor etwas mehr als einer Woche erschien das Update auf Version 4.2, welche durchaus einige interessante Dinge mit sich bringt.
Grundlegend wurde die Basis auf IntelliJ IDEA Community Edition 2020.2 aktualisiert. Im Bereich der Unterstützung von konkreten Android Funktionen ist es nun möglich Safe Args open_in_new mit Autovervollständigung und Code Navigation zu nutzen. Der New Project Wizard und Module Wizard wurde außerdem überarbeitet und soll Neueinsteigern das Leben einfacher machen.
Der Database Inspector erlaubt euch nun auch eine Datenbank zu inspizieren selbst wenn der dazugehörige Prozess bereits verschwunden ist. Außerdem gibt es nicht nur ein neues Gradle Plugin, sondern auch einen Migrationsassistenten, um Gradle Updates durchzuführen.
Die Apply Changes Funktion open_in_new wurde darüber hinaus weiter verbessert, wodurch selbige nun auch bei Änderungen an den Ressourcen nutzbar ist. Zusätzlich ist es nun generell möglich Änderungen auf mehrere Geräte gleichzeitig auszuliefern. Abschließend sei noch zu erwähnen, dass es weitere Verbesserungen am Profiler gab, welcher z.B. die Auslastung von CPU und RAM überwacht. Die obligatorischen Bugfixes sind natürlich auch enthalten. Alle weiteren Informationen findet ihr in den Related Links. Im unteren Teil der News gibt es außerdem das Vorstellungsvideo zur neuen Version.
Ich selbst nutze die neue Version seit dem Release und konnte bis dato keine Probleme feststellen. Sowohl alte, wie auch neue Android und Flutter Projekte laufen ohne Probleme und ohne Anpassungen am Code oder Gradle.
Google Developer Profiles Beta
Solltet ihr in der Android oder Google Welt unterwegs sein, könnte euch vielleicht interessieren das Google scheinbar auch an Entwickler Profilen arbeitet. Also eine kleine Seite über euch selbst, wo ihr zeigen könnt was ihr entwickelt habt, welche Tools ihr gerne nutzt und welche Techniken relevant für euch sind.
Im Rahmen der Google.dev Plattform könnt ihr bereits Informationen zu verschiedenen Themen einholen oder mittels Codelabs und Tutorials neues lernen. Verbunden damit könnt ihr Badges erhalten und zeigen das ihr euch mit einer Technologie auskennt. Diese Informationen und einige weitere werden dann in eurem Profil hinterlegt. Das Ganze befindet sich derzeit in der Beta Phase. Bei Interesse folgt einfach den Related Links, um euer Profil zu erstellen oder etwas neues zu lernen.
Flutter Build Probleme beheben - Failed to transform libs.jar
Derzeit stolpere ich hin und wieder, vor allem aber nach dem Ausführen von flutter clean
, über den Fehler Failed to transform libs.jar. Dieser weist konkreter entweder auf debug\libs.jar
oder profile\libs.jar
hin.
Dieses Problem ist durchaus nervig, weil es jegliche Release Builds blockiert. Beheben lässt es sich zum Glück aber relativ einfach, denn je nach vorangegangener Fehlermeldung müsst ihr einfach nur den passenden Build ausführen, welcher die fehlenden Dateien generiert.
# Falls der Fehler debug\libs.jar referenziert
flutter build apk --debug
# Falls der Fehler profile\libs.jar referenziert
flutter build apk --profile
Es ist durchaus möglich das ihr beide Befehle nacheinander ausführen müsst, weil beide Dateien fehlen, achtet also genau auf die Fehlermeldung. Generell hoffe ich, dass das Flutter / Gradle / Android Studio Team die Problematik zeitnah in den Griff bekommt, denn solche Bugs klauen einem gerne die eine oder andere Entwicklungszeit.
Flutter Vikings Konferenz
Es gibt mal wieder die eine oder andere spannende Neuigkeit im Flutter-Land. Selbige möchte ich euch natürlich nicht vorenthalten und entsprechend hier der Hinweis auf die kostenlose Flutter Vikings Konferenz.
Vom 17. bis 19. November findet die Konferenz statt, entsprechend dem aktuellen globalen Zustand natürlich rein digital. Die Tickets sind kostenlos und mit wenigen Klicks landen sie in eurer Inbox.
Es gibt ein umfangreiches Lineup, z.B. mit dem BloC Entwickler Felix Angelov und auch die Agenda steht bereits. Die genauen Informationen findet ihr auf der Website, die in den Related Links hinterlegt ist. Sollte euch das Thema Flutter interessieren, kann ich euch nur empfehlen mal einen Blick auf das Event zu werfen, ich werde dies auf jeden Fall tun.
Flutter Version 1.22 erschienen
Es gibt wieder spannendes aus der Flutter und Dart Welt zu berichten, denn seit letzter Woche ist Flutter 1.22 verfügbar. Die neue Iteration von Googles Cross-Platform UI Toolkit wird zusammen mit Dart 2.10 open_in_new ausgeliefert und bietet einiges Neues.
Allem voran kann man mit der neuen Version Support für iOS 14 und Android 11 erwarten, wodurch Flutter auch auf den jeweils neusten mobilen OS Versionen genutzt werden kann. In diesem Zuge wurden auch die verfügbaren iOS Icons massiv erweitert und aktualisiert. Unter Android werden nun flexiblere Aussparungen für Kameras und Seitenränder unterstützt, sowie flüssigere Animationen in Verbindung mit dem virtuellen Keyboard. Ebenfalls neu ist der Support für die aktualisierten Material Design Buttons open_in_new.
Im Bereich Internationalization (i18n) und Localization (l10n) ist nun Hot Reload Support vorhanden und diverse weitere Verbesserungen wurden vorgenommen. Hier könnte das neue characters Package open_in_new hilfreich sein.
Flutter - Windows Alpha Support erschienen
Nach längerem Warten ist es nun soweit, Flutter Apps können nun auch unter Windows ausgeführt werden. Während Android und iOS von Anfang an Bord waren, wurden die Desktopsystem Stück für Stück nachgereicht. Angefangen mit MacOS und gefolgt von Linux. Windows war bis dato nur als Tech-Preview verfügbar, was für mich etwas zu gewagt war, auch wenn es nur um private Projekte geht.
Seit vorgestern ist es nun soweit und Windows wird über den dev
Channel von Flutter als Alpha Version unterstützt. Für mich bedeutet dies endlich gute Desktop-Anwendungen, ohne Legacy UI mit problematischen UI-Generatoren und ähnlichem. Bis dato war ich mit Java und verschiedenen Tools drum herum unterwegs, um Desktop-Programme mit UI zu entwickeln, doch dies war leider nie sonderlich zielführend. Ich kam zwar meist zu nutzbaren Ergebnissen, aber der Weg dahin und auch die Pflege der Projekte, war meist eher unangenehm.
Flutter bietet mir hier nun eine Basis, die für mich persönlich ein Vielfaches flexibler und praktischer ist. Während ich im Android-Bereich an Java bzw. Kotlin für einige Projekte festhalten möchte und auf der Serverseite ohnehin mit Kotlin glücklich bin, werde ich Java auf dem Desktop wohl komplett Ad acta legen. Flutter wird hier für mich die Basis für folgende Projekte werden und wenn auch ihr Interesse an diesem Ansatz habt, der Weg dahin ist nicht sonderlich kompliziert. Bei der folgenden Beschreibung gehe ich davon aus, dass ihr bereits ein grundlegendes Flutter Setup open_in_new, z.B. für die Andorid-Entwicklung, betreibt.
FlutterFire - Updates für die Firebase Plugins
Auch wenn ich immer noch nicht zu meinem Flutter - The Good, the Bad and the Ugly Beitrag gekommen bin, gibt es heute etwas aus dem Flutter + Ugly Kontext, allerdings mit sehr positiven Entwicklungen.
Eine der Sachen die mich im Flutter Bereich stört, ist der teilweise nicht qualitativ hochwertige Support für First-Party-Plugins. Speziell habe ich hier die Firebase Plugins im Auge. Auch Google war scheinbar der Meinung, dass es keine gute Idee ist diese Plugins - für eine so relevante Platform wie Flutter - nur nebenbei zu pflegen und so schloss man sich mit Invertase zusammen. Invertase ist eine Consulting-Firma mit viel Flutter und Dart Knowhow, welche nun seit einiger Zeit an neuen Versionen der meisten Firebase Plugins für Flutter arbeitet.
Ein erstes Ergebnis zeigt sich bereits, denn überarbeitete Versionen des FlutterFire Core, Cloud Firestore und Authentication Plugins stehen nun zur Verfügung. Alle überarbeiteten FlutterFire Plugins werden auf dem neuen Core basieren und somit ein einheitliches Setup und einheitliche APIs bereitstellen.
Ebenfalls Fortschritte gibt es im Bereich Crashlytics, Cloud Storage und Cloud Functions. Hier ist man entweder gerade dabei den Rewrite voranzubringen oder aber man ist bereits in der Review-Phase angekommen.
Cloud Messaging (FCM) und Realtime Database erhielten bis dato erste Updates, um mit dem neuen FlutterFire Core zu funktionieren. Der Rewrite dieser beiden Komponenten steht allerdings noch aus. Für mich ist besonders FCM relevant, um ordentliche und stabile Push-Nachrichten bereitstellen zu können.
Falls ihr mehr Informationen zum Thema erfahren wollt, folgt einfach den Related Links. Dort habe ich sowohl die Blog-Beitrag, wie auch das Repository und den Übersichts-Issue verlinkt.
Flutter Architektur Dokumentation
Ein Cross-Platform-Setup für Anwendungen zu nutzen bedeutet immer abzuwägen, wie sinnvoll eine solche Lösung im Vergleich zur nativen Implementierungen ist. Dafür ist es natürlich gut grundlegende Abläufe und Strukturen der jeweiligen Cross-Platform-Lösung zu kennen.
Für Flutter gibt es in diesem Bereich ein sehr umfangreiches Dokument. Dort könnt ihr mehr zu den verschiedenen Architektur-Layern erfahren und so z.B. lernen wie die Einbettung der Engine und des Frameworks selbst auf den eigentlichen Hostsystemen funktioniert.
Zusätzlich gibt es Informationen zum Reactive User interface Konzept, welches Flutter verfolgt. In diesem Kontext gibt es unter anderem mehr zum Thema State Management und wie der State eines Widgets eigentlich funktioniert.
Ebenso kann man sich bezüglich den Widgets selbst und dem Rendering- und Layouting-Flow informieren. Hier gibt es z.B. Erklärungen zum Ablauf der eigentlichen UI Erstellung in Bezug auf die Grafikkarte und wie das ganze System generell funktioniert.
Ein weiterer Baustein ist die Kommunikation mit dem Hostsystem. Hier gibt es mit Platform Channels und das Foreign Function Interface (FFI) verschiedene Wege, um mit verschiedenen Komponenten eines Systems zu kommunizieren. Dieser Bereich ist vor allem wichtig, wenn ihr komplexere Apps mit speziellen Funktionen implementieren wollt, denn in diesem Bereich seid ihr häufig auf APIs o.ä. angewiesen, die nur auf dem Hostsystem direkt genutzt werden können.
Ich habe das Dokument zum Teil überflogen, bestimmte Teile genauer gelesen und einiges sehr tiefgehend angeschaut, je nach aktuellem Wissensbedürfnis. Solltet ihr im Flutter Bereich aktiv sein, kann ein grundlegender Blick in diese Dokumentation denke ich nicht schaden.