Droidcon London 2023
2023-10-26..2023-10-27
London, United Kingdom
[droidcon London 2019, droidcon London 2022, Droidcon London 2023, droidcon London 2024, droidcon London 2025]
| title | author | length |
|---|---|---|
| Flounder to Flutter Found | Luke W | 07m |
Labrys builds a single platform that integrates communications, task management, payments and secure coordination for defense, humanitarian and commercial… | ||
| Improving Video Playback with ExoPlayer | Alexey Bykov | 35m |
ExoPlayer and Media3 are used end to end: MP4 progressive delivery cuts playback errors by about 5% and boosts views, so use MP4 for short clips; adaptive… | ||
| And Gradle says: sharing is caring - Or why Gradle Plugins are all you need for your Configuration | Matthias Geisler | 30m |
Gradle plus Kotlin DSL uses version catalog TOML files to centralize versions, libraries, plugins and bundles, letting teams publish catalogs to… | ||
| Bluetooth Magic, first level | Nicole Terc | 32m |
Builds a Bluetooth Low Energy mushroom-garden demo using AndroidX Bluetooth LE (alpha), GATT services and UUIDs, advertising, scan filters, and read/write of… | ||
| Demystifying Dagger | Ryan Harter | 48m |
Asserts Dagger remains useful and explains how it works under the hood: annotation processing generates Java factories like CrashReporter_Factory and members… | ||
| Hot Take:Engineering Managers are actually useful! | Parth Padgaonkar | 40m |
Engineering managers plan and negotiate roadmaps and capacity (example: a five‑engineer team with two juniors, two mids, one senior), prioritize company… | ||
| Flutter For The Discerning Android Developer | Simon Lightfoot | 23m |
Flutter compiles Dart with JIT during development and AOT to native machine code for release, enabling hot reload and small runtime startup via compile-time… | ||
| A Picture Is Worth A 1,000 ... Lines? Devs?: Get the full picture (on image loading) with Coil | Rafa Moreno | 41m |
Coil implements a concrete fetch‑decode‑transform pipeline that replaces the three naive lines of code by using an OkHttp LRU disk cache plus Okio buffering to… | ||
| A\B Test Best Practices and Fun Case Studies from Deliveroo | Jamie Adkins, Edward Harker | 34m |
Deliveroo runs about 200 AB tests/year and uses experiments to turn guesses into dollars: removing the email button background increases sign‑ups, persisting… | ||
| Brick by Brick: Building Open Source libraries | Paolo Rotolo, Nicola Corti | 41m |
A pintro (AppIntro) starts as an onboarding library that now has more than 10,000 stars on GitHub, handles onboarding, permissions and custom layouts, and is… | ||
| Composing ViewModels:Breaking ViewModels into smaller self-contained UI models | Hakan Bagci | 40m |
Micro-features replaces one giant ViewModel with many self-contained UI models backed by a root Jetpack ViewModel that passes scope and SavedStateHandle… | ||
| Easy screenshot testing with Compose | Jose Alcérreca | 35m |
Screenshot testing verifies visuals by comparing new images to golden files and the ecosystem now supports JVM rendering with tools like Roborazzi and… | ||
| How to handle incidents at scale | Alessandro Mautone | 19m |
Defines incidents as unexpected disruptions and prescribes a concrete workflow: detection via tools like Firebase Crashlytics, Datadog and Prometheus with… | ||
| How to stop the ‘Gradle Snatchers’: Securing your builds from baddies | Ed Holloway-George | 38m |
Shows how Gradle dependency verification actually works: generate verification-metadata.xml, use SHA-256 checksums and PGP signatures to catch impostors like… | ||
| Fireside Chat with Googlers | Nick Butcher, Alice Yuan, Ben Trengrove, Jolanda Verhoef, Roberto Orgiu, Jose Alcérreca, Matvei Maltkov | 46m |
A Google panel answers concrete roadmaps and tooling: a new flow to convert Compose previews into screenshot tests -> CI first later this year (Studio UI… | ||
| Experimenting around Dart Entrypoint Function Name to get it all | Vadym Pinchuk | 19m |
Experimentation shows a Flutter app can expose multiple isolated start flows by overriding getDartEntrypointFunctionName and wiring Android intent-filters to a… | ||
| Delivering Seamless Mobile Experiences Through Holistic Testing | Simona Domazetoska | 38m |
Claims an AI-powered convolutional neural network flags UX issues automatically and ties them to an impact score; a real-device farm with three data centers… | ||
| Peeling Back the Layers: Unmasking the UI-nknown! | Manuel Vicente Vivo | 37m |
Concrete guidance: expose screen UI as an observable holder such as StateFlow or Compose state (or LiveData) and convert external Flows with stateIn using… | ||
| Google Home, But Better:Smart Home Display with Flutter | Moritz Theis | 30m |
A full smart‑home display runs on Raspberry Pi 4B (4GB RAM) with an SCD41 CO2/temperature/humidity sensor attached over I2C, a Waveshare 11" IPS touch display… | ||
| How Custom RenderObjects can make your life easier | Romain Rastel | 35m |
About 70% of devs never write a render object and 12% admit being intimidated, yet concrete wins push it: custom layout solves a chat reaction bar that must… | ||
| Exploring Records and Patterns | Pascal Welsch | 36m |
Dart 3 adds records and pattern matching that create positional/named tuple types, auto-generate equals/hashCode, and are immutable but lack a built-in… | ||
| Android Large Screen:How your app can power a workstation | Benedict Kennedy | 40m |
Zebra demonstrates turning a TC52 phone and a workstation connect dock into a usable desktop workstation for retail and healthcare, consolidating POS, printers… | ||
| Beyond the Basics: Performance Monitoring and User Experience for Mobile App Growth | Sean Higgins | 14m |
Instabug claims deployment on nearly 3 billion devices and 25,000 app teams and adds session replay, app review management, and release controls to crash… | ||
| Bring the power of Postgres to your Flutter app with Supabase | Tyler Shukert | 38m |
Supabase provides a fully managed Postgres database with auth, storage, real-time and edge functions (Deno), plus a vector DB via pgvector, and a Flutter SDK… | ||
| Deep Dive into Flutter Animations: Crafting Dynamic and Engaging UIs | Josteve Adekanbi | 35m |
Shows concrete code patterns using Flutter implicit widgets like animated scale, animated opacity and animated position with real values (scale 2 or 3.1… | ||
| Hitting a Gold Mine:How to Set the Gold Standard With Golden Tests | Marcin Chudy | 35m |
Golden tests render Flutter widgets to PNGs and compare them as snapshots; the team uses golden_toolkit and optionally alchemist for setup, writes at least one… | ||
| Honest mistakes caused by shallow interpretation of SOLID | Haroldo Olivieri | 37m |
Shows concrete failures from shallow SOLID use: a growing base class that becomes a god object, an engine example where adding an IEngine causes invalid regen… | ||
| Rolling in the deep(link) - take a deep dive into Flutter navigation | Alicja Ogonowska | 32m |
Covers concrete steps: Android intent filters and hosting an assetlinks.json file, iOS Associated Domains and Apple App Site Association format, and demo… | ||
| Seamless Interoperability: Harnessing JNIGen and FFIGen | Akanksha Singh, Kendi J | 31m |
Shows concrete bridges between Flutter and native code: method and event platform channels for simple calls like battery level, a camera/AR demo that accesses… | ||
| Practical Magic with Animations in Compose | Rebecca Franks | 32m |
Implements a gesture-driven navigation drawer in Jetpack Compose that translates X, scales content to 0.8, and rounds corners using Modifier.graphicsLayer… | ||
| Building RTL-Ready Flutter Apps | Raouf Rahiche | 20m |
Right-to-left scripts change layout, not just text: use Flutter’s Directionality/TextDirection, EdgeInsetsDirectional, PositionedDirectional and… | ||
| From Complex to Seamless:Succeeding in codebase migrations | Maria Neumayer | 33m |
Skyscanner migrates hotels from React Native to native with a goal to remove RN, adopt Compose and SwiftUI, and leave a maintainable foundation; the team uses… | ||
| Do more faster - Taking your Mobile DevOps setup to the next level | Tamás Bazsonyi | 21m |
Four-stage recipe for faster mobile CI/CD: start with crawl/walk/run/fly (automate, parallelize, cache, remote cache), use Bitrise stacks and a step library to… | ||
| Exploration of Touch & Input in Jetpack Compose | Jolanda Verhoef | 38m |
Demonstrates building a Compose photo grid that supports tap-to-open, double‑tap and pinch zoom, pan, and long‑press‑and‑drag multi‑select using real code at… | ||
| Android App Performance in a Nutshell | Ben Weiss | 39m |
Shows concrete wins and tools: shipping baseline profiles cuts runtime and startup about 30% (Google Maps, Somato) and cutting startup by 77% is reported for a… | ||
| I have a Date | Renaud Mathieu | 24m |
Calendars, time zones and clocks cause real bugs: the Gregorian calendar drifts one day every ~3,000 years, some zones use 30 or 45 minute offsets, and UTC… | ||
| Become a hero to your DevSecOps team | Neal Michie | 21m |
Demo shows a mobile app (a PS Pizza proof-of-concept) with a hardcoded API key and an HMAC-like challenge/response where an extractor uses ADB and JADX to pull… | ||
| Enhancing Jetpack Compose App Performance:Tools, Strategies and Optimizations | Tomáš Mlynarič | 35m |
Use Jetpack Macrobenchmark and Perfetto-backed composition tracing to measure real user-facing metrics: startup and frame timing, trace-section durations and… | ||
| Advanced Android Canvas APIs | Markus Hintersteiner | 18m |
A canvas recorder is implemented to intercept and save Canvas commands for Android session replay, forwarding commands to the real Canvas while recording; a… | ||
| Go the extra mile for your media app on Android | Antoine Danois | 16m |
Quick, actionable checklist of features that actually ship: enable Android Auto via MediaBrowserService and ExoPlayer (min SDK 23, declare icons and… | ||
| Building Compose APIs | Jossi Wolf | 32m |
Jetpack Compose team replaces a brittle swipeable API with a simpler, iteration-first design that becomes anchorDragable state plus modifier.dragable. The old… | ||
| Challenges, failures and lessons from an agency building mobile products at scale | Carl-Gustaf Harroch | 35m |
Digital agency Novoda grows from bedroom hack to ~100 people, builds hundreds of apps (Vetate for field data, MeetUp Android client, Timescape plugins), runs… | ||
| Blast Off_ Managing Hundreds of UI Updates for Emoji Cannons | Piotr Prus | 15m |
Builds an emoji cannon in Jetpack Compose and shows concrete fixes: replace normal modifiers with offset lambda and use graphicLayer for rotation/alpha to… | ||
| Our ongoing journey from REST to GraphQL on Android | Julien Salvi | 39m |
Migration moves Heroku from REST to a GraphQL API built on AWS AppSync with the Android client using Apollo Kotlin, separate OkHttp clients, Dagger Hilt lazy… | ||
| Nested Navigation in flutter web | Renuka Kelkar | 26m |
Shows how go_router handles URL-based routing on Flutter web, why its default shell loses page state, and why the new stateful shell route plus an index stack… | ||
| Navigation superpowers at your fingertips | Zsolt Kocsi | 33m |
Live demo of a multiplatform UI system that builds composable, gesture-driven transitions using the open source Epics toolkit: components (backstack, spotlight… | ||
| Multiplatform USB:How to Communicate Seamlessly | Mario Bodemann | 36m |
Multiplatform pipeline that turns images into a zipped base64 payload, sends it over USB/serial and runs on Android, desktop, terminal and a web frontend; uses… | ||
| Mobile Observability at scale | Josef Raska | 35m |
Focuses on real time mobile observability (not post hoc analytics) and shows concrete practices: report response parsing errors with endpoint URL and exception… | ||
| Migrating to Jetpack Compose - an interop love story | Simona Milanovic | 33m |
Migrating a view‑based app to Jetpack Compose works incrementally: the demo refactors a Reply sample by converting three small shared components (account item… | ||
| Meet Jewel:Create IDE plugins in Compose | Sebastiano Poggi, Chris Sinco | 33m |
Jewel is a Compose for Desktop implementation of IntelliJ’s New UI that provides a Compose Multiplatform component library plus a Swing bridge to map… | ||
| Introduction to Game Development with Flutter and Flame | Shree Bhagwat | 43m |
A playable Mario‑style runner is built with Flutter plus the Flame engine using a sprite animation group to switch idle/run/jump/dead states, sprite sheets… | ||
| Why is my app letterboxed?! | Roberto Orgiu | 24m |
Explains why Android puts apps into letterbox/size-compat mode (fixed orientation lock, fixed aspect ratio, or non-resizable) and how OEMs ignoring requested… | ||
| Why can't my app open that file? A deep dive into the Android app sandbox | Chris Simmonds | 37m |
Explains why apps get FileNotFound or SecurityException by showing Android’s sandbox is Linux DAC plus SE Linux MAC: every app gets an app UID per package… | ||
| White-box Cryptography | Atis Straujums | 09m |
Claims that white‑box cryptography can keep keys hidden even when attackers control the device, and demonstrates a concrete product: Zkeybox produces a… | ||
| Trust no one - Introducing the Play Integrity API | Pietro Maggi | 32m |
Play Integrity API verifies that backend requests come from honest apps and devices by returning an attestation with three signals: app integrity, device… | ||
| The terminal is your friend | Enrique Ramírez | 20m |
Argues that the terminal becomes a practical daily companion for Android work by showing concrete configs, aliases and tiny scripts that save time: split… | ||
| TextField in Jetpack Compose:past, present and future | Alejandra Stamato, Anastasia Soboleva | 41m |
New Jetpack Compose text APIs replace the old value/callback shape with a state object and provide concrete tools: basic text field 2 with… | ||
| Structuring modules in an Android app project | Kinnera Priya Putti | 17m |
Project moves from a flat list to nested folders, a codeowners file assigns specific reviewers, and interface modules plus a runtime service-locator meta file… | ||
| Stop Treating Accessibility as an Afterthought: Concrete Steps to Build Inclusive Apps | Manuela Sakura Rommel | 17m |
Accessibility is framed as concrete Flutter practice: target WCAG 2.1 AA (legal risk in EU/US/UK), test with Flutter’s AccessibilityGuideline class and the… | ||
| Sink or swim:proving ideas in production, fast | Ivan Morgillo, Aurelio Laudiero, Daniele Bonaldo | 27m |
Built two Android apps: a Midjourney-generated wallpapers app and a kids bedtime-stories generator using chat AI, both shipped on the Play Store and responsive… | ||
| Shipping production ready Rust for Android | Tarik Eshaq | 30m |
Rust eliminates most memory‑safety bugs and industry teams report ~65–70% of severe vulnerabilities are memory related, so Mozilla compiles Rust into Android… | ||
| A guide to using foreground services and background work in Android 14 | Alice Yuan | 37m |
Android 14 requires apps targeting it to declare mandatory foreground service types in the manifest or the app crashes at runtime; libraries must include them… | ||
| Writing Kotlin Multiplatform libraries that your iOS teammates are gonna love | André Oriani | 36m |
Explains concrete KMP-to-Swift failure modes and fixes: name clashes from flat Objective-C namespaces and overloads solved with Objective-C bridge naming and… | ||
| Working with custom Android devices | Erik Hellman | 37m |
Covers the exact kit and steps used to get custom Android hardware from lab to boot: order developer boards early (delivery can be three months), expect… | ||
| Think outside the server | James Hamilton | 17m |
Covers why client apps need active defenses: modded APKs remove ads or unlock features, social‑engineered crypto APKs impersonate originals, and game clients… | ||
| Take your shot of Vitamin! | Gerard Paligot | 21m |
Vitamin is a cross‑platform design system: Figma, web, Android (XML plus Jetpack Compose implementation), and iOS (UIKit and SwiftUI). It ships as Gradle… | ||
| Put Your Tests on a Diet:Testing the Behavior and Not the Implementation | Stelios Frantzeskakis | 32m |
Argues that replacing heavy mocking with a Given‑When‑Then BDD style on a sample chat app (StateFlow viewmodel, use cases, repository, message factory) yields… | ||
| Practical ADB usage to enhance your life! | Ben Kadel | 39m |
Shows how to automate daily device tasks by building a bash script that sends ADB input events to log into an app without touching the phone, using dynamic… | ||
| Performance in Compose:Lessons learned from Lazy layouts | Andrei Shikov | 37m |
Updating to the latest Compose yields measurable wins—benchmarks show around 25% scroll frame-time improvement since recent releases—and switching debug APKs… | ||
| Now smile (also in 3D)! Exploring AR, ML and Camera related APIs on Android | Walmyr Carvalho | 39m |
Recommends using CameraX for photo and video (CameraX 1.3.0 is now stable with effects and video), warns about permissions and bind/unbind lifecycle pitfalls… | ||
| Making Data Visualizations More Accessible - Lessons Learned | Eeva-Jonna Panula | 37m |
Shows concrete fixes for Android Compose charts: adds a custom highlighter composable around Canvas points, gives each slice a content description via… | ||
| From Laptop Builds to Advanced CI | Jason Pearson | 52m |
Journey from laptop builds to a CI that routinely gives 3 minute unit-test runs and ~9 minute minified releases on a 400-module, 290k-line Kotlin codebase with… | ||
| Developer Productivity On a Budget | Jordan Terry, Adam Ahmed | 36m |
Automated crash triage queries BigQuery every 30–45 minutes, parses stack traces, calls OpenAI for suggested fixes, and files Jira tickets to the correct board… | ||
| Designing for Errors in a Kotlin-first SDK:When to throw, nullify, or return a Result. | Hudson Miears | 17m |
The Kotlin-first SDK migration revisits error strategy across about 2,000 functions built atop a C++ core with JNI and finds three actionable patterns: throw… | ||
| Creating Engaging Android TV and Fire TV Apps with Native and Cross-Platform Tools | Giovanni Laquidara | 37m |
Smart TV market hits ~$298B by 2026 with ~150M Android TV monthly devices and 200M+ Fire TV units sold, so demand is real. Android TV/Fire OS apps only need… | ||
| Composing an API the *right* way | Márton Braun | 41m |
Google's Compose guidelines condense ~13,000 words and recommend concrete rules: composable functions either emit UI (use UpperCamelCase nouns) or return… | ||
| App architecture - singular vs plural | Yoni Tietz | 17m |
Trainline adopts MVVM and MVI, using MVI for predictable, logic‑heavy screens (user state drives immutable view states) and MVVM for the rest, with… | ||
| 90s Website … in 2023 on mobile in Compose … for science | Maia Grotepass | 38m |
A 90s‑style site is reimplemented with Jetpack Compose multiplatform using shader brushes, remembered brushes and infinite transitions, keyframe animations… | ||
| What's new in Paparazzi? | John Rodriguez | 40m |
Paparazzi rewrites resource loading to stop depending on the deleted Android Studio legacy resource repo, replacing it with a lean IntelliJ-style resource… | ||
| Unlocking Unity for Android Developers: Blending Android and Unity in Harmony | Yevhen Pekutovskyi | 33m |
Step‑by‑step recipe for embedding Android into Unity and vice versa using Gradle, .aar libraries and Unity’s AndroidJavaObject/AndroidJavaClass bridge with a… | ||
| The GPT-ification of Mobile App Testing | Syed Hamid | 19m |
Demo shows a no-code platform (sophie.ai) plus OpenAI/Azure LLMs that provisions real physical devices in under 10s (demo uses a Samsung Galaxy S10), records… | ||
| Sync Data with your Mobile Kotlin App The Easy Way! | Mark Brown | 35m |
A Kotlin sample app uses MongoDB Atlas Device Sync (Realm SDK) to provide birectional real‑time sync with a cloud Atlas cluster, a local ACID object store, and… | ||
| Supporting your architecture with code coverage and static analysis rules | Michael Tweed | 20m |
Describes a practical rollout: measure coverage with Jacoco, check results into CI, and apply inclusion and exclusion rules so only architecturally relevant… | ||
| Staying Relevant | Neil Hutchison | 34m |
A concrete plan for staying current: split learning into passive (read one blog post a week via Android Weekly, watch Twitch streams, attend a meetup) and… | ||
| REST in Peace: A Journey Through API Protection | Andreas Luca, Marc Obrador Sureda | 14m |
Backend team observes thousands of calls to public endpoints and shows HTTPS plus static API tokens still leak. A demo app and scripts prove interception via… | ||
| Refactoring and Test Fakes: Crafting Resilient Code with Confidence | Ash Davies | 30m |
Argues refactor by creating seams (constructor injection, function params, narrower interfaces) so dependencies become replaceable without behavior changes… | ||
| Deep-Dive Into Mobile Accessibility & Interactive Quiz | Fanny Demey | 37m |
Summary gives concrete takeaways: native screen readers read by on‑screen position not view hierarchy, causing awkward orders; Android and iOS differ so test… | ||
| Conducting tech interviews | Bob Dahlberg | 38m |
Twenty years of hiring experience leads to concrete practices: after running ~40 interviews in 2–3 weeks (40+ intro calls, ~21 first-round, 12–15 second-round… | ||
| Becoming and Staying a Productive Developer with Build Scans, Build Validation Scripts and Gradle | Etienne Studer, Nelson Osacky | 37m |
Shows concrete tooling and fixes for Gradle-based Android builds: use the DevVelocity/Gradle plugin and artifact transforms in build scans to see previously… | ||
| nothing matches | ||