droidcon London 2022
2022-10-27..2022-10-28
London, United Kingdom
[droidcon London 2019, droidcon London 2022, Droidcon London 2023, droidcon London 2024, droidcon London 2025]
| title | author | length |
|---|---|---|
| From Scoped Storage to Photo Picker: Everything to know about Storage | Yacine Rezgui | 39m |
Covers how Android moved from scoped storage (Android 10) to the Photo Picker, explains concrete APIs: use MediaStore & Storage Access Framework for shared… | ||
| Practical TDD for Android | Todd Yates | 39m |
Argues that TDD is development guided by tests and shows a working approach used at Moonpig: an MVI pattern with expressive view states, intentions created on… | ||
| Best Practices for Integrating Google Wallet to Your App | Edson Yanaga | 39m |
Google Wallet integration uses the Google Wallet Android SDK (dependency com.google.android.gms.playservices.pay), requires Google Play services and the Wallet… | ||
| Mastering Flutter Web | Joachim Böhmer | 40m |
Rewrote a 10-year-old mobile game in Flutter to use one shared codebase across Android iOS web, measured bundle sizes (HTML renderer ~380 KB transfer… | ||
| Building a real-time collaboration tool using CRDTs and Kotlin Multiplatform | Anders Järleberg, Carlo Rapisarda | 39m |
A real-time collaborative board is built using CRDTs and a Kotlin Multiplatform core library shared across Android, iOS, web and backend, syncing over… | ||
| Flutter under the hood. What makes Flutter tick | Efthymios Sarmpanis | 41m |
Overview of Flutter’s internals, showing that the framework compiles to native ARM and paints every pixel itself, uses Dart’s AOT and JIT so hot reload… | ||
| Keynote: The Silver Bullet Syndrome Director's Cut - Complexity Strikes Back | Hadi Hariri | 41m |
Argues the industry keeps replacing simple, proven setups with needless complexity, citing the path from HTTP/HTML to microservices stacked with GraphQL… | ||
| Let's get this Droid on the road | Al Sutton | 36m |
Explains the practical differences: Android Auto projects apps from phones and exists on 150 million Android Auto units, while Android Automotive OS runs… | ||
| Thinking outside the Box: Custom Compose layouts | Andrey Kulikov, Andrei Shikov | 32m |
Implements a custom header and a time-graph layout using the layout composable, defines alignment lines on first/last labels and computes bar positions as… | ||
| Psychological Safety: Building fearless teams | Anastasia López, Sofia Gerbase | 36m |
A clear claim: teams with high psychological safety and high performance standards hit a “learning zone” that improves outcomes, supported by Google’s Project… | ||
| Keynote: Comedy Talk - Better Android Development (BAD) | Ben Kadel, Viktor Stojanov | 34m |
Claims a single giant file app where repositories, UI and services live together, a cardboard bad box to eliminate distractions, and a tongue-in-cheek Death… | ||
| At long last we have Kotlin first at Meta! | Peng Jiang, Sergei Rybalkin | 35m |
Meta declares 10 million Kotlin lines across tens of thousands of modules and rolls out a Kotlin‑first policy that makes Kotlin the default for new Android… | ||
| One design system to rule them all 1 | Daniel Beleza | 18m |
Company builds a reusable, automated design system that extracts tokens from Figma custom plugin into JSON, parses them with a Kotlin repository and generates… | ||
| Design for errors - An introduction to Domain Modeling with Arrow | Ivan Morgillo | 42m |
Kotlin code demonstrates domain types instead of raw strings: value classes and private smart constructors validate names and emails at creation, and Arrow… | ||
| Observation-based product development using Flutter 1 | Mangirdas Kazlauskas | 36m |
App observation splits into app behavior, user feedback and product metrics and focuses on concrete actions not theory: implement a composite logger with… | ||
| Plugging Into the Gradle Matrix | John Rodriguez, Tony Robalik | 41m |
Large monorepos are real: one repo has ~4,000+ Gradle modules and ~4 million LOC supporting ~170 active developers, another about 800 modules. The talk shows… | ||
| Android Graphics: Blurring the Lines | Chet Haase | 26m |
Android now exposes a render effect API to apply system blurs and color ops to whole views, plus an AGSL runtime shader that runs per pixel; a demo combines a… | ||
| Streamlining Success - How we went from prototyping an SDK to serving billions of customers | Filip Babić, Neevash Ramdial | 44m |
Company builds SDKs for feeds and chat with real-time UI, offline sync, unlimited message storage and CDN support, plus Firebase/Xiaomi/Huawei push providers… | ||
| Understanding Recomposition Performance Pitfalls | Jossi Wolf, Andrei Shikov | 36m |
Explains how recomposition works (snapshot observers record state reads, recomposer observes writes, composition restarts) and shows a practical profiler… | ||
| Composable Sheep: The Creative Coding Epilogue | Nicole Terc, Tasha Ramesh | 39m |
Shows how to draw and animate by plotting points in Compose using Canvas plus animationState and launchedEffect to drive a sketch composable that yields a time… | ||
| Composing With Confidence | Adam McNeilly | 23m |
Shows how to test Jetpack Compose UIs end-to-end and component-level using concrete code: use createComposeRule or createAndroidComposeRule to render… | ||
| Breaking the Rules: Dynamic Navigation in Modularized Apps | Sumayyah Ahmed | 30m |
Explains how nav components and Gradle modules introduce scoping and shows three concrete patterns: using implicit deep links (URI + nested graphs) to land on… | ||
| Behind The Screen: The Humans Who Use Our Code | Matt McKenna, Adam McNeilly | 30m |
Breaks Android users into consumer / commercial / internal / hidden categories and gives concrete failures and fixes: airline displays still run Android Donut… | ||
| Android History Q&A | Chet Haase | 25m |
A book on Android history documents 60 interviews and a four year writing process resulting in 412 pages (audio took another six months) with all profits… | ||
| What’s next for senior developers? The IC track missing manual | Lorenzo Quiroli | 36m |
Clear steps to reach staff engineer include trading low‑effort busywork for projects with measurable business outcomes, tracking before/after metrics like… | ||
| The power of Camera APIs and OpenGL all together | Suneet Agrawal | 33m |
Shows how to grab raw frames from CameraX + Camera2 and hand them to OpenGL ES (vertex + fragment shaders) to build real effects: implemented a fragment shader… | ||
| Back to front - Backend technologies for the frontend developer | Savvas Dalkitsis | 43m |
Covers practical backend techniques front-end engineers can use: HTTP cache headers and stale-if-error (implemented at ASOS to serve expired images on network… | ||
| Branching out to Jetpack Compose | Chris Banes, Nacho López | 43m |
Twitter for Android adopts Jetpack Compose over ~2 years, shipping features like Communities and a Compose navigation drawer and reaching 19 Compose modules… | ||
| Compose beyond Material | Sebastiano Poggi | 35m |
Claim: you can drop Material UI and still implement a full design system by using Compose’s four main components and reusing the foundation package primitives… | ||
| Composing in your Canvas! | Himanshu Singh | 31m |
Shows how Jetpack Compose canvas draws real UIs using concrete APIs: drawLine, drawCircle, drawPath and drawArc to build a clickable circular progress… | ||
| Opinionated guide on Proof of Concept projects | Oussama Hafferssas | 19m |
Practical checklist for proof‑of‑concepts: start by reading the docs and map product and cross‑team needs by tracking frustrations, form a clear hypothesis… | ||
| Model-driven navigation with Appyx – From zero to hero | Zsolt Kocsi | 34m |
Appyx implements model-driven navigation where navigation targets are sealed-class tokens resolved to nodes, letting code pass constructor parameters directly… | ||
| Look, Mum, No Internet - Creating great experiences with offline-first apps | Andreas Wenger | 32m |
A practical recipe for an offline‑first loyalty‑card app: store resources in a local DB, use HTTP caching headers and split large lists into per‑resource… | ||
| How to become your app's 'security champion'. | Ed Holloway-George | 26m |
Argues that mobile security matters now—3 billion Android devices, ~$2B stolen in crypto this year, 70% of fraud via mobile—and gives concrete starter steps… | ||
| How the Android Framework Monitors, Processes, and Triggers ANRs | Jamie Lynch | 29m |
Android’s framework starts a watchdog whenever work is scheduled and writes a trace to /data/anr via ANRHelper → ProcessRecord → AppErrors when thresholds are… | ||
| google-services_json file - to commit or not to commit? That’s the question | Rosário Pereira Fernandes | 18m |
Explains that the google-services.json is just configuration read by the Google services plugin (open source on GitHub) and contains an API key plus service… | ||
| Don't Kill My App: Android survival guide | Petr Nalevka | 34m |
Project documents that OEM "app killers" stop alarms, wake locks and foreground services; tests run a foreground service, acquire wake locks and schedule… | ||
| Talking to your bike and other devices (wait, what?) | Walmyr Carvalho | 39m |
Android apps connect to an e-bike over Bluetooth Low Energy using cloud-backed certificates for authorization and read/write of BLE characteristics, with a… | ||
| Practical Advanced Kotlin in Practice | Sebastiano Poggi | 31m |
Hands-on workshop that requires cloning a Git repo, IntelliJ or Android Studio and aims to get unit tests green across exercises; covers practical Kotlin… | ||
| Finding Success on Large Screens and Foldables | John Wiese | 39m |
Microsoft updates Android apps for large screens and foldables using Android 12L and a contributed Flutter/Jetpack Window Manager feature set, including a… | ||
| Demystifying Enterprise Mobile Application Development | Christopher Jobson | 25m |
SAP’s Business Technology Platform plus SAP Mobile Services and the SAP BTP SDK for Android installs as an Android Studio plugin and uses a wizard to generate… | ||
| Beyond the Basics: Performance Monitoring and User Experience for Mobile App Growth | Moataz Soliman | 17m |
Instabug measures app health end-to-end: app launch, per-screen load, UI frames, network failures/latency and crashes, and combines session buckets into a 0–1… | ||
| Power of federated plugins in Flutter's ecosystem | Guillaume Bernos | 26m |
Explains why MissingPluginException happens (native code not compiled after hot reload) and shows the real-world URL Launcher split across three packages… | ||
| Secure your Flutter Web app using Multi factor authentication | Renuka Kelkar | 24m |
Shows how to get true multi factor auth working for Flutter Web by wiring together real tools and code instead of theory. Uses Firebase + Identity Platform and… | ||
| Your app deservers its own CLI: Try sidekick | Pascal Welsch | 18m |
Sidekick generates a self‑executing CLI for Flutter/Dart projects that embeds a Dart runtime, provides a bash entry that auto‑downloads and auto‑compiles on… | ||
| Native Platform Views for mobile and beyond | Dominik Roszkowski | 37m |
Builds a native camera preview embedded in Flutter using SwiftUI via UIHostingController on iOS and macOS and a Kotlin native view using the camera-view… | ||
| M1 Mac machines in CI_CD for Flutter developers | Nils Reichardt | 21m |
Benchmarks compare an M1 Codemagic runner to Intel Mac mini and Mac Pro and show M1 builds much faster — real examples include reported reductions like 57 min… | ||
| Let's test the full widget tree! | Alicja Ogonowska | 41m |
Full widget tree testing for Flutter runs the whole app in a test, mocking network at the HTTP wrapper so tests exercise routing, state and UI up to the… | ||
| Extending Firebase | Majid Hajian | 14m |
A quick photo-sharing app uses Flutter + FlutterFire with Firebase Core, Cloud Firestore and Cloud Storage; the first upload is a 20 MB image so mobile… | ||
| Adding physics to your Flutter App | Alejandro Santiago Jaime Blasco | 23m |
Built a live “bubble chart” that maps widget votes to physics-driven circles using Force2D (Box2D port) with Flame + flame_forge2d bridge, Firebase for votes… | ||
| Securing Flutter Apps | Majid Hajian | 36m |
Claims that 75% fail basic security tests and that OWASP Mobile Top 10 issues mostly map to Flutter development guide the checklist: avoid over-requesting… | ||
| Managing multiple packages in a monorepo | Lukas Klingsbo | 16m |
Monorepo management for Dart/Flutter becomes a one‑tool workflow: Melos links local packages, fixes lockfiles or uses pubspec_overrides, and removes the manual… | ||
| KarmaApp - Why we choose flutter and Firebase | Sumith Damodaran | 40m |
KarmaApp is a volunteer rewards app built in three months using Flutter and Firebase products: Cloud Firestore for events and users, Authentication, Cloud… | ||
| Getting started with Functional Programming | Pascal Welsch | 28m |
Shows a concrete refactor: mutable product-list sort that originally calls list.sort becomes a pure function that returns a new copied list, is testable, and… | ||
| Flutter on Desktop: end to end from build to distribution | Teresa wu | 30m |
Uses Flutter 3+ and the single command flutter create --platforms=macos,linux,windows to add desktop folders to an existing project, converts a mobile/web… | ||
| Another World in Flutter | Simon Lightfoot | 38m |
Recreates the 1991 vector game Another World in Flutter by parsing original game data and porting the reverse-engineered VM into Dart; the VM is 20 KB with 256… | ||
| Demystifying Molecule: Running Your Own Compositions For Fun And Profit | Ash Davies | 34m |
Shows how Compose’s runtime can run headless so business logic emits testable streams: molecule turns composables into flows by creating a Recomposer… | ||
| Going global: building for a multilingual world | Pratyush More | 15m |
Android 13 adds per-app language preferences so apps can appear in Settings and users can pick a language without switching the whole device, backed by the… | ||
| Understanding the main thread | Hadi Tok | 23m |
Explains how the main thread runs an infinite Looper/MessageQueue loop and how a Handler.post enqueues runnables, then demonstrates with lifecycle logs that… | ||
| Tell me about it! - Improve your feedback game to become a better engineer | Elin Nilsson | 38m |
Defines feedback as four parts and gives a practical feedback formula: identify the observable action, decide corrective vs evaluative judgment, name the… | ||
| State of BLE on Android in 2022 | Erik Hellman | 35m |
Bluetooth Low Energy on Android works but has concrete caveats: target min SDK 26, use the companion device manager and companion device service for discovery… | ||
| Scaling Performance and Availability Monitoring across distributed squads | Michael Tweed | 37m |
Skyscanner standardizes a tiny Kotlin data class and an operational event logger to send self‑contained error events (feature, component, description, stack… | ||
| Migrate to Google Play Billing | Kevin Herembourg | 19m |
Google Play Billing v5 replaces SKUs with product details and adds multi-plan subscriptions: a single subscription can have multiple base plans and unlimited… | ||
| Gradle recipes for reducing your build times | Adam Ahmed | 35m |
An app with 30+ modules and 1,400 developers reduces incremental local build time from ~14 minutes to ~2 minutes by pruning plugins, switching KAPT to… | ||
| Go with the Flow! | Lamberto Basti | 40m |
Shows how to implement concrete Kotlin coroutines Flow operators: a partition operator that returns two cold flows (evens and odds) implemented with flow… | ||
| AOSP customization | Effie Barak | 40m |
AOSP is >100 GB across over 1,000 git repositories and builds on Linux; the emulator image builds out of the box while Pixel devices need vendor binary blobs… | ||
| When one device is not enough | Daniele Bonaldo | 31m |
Demo of Google’s Cross Device SDK shows a preview Android-only library (built on Play Services) that discovers nearby phones/tablets, opens low-latency… | ||
| The ever increasing convergence of native iOS and Android mobile development | John O'Reilly | 28m |
Argues that native iOS and Android are converging through concrete features: modern languages that read similarly, declarative UIs implemented as SwiftUI and… | ||
| Modularization - flatten your graph and get the real benefits | Josef Raska | 37m |
Modularization strategy enforces module rules via a Gradle plugin that fails the build on illegal dependencies, extracts tiny API modules to break serial… | ||
| Little Kotlin Multiplatform Treasures | Marc Reichelt | 42m |
Builds Kotlin/Native binaries for macOS, Linux, Windows, JS and iOS, then inspects them with file, otool/objdump and strings to find embedded UTF‑8 data and a… | ||
| Kotlin Multiplatform Mobile: From Hello World to Production | Pamela Hill, Tadeas Kriz | 41m |
Kotlin Multiplatform Mobile compiles a shared module into iOS frameworks and Android JARs and is production-usable today in beta, but tooling has friction… | ||
| Exploration of tools, frameworks to take the pain out of mobile app testing! | Syed Hamid | 18m |
Claims that a no-code test automation platform removes setup friction by spinning up real devices (example: Samsung S20) in seconds, records UI actions, and… | ||
| Decompose your Kotlin Multiplatform project into feature modules | Arkadii Ivanov | 22m |
A concrete recipe for splitting a Kotlin Multiplatform app into lifecycle-aware feature modules using the Decompose library and a tree of parent/child scopes… | ||
| Creating applications for small screen, low memory Android Wearables | Daniel Neamtu | 24m |
Shows a rugged WS50 running Android 11 AOSP with 1 GB RAM, 8 GB flash, 2 in touchscreen, camera plus barcode imager, NFC, Bluetooth, Wi‑Fi, push‑to‑talk and a… | ||
| Snapshot testing (and more!) with Paparazzi | John Rodriguez | 37m |
Paparazzi speeds Android UI feedback from minutes to seconds by running Android UI on the JVM using layoutlib’s JNI bridge and a JUnit rule that captures pixel… | ||
| App-etite for Destruction: a look into the cookbook of an attacker | Ingmar Dasseville | 33m |
Shows a concrete attack where an app reads an intent string extra and passes it into Class.forName, letting any app trigger privileged actions (examples: make… | ||
| Open Source at Scale | Nicola Corti | 35m |
React Native runs at scale: 100,000+ stars and millions of weekly downloads powering products for billions of users, so the talk focuses on concrete practices… | ||
| Modern App Performance | Ben Weiss | 41m |
Overview of concrete fixes and measured gains: partners shave app startup by about 30% (Somato reports 30% faster cold start and 600,000 extra orders), Google… | ||
| Mobile Application Performance Done The Right Way | Steve Lerner | 21m |
Claims a new tool provides video-correlated tracing that shows UI video side-by-side with system traces and a yellow line mapping which function calls which… | ||
| Lessons in CI_CD from 3500 Android Teams | Gen Citro | 24m |
Survey of ~3,500 Android teams plus Bitrise’s 2M-build/month dataset shows median Android build time of 13 minutes on Bitrise, 86% run unit tests, 69% run… | ||
| Keeping your team's Gradle builds in top shape | Nelson Osacky | 41m |
Shows concrete fixes and tools: run the build validation scripts (five reproducible experiments) to catch up-to-date, local-cache, relocatability and CI-cache… | ||
| Expand your Android app beyond the phone | Giovanni Laquidara, Anisha Malde | 28m |
Slides explain how to publish an Android app to the Amazon Appstore and run it on Fire TV, Fire TV for cars and Windows 11 via Windows Subsystem for Android… | ||
| A closer look into error handling techniques | Diana Samboní | 17m |
Claim: errors belong in the return type and treating them as first-class responses makes handling and composition predictable. Compares try/catch anti-pattern… | ||
| Take a look at Jetpack Glance | Piotr Prus | 27m |
Shows a working weather widget built with Glance alpha5 using Compose runtime to emit RemoteViews, with per-widget state stored as GlanceId per-widget prefs… | ||
| Exploring Android internals with ADB | Chris Simmonds | 41m |
ADB is three pieces (adbd, adb server, adb client) and the demo uses command‑line ADB, getprop, uname -a (device runs Android 13 on Linux 5.10)… | ||
| Creating & Scaling Meaningful Performance Tests in CI | Ryan Brooks | 38m |
Focuses on testing only controllable, reproducible, impactful metrics (e.g., app startup) and warns against testing raw network latency or dynamic UI without… | ||
| Caching your GraphQL data graph | Martin Bonnin, Benoit Lubek | 21m |
Explains how Apollo Kotlin implements a normalized cache that flattens nested GraphQL responses into record maps keyed by IDs, with both an in-memory layer and… | ||
| Best practices for shielding mobile apps from emerging threats | Jan Vidar Krey | 40m |
Covers concrete defenses and failures: shows using Freda debugger and simple repackaging to change app behavior, reports testing 103 banking and finance apps… | ||
| nothing matches | ||