Unresolved reference: java in IntelliJ Idea / Android Studio
Im Rahmen eines meiner letzten Updates für IntelliJ Idea kam es leider zu einem nervigen Problem. Alle normalerweise vorhandenen Java Klassen wurden mir als fehlerhaft angezeigt und das schon beim Import. Der Fehler Unresolved reference: java weißt dabei auf eine fehlende / falsche Konfiguration des innerhalb von Idea genutzten JDKs hin. Bestätigt wurde diese Annahme im meinem Fall durch den Fakt, dass ich das Projekt ohne Probleme via Gradle bauen konnte, obwohl die IDE mir Build Fehler prophezeite.
Nach dem öffnen von File / Project Structure / Platform Settings / SDKs
war schnell klar das ein Problem existiert, denn es war zwar ein Eintrag vorhanden und ausgewählt (jbr-11
), aber es waren keinerlei Einträge im Classpath Tab vorhanden.
Jetbrains Toolbox - IDEA und Android Studio einfach verwalten
Ich arbeite mittlerweile seit mehr als 5 Jahren mit Jetbrains Produkten und in diesem Kontext meist mit IntelliJ IDEA in der Community Edition und mit Android Studio. Es gibt noch viele weitere Tools, vor allem für zahlende Kunden, aber ich bin mit den beiden genannten durchaus gut ausgerüstet.
Da diese Tools die Basis meiner Entwicklung sind, möchte ich sie natürlich aktuell halten und von Zeit zu Zeit ist auch eine Beta Version nicht schlecht, um vorab Features zu testen. All diese Sachen hatte ich bis letztes Jahr von Hand installiert und verwaltet, wobei die Updates via automatischer Funktion direkt innerhalb der Tools verwaltet wurden.
Seit der letzten Neuinstallation, welche im Rahmen meines PC Upgrades stattfand, bin ich nun voll und ganz auf die Jetbrains Toolbox umgestiegen. Hierbei handelt es sich um ein kleines Management Tool für IntelliJ Produkte. Es kann mit einem Account genutzt werden, ich selber nutze es allerdings ohne. Die Toolbox ermöglicht es euch Software zu installieren und das auch parallel in verschiedenen Version. Updates werden ebenfalls hier verwaltet. Dabei ist ein Rollback möglich, da die alte Version nicht direkt überschrieben wird. Dies ist sehr praktisch, sofern ein Projekt o.ä. vielleicht doch noch nicht mit der neusten Version funktioniert. Darüber hinaus gibt es weitere kleine Einstellungsmöglichkeiten, wie z.B. für die Java Settings.
Alles in allem ist das Tool keine Magie, aber er hilft bei der unkomplizierten Verwaltung von für mich essentieller Software, sowohl bei der initialen Installation, wie auch beim sicheren Aktualisieren. IDEA nutze ich bereits seit diversen Monaten mit der Toolbox, Android Studio seit ca. einem Monat und bis dato konnte ich noch keiner Fehler bei Updates oder ähnlichem feststellen.
Tessa App - Update mit Dark Mode und anpassbaren Kategorien
Es gibt wieder neues von mir aus der Flutter Welt. Meine App Tessa hat ein Update erhalten. In dieser Version fügte ich einen Dark Mode und anpassbare Kategorien hinzu. Natürlich wurden auch diverse Fehler behoben und einige Anpassungen an der UI vorgenommen. Letzteres sorgt vor allem für einen modernen Look im Bereich der Snackbars. Ebenfalls verbessert wurde die Performance.
Im Rahmen des Updates habe ich das erste Mal mit Flutter in Verbindung mit einem dedizierten Dark Mode gearbeitet und ich bin durchaus zufrieden. Generell musste ich lediglich mein allgemeines Theme in ein helles und ein dunkles aufteilen und der Großteil war geschafft. Natürlich muss man sich dann noch um eventuelle manuelle Einstellungen kümmern, aber extrem vieles lief einfach so. Selbst UI die von Third Party Libraries gebaut wird, konnte bis auf kleine Ausnahmen ohne Änderungen verwendet werden. Hier merkt man das Flutters Material Komponenten alle aus einem Guss kommen.
Bedenken sollte man allerdings auch die nativen oder statischen Komponenten. In diesem Bereich habe ich vor allem kleinere Anpassungen an den genutzten Bildern vorgenommen und den initialen Splash Screen angepasst. Hierfür habe ich innerhalb von Android selbst die gegebenen Möglichkeiten genutzt. Da zu diesem Zeitpunkt Flutter selbst noch nicht aktiv ist, ist der Splash Screen immer gemäß des System Themes gesetzt und manuelle App Einstellungen greifen dann nachdem der Flutter Kontext geladen ist.
Jetpack Compose - Meine ersten Erfahrungen
Ich habe in den letzten Wochen relativ eingehend erste Schritte mit Jetpack Compose gemacht. Dies ist Androids neues Framework zu Erstellung des User Interfaces. Dabei entfernt man sich weit vom bekannten Ansatz, bei welchem ausgelagertes XML genutzt und später auf die eine oder andere Art mit der eigentlichen Logik verbunden wird.
Mit Compose bewegt man sich in sehr ähnlichen Welten wie bei Flutter. Die gesamte UI wird direkt im Code definiert und entsprechend ist eine extra Verbindungsschicht unnötig. Dadurch spart man sich natürlich einiges an Boilerplate Code. Auf der anderen Seite muss man natürlich umdenken, was mir persönlich durch meinen Flutter Hintergrund relativ leicht fällt.
Jetpack / AndroidX Library Updates im Auge behalten
Falls ihr in der Android Developer Welt unterwegs seid, habt ihr sicherlich schon mit Jetpack / AndroidX Libraries open_in_new gearbeitet. Selbige bieten eine Vielzahl von wichtigen Kernfunktionen, sind dabei meist abwärtskompatibel und werden sehr aktiv von Google selbst gepflegt. Doch eben diese häufigen Updates sorgen auch dafür, dass man als Entwickler kontinuierlich ein Auge auf die genutzten Versionen haben muss.
In diesem Kontext bietet Google eine schöne Übersichtsseite, welche Informationen zu den verschiedenen Release Channels und den aktuell genutzten Versionen bietet. Außerdem gibt es pro Channel Release News. Selbige können auch via RSS Feed abonniert werden, sodass ihr immer auf dem neusten Stand seid. Auch wenn man gerne sagt “Never change a running system”, sind Updates im Bereich der Jetpack / AndroidX meiner Meinung nach eine Ausnahme. Durch ihre agile Entwicklung werden oft Schritt für Schritt neue Features eingebaut oder kleinere Probleme behoben. Diese Updates landen schnell in den verschiedenen Release Channels und die Nutzung besagter Updates kann einem das Leben durchaus leichter machen. Insofern ist meine Empfehlung alle Updates im Auge zu behalten und gegebenenfalls die Release Notes zu checken, ob es sich lohnt das Update kurzfristig zu integrieren.
Bezüglich der Release Channels kann ich übrigens noch anmerken das man auch mal eine Beta oder sogar Alpha Version testen kann. Bei Google sind derartige Versionen meist wesentlich stabiler als man es vielleicht gewohnt ist. Mitunter liegt dies wohl daran, dass Google ihre Libraries und das dazugehörige Tooling meist intern schon aktiv verwendet und somit testet, bevor es überhaupt die Außenwelt erreicht.
Flutter in Production mit Tessa - Reit-Assistent
Ich arbeite gerne mit Flutter, migrierte meine internen Java & Android Projekte und schreibe quasi täglich die eine oder andere Zeile Code. Doch ist Flutter auch was für den echten produktiven Einsatz? Diese Frage kann ich seit kurzem nun auch offiziell mit einem klar ja beantworten. Grund dafür ist meine erste Flutter App im Google Play Store (Tessa - Reit-Assistent open_in_new), welche durchaus umfangreich geworden ist und mit Dart und Flutter als Basis sehr gut funktioniert.
Der Kontext ist mit einer Companion App für Pferdebesitzer eher außerhalb meiner Kernkompetenzen, aber genau dies zeigt mir noch mehr das man mit Flutter Apps entwickeln kann, die den eigenen Wünschen oder den Wünschen eines Auftraggebers entsprechen. Grund für das Thema der App ist meine Frau, welche mit dem Reiten ein Hobby gefunden hat, welches durchaus komplex sein kann.
Google Play Service Fee - 15 Prozent Programm nicht vergessen
Sofern ihr bei Google Play Apps anbietet, welche auch Einnahmen generieren sollen, solltet ihr euch für das 15 Prozent Programm eintragen. Auch wenn es diverse Hinweise gab, auch ich möchte nochmal darauf hinweisen, denn ich weiß selber wie vergesslich ich bin und vielleicht geht es euch da draußen ja auch manchmal so.
Es geht darum das Google die Google Play Service Fee auf 15% für die erste Million (USD) reduziert. Allerdings müsst ihr euch dafür anmelden. Ansonsten zahlt ihr weiterhin 30% auf alle Einnahmen. Falls ihr von besagten Änderungen profitieren könnt und wollt, folgt einfach den Related Links. Die Anleitung besteht aus nur wenigen Schritten und schon seid ihr dabei.
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.