Vom 31.10.2024 bis 01.11.2024 fand die droidcon in London statt und das Android Team von Apps with love war zum ersten Mal vollständig vor Ort dabei (yay!). In den zwei Tagen fanden sich über 1’500 Android Entwickler*innen im Business Design Center in London zusammen. Sich mit Gleichgesinnten in Form einer Konferenz auszutauschen, ist wohl eines der spannendsten Dinge, die wir als Entwickler*innen so tun können. Und es macht dazu auch noch ganz viel Spass.
Anreise an die Droidcon 2024 in London
Die Reise startete in Bern, wo wir den Zug nach Basel genommen haben. Für ein Hallo im Basel-Office hats leider nicht gereicht, dafür aber eine Frühstückspizza im Bahnhof. Yummy!
Unsere kulinarische Anreise ging weiter nach Paris mit dem TGV. Angekommen in Paris, führte uns Miggi zu einer Bäckerei, wo es angeblich die besten Gipfeli gibt. Es war auf jeden Fall lecker.
Mit dem Gebäck im Bauch ging es für uns weiter mit dem Eurostar nach London. Während wir unter Wasser fuhren, bestellte Yannick im Bordrestaurant einen Kaffee. Wer kann schon von sich behaupten, einen Kaffee unter Wasser getrunken zu haben? Ansonsten war die Fahrt bei dichtem Nebel relativ unspektakulär. Aber die Vorfreude und das Abschliessen letzter Sprint-Tickets hat uns beschäftigt gehalten.
Talks
In den zwei Tagen durften wir zahlreiche verschiedene Talks anhören. Die Wahl war nicht immer einfach, denn es gab immer sechs Tracks, in denen gleichzeitig Talks liefen. Aber glücklicherweise wurden alle aufgezeichnet und können auch noch im Nachhinein angeschaut werden. Nachfolgend haben wir alle aufgeschrieben, welche Talks uns am besten gefallen haben.
Im Talk von Romain ging es darum, wie das Jetpack Compose Team daran arbeitet, mit Optimierungen die Performance zu verbessern. Dabei erwähnte er verschiedene Konzepte wie auf hohem Level, aber auch auf Memory Level optimiert werden kann, am Beispiel von Prozessoren und wie die Daten verarbeitet werden.
Anhand von Live-Demos hat Romain gezeigt, wie ein Code zwar optimiert aussehen kann, der dazugehörige Bytecode aber noch lange nicht optimiert sein muss. Mit ein paar Optimierungen konnte er die Grösse des generierten Byte-Codes oftmals um ein Vielfaches reduzieren.
Glücklicherweise müssen wir uns mit solchen Byte-Level Optimierungen bislang nicht beschäftigen, aber jetzt wissen wir auf jeden Fall, auf was es zu achten gilt. Aber auch für uns als Android Entwickler*innen gab Romain wertvolle Tipps mit. Erstens, das Aktivieren von Google’s “R8 Code Shrinking”, was die App Performance oftmals schon einiges besser macht und was üblicherweise relativ einfach aktiviert werden kann. Das machen wir aber zum Glück bereits. Weiter kann mit “Baseline & Startup Profiles” die Startzeit von Apps verbessert werden, sicher etwas, worauf wir nächstens einen Blick werfen werden.
Und dazu noch eine wichtige Anekdote von Romain: Wenn Features auf Performance getestet werden (Benchmark), am besten einen Kühlschrank in der Nähe haben. Denn wenn die Phones durch das Performance-Testen heiss werden, kann das die Ergebnisse beeinflussen.
Securing Android: Tackling Advanced Threats and Enhancing App Security
Von: Mohammed Kerroumi, Zimperium - Solutions Architect
Lieblings-Talk von Miggi
Mohammed’s Talk hat gezeigt, wie Android Apps angegriffen werden können und wie man sie davor schützen kann.
Zuerst zeigte er uns, wie einfach es ist, ungeschützte APKs zu decompilen und daraus wichtige Informationen wie Api-Keys herauszulesen. Dafür nutzte er Tools wie Ghidra und Jadx, die für alle zugänglich sind. Hier hat auch die Obfuscation mit R8 oder Proguard nicht viel Schutz gebracht, da diese nur Variablen und Klassen umschreiben. Die Keys sind aber immer noch vollständig lesbar. Er zeigte uns, wie sich die Malware über die Jahre weiterentwickelt hat und nun auch bei gesperrtem Gerät agieren kann.
Um Apps jetzt noch sicherer zu machen, hat er uns eine ganze Menge “Protection-Techniques” gezeigt - von Integrity Checks bis hin zu Control Flow Obfuscation - und uns Best Practices mit auf den Weg gegeben. Bei der Entwicklung von Apps sollte man sich immer bewusst sein, dass auf einer unsicheren Umgebung entwickelt wird. Android Phones können leicht gerootet werden. Dadurch sind App Folders nicht mehr sicher.
Meine Takeaways:
Wenn du Android Apps entwickelst, solltest du immer daran denken, dass deine App auf einem unsicheren System läuft.
Creme-Schnitten-Technik: Die App in möglichst vielen Layern sichern.
Tap it! Shake it! Fling it! Sheep it! - The Gesture Animations Dance!
Von: Nicole Terc, HubSpot - Android Tech Lead
Lieblings-Talk von Dinah
Mit ihrem Talk wollte Nicole das Potenzial von Animationen in KMP und CMP aufzeigen. Dabei hat sie ein Bild eines Schafs auf verschiedene Arten animiert und demonstriert, wie Entwickler*innen UI Elemente animieren können.
Um etwas zu animieren, stellt sie sich jeweils folgende Fragen: Was? Wann? und Wie? Bei folgender Animation werden die Fragen folgendermassen beantwortet:
Was? Skalierung
Wann? Beim Antippen des Schafs
Wie? Wechsle zwischen 1.0 und 1.2
Besonders spannend wurde es, als Nicole die Smartphone-Sensoren thematisierte. Denn Benutzer*innen können Interaktionen natürlich nicht nur mit dem Finger auslösen, sondern beispielsweise auch indem sie das Smartphone schütteln oder es drehen. Ein Smartphone besitzt aber noch viel mehr Sensoren. Diese können praktischerweise fürs Testing auch im Android Emulator ausgelöst werden.
Nicole hat alle Beispiele in Kotlin Multiplatform (KMP) und Compose Multiplatform (CMP) umgesetzt, womit sie die Animationen im Handumdrehen auch auf einem iPhone-Emulator zeigen konnte. Wie die Sensoren im Code verwendet werden können, kann sich allerdings zwischen Android und iOS unterscheiden. So versteht das Koordinatensystem in Android für die Orientationssensoren unter der Z-Achse (wenn man das Smartphone vom Hoch- ins Querformat dreht) eine Drehung von 0° bis 360°, iOS jedoch eine von -180° bis 180°. Das muss beim Programmieren entsprechend berücksichtigt werden.
Das Git Repo mit allen Beispielen befindet sich auf Nicole's GitHub.
Wireless protocols for the next generation IoT devices
Von: Erik Hellman, Freelance software engineer
Lieblings-Talk von Ossi
Erik Hellman hat in seinem Talk verschiedene Technologien zur Kommunikation mit IoT Geräten vorgestellt. Er hat aufgezeigt, was Vor- und Nachteile der jeweiligen Protokolle sind, was die Anwendungsbereiche sind und wie man diese bei der Entwicklung von Android Apps implementieren kann.
WiFi überzeugt durch seine hohe Datenrate und weite Verbreitung. Es eignet sich ideal für Anwendungen, die eine schnelle Verbindung erfordern, wie smarte Haushaltsgeräte oder Kameras. Allerdings ist WiFi energieintensiv und daher für batteriebetriebene Geräte ungeeignet. WiFi Easy Connect (DPP) vereinfacht die Installation von IoT-Geräten, indem es eine sichere, passwortlose Einrichtung ermöglicht.
Bluetooth wird in zwei Varianten genutzt: Bluetooth Classic und Bluetooth Low Energy (BLE). Während Classic höhere Datenraten liefert und sich für kontinuierliche Verbindungen eignet, ist BLE besonders energieeffizient und ideal für batteriebetriebene Geräte. Bluetooth ist weit verbreitet, allerdings begrenzt in Reichweite und Bandbreite. Es wird oft in Wearables, Gesundheitsmonitoring und smarten Haushaltsgeräten eingesetzt.
LoRa und LoRaWAN punkten mit einer enormen Reichweite und minimalem Energieverbrauch, was sie für das Verbinden von Sensoren an abgelegenen Orten ideal macht. Da LoRa jedoch eine geringe Datenrate hat, ist es ungeeignet für datenintensive Aufgaben.
Thread ist ein energieeffizientes Mesh-Netzwerk-Protokoll, das speziell für IoT-Geräte im Smart-Home-Bereich entwickelt wurde. Die Matter-Kompatibilität ermöglicht eine einheitliche Verbindung von Geräten verschiedener Hersteller und Plattformen.
Ultra Wide Band (UWB) bietet eine hohe Präzision bei der Standortbestimmung und eignet sich daher für spezielle Anwendungen wie Zugangskontrollen oder Indoor-Tracking. Leider gibt es nicht viele Android Smartphones, die UWB unterstützen, besonders günstigere Modelle haben keine Antenne dafür.
Fazit
Jedes dieser Protokolle hat spezifische Stärken und Schwächen, die es für unterschiedliche Anwendungsfälle geeignet machen. WiFi eignet sich für datenintensive Anwendungen, Bluetooth für den mobilen Einsatz, LoRa für grossflächige, energiesparende Anwendungen und Thread für das Smart Home. UWB ist eine mächtige Technologie, die sowohl Datenaustausch als auch Positionierung ermöglicht. Die Wahl des passenden Protokolls ist entscheidend, um IoT-Geräte effizient und zuverlässig in verschiedene Netzwerke zu integrieren.
Unsere allgemeinen Eindrücke der Droidcon
Beim gut besuchten Stand von Google waren einige Gesichter zu entdecken, von welchen wir schon den einen Blog und das andere Video anschauen durften. So konnten wir uns diese Chance natürlich nicht entgehen lassen und haben selbst mit dem Team gesprochen und unsere Wünsche und Feedbacks eingebracht. Offenbar hat dem Google Team gefallen, was wir machen und uns ein Google Fold (!) geschenkt, um unsere Apps besser auf grösseren bzw. faltbaren Screens zu entwickeln und zu testen. Danke Google! 😍 (und speziell Alex Vanyo & Rebecca Gutteridge)
Dank der vielen Sponsoren der Droidcon gab es beinahe unendlich viel Merch, die wir ergattern konnten. Es gibt nie genug Stickers auf einem Laptop und Android-Figuren auf unseren Desks. 🎉
Kotlin Multiplatform
Auch an der droidcon London war das Thema Kotlin Multiplatform (KMP) präsenter denn je. Zusammen mit “KMP-Vorreitern” wie Kevin Galligan & John O’Reilly sowie dem Jetbrains-Team Sebastian Aigner & Márton Braun an einer Konversation teilzuhaben, war inspirierend - auch wieder einmal gut zu sehen, dass sie selbst auch “nur Menschen” sind. Seit diesem Jahr verwenden wir KMP auch als Tool in unserem Tech-Stack und sind sehr gespannt auf dessen Weiterentwicklung. KMP ist vielversprechend und könnte sich als Cross-Platform-Technologie definitiv durchsetzen.
Unser Fazit der Droidcon in London
Wir sind in den vergangenen Jahren ja schon hin und wieder mal an einer Droidcon gewesen, aber die Droidcon in London ist definitiv ein Highlight. Wesentlich grösser als die Events, an denen wir bisher waren. An dieser Konferenz hatten wir Zeit mit anderen zu connecten, durften bei spannenden Talks dabei sein. Wir haben nun viel neues Material zum Verarbeiten, Recherchieren und Evaluieren, was die Konferenz für uns definitiv zu einem Win macht. Speziell im Bereich Adaptive-Layout (unterstützen von Phones, Foldables und Tablets) und Kotlin Multiplatform konnten wir wertvolle Tipps mitnehmen und werden uns in der kommenden Zeit noch viel damit auseinandersetzen.