droidcon Berlin 2022
2022-07-06..2022-07-08
Berlin, Germany
[droidcon Berlin 2015, droidcon Berlin 2016, droidcon Berlin 2018, droidCon Berlin 2019, droidcon Berlin 2021, droidcon Berlin 2022, droidcon Berlin 2023, droidcon Berlin 2024, droidcon Berlin 2025]
| title | author | length |
|---|---|---|
| Orchestrate your UI tests with Conductor | DMITRY ZAYTSEV | 31m |
Conductor is an open source CLI and Kotlin library that runs black‑box Android (and iOS) UI flows without installing test APKs, replacing the ADB binary with a… | ||
| 5 ways to improve your Android build productivity | Boris Farber, Miłosz Moczkowski | 32m |
Five concrete fixes: keep Android Gradle Plugin and Gradle up to date (AGP 7 replaces compile with implementation), enable configuration cache in… | ||
| Bloated ViewModels? What Next | DAVID ODARI KIRIBWA | 22m |
Android ViewModel usage narrows to one concrete claim: dumping business logic into Android Architecture Components ViewModels turns them into 900–2,000 lines… | ||
| Testing: how hard can it be? | Danny Preussler | 36m |
Builds a Compose login flow and proves it with JVM tests that exercise ViewModel coroutines, a Retrofit/Moshi API client, and an… | ||
| A talk for self-perceived impostors and their friends | Zsolt Kocsi | 15m |
About 70% of people hit impostor feelings and 58% of big‑tech employees report it regularly, and the talk gives concrete fixes: keep a written log of positive… | ||
| Why do I have more than one Application instance? | DANIIL POPOV | 16m |
App instances duplicate across processes when merged manifests from libraries declare components with a process attribute, causing secondary processes to fork… | ||
| Community Day | Ash Davies | 14m |
A live experiment uses a clicker and two colored slides so the audience controls whether the argument is pro or con, forcing a rapid flip between positions on… | ||
| Upgrade Android Studio experience by building your own plugins | Santosh Astagi | 20m |
Build plugins with the Gradle plugin (recommended), the older DevKit, or a GitHub template; register UI and actions in plugin.xml manifest; match the IntelliJ… | ||
| Gesture navigation best practices | Diego Zuluaga, Aaron Labiaga | 33m |
Covers concrete migration steps to use the Android 13 onBackInvoked / AndroidX ahead-of-time APIs, shows a WebView example that moves from… | ||
| Skill-building and Growing in Seniority | 01h 01m | |
Five-panelists with about 10+ years experience map concrete ways to level up: publish small apps to GitHub and publish a Play Store app ($25) (three simple… | ||
| Android at Scale | Anita Singh | 01h 00m |
Panelists compare concrete patterns and mistakes for scaling Android: teams grow from 7→20 and 10→90 to 200+ engineers; use cross‑functional feature teams… | ||
| War in Ukraine – How Can Devs Help? | 44m | |
Community volunteers build a refugee camp logistics system on monday.com integration and add an Airbnb API check to verify drivers within hours; 250 volunteer… | ||
| Green Tech Development & Social Responsibility | Alex Saalfeld, Markus Gilles, Chris Ward | 55m |
Panel traces concrete wins and tools: a grassroots app once sends 15,000 emails led to Lords passing by 250 votes; Klima offers Klima: personalized CO2… | ||
| Comedy Talk – Better Android Development (BAD) | Viktor Stojanov, Ben Kadel | 40m |
A satirical playbook that actually names tools and decisions: recommends stuffing repositories, services and UI into a single-activity-with-everything file… | ||
| RAMSES – An Open Source 3D Graphics Tool Chain for Android | Daniel Haas, Klaus Gassner, Violin Yanev | 40m |
Open source 3D tool chain used in production at BMW since 2018, delivering streams 3D scenes, not video to displays and shipping as a Maven package on Maven… | ||
| How to Test Your Compose UI | István Juhos | 33m |
Practical guide to testing Jetpack Compose UIs using the Compose testing library and a small Hydration Tracker sample project: shows using… | ||
| Lazy and amazy – Lazy layouts in Compose | Simona Stojanovic | 39m |
Jetpack Compose provides lazyColumn/lazyRow/lazyGrid that render items on demand, with lazyListState (firstVisibleItem + offset), rememberCoroutineScope +… | ||
| Optimize your app for large screens | Paul Lammertsma | 33m |
Android lays out a three‑tier checklist and concrete APIs for large screens: Android 12L/13 changes, Jetpack WindowManager and window size classes (compact… | ||
| Keeping Google Play Safe: Privacy, Security and SDKs | Maria Reis, Craig Fagan, Abhijit Chandgadka | 20m |
Google Play outlines three concrete efforts: the Play Integrity API returns an encrypted integrity verdict at transaction time so servers can block fraud or… | ||
| 640K ought to be enough for anyone | Yonatan Levin | 40m |
Mobile apps hit out-of-memory even on big-RAM phones because Android imposes a 268 MB per-app heap limit and the system uses zram and an OOM killer that ranks… | ||
| Deep dive into Modern Android Performance | Ben Weiss, Tomáš Mlynarič | 45m |
Shows concrete wins and tools: customers cut cold start ~30% (Zomato → +90% day‑one retention, +600k orders; Google Maps → +30% start, +2.4% searches) and… | ||
| Android Benchmarking and other stories | Enrique López Mañas, Iury Souza | 29m |
Three Android benchmarking tools get compared: microbenchmark (unit-like CPU tests — example: quicksort and RecyclerView scrolls run from a separate Gradle… | ||
| Modern Android Development | Florina Muntenescu, Wojtek Kaliciński | 55m |
Google teams are actively smoothing gaps: they coordinate with Paparazzi, Shot, DropShot to make screenshot/snapshot testing easier to set up; Compose and… | ||
| Implementing a Design System in Compose | Sarah Yates | 41m |
Monzo adopts Jetpack Compose alpha in late 2020 and builds a reusable design system that replaces heavy RecyclerView boilerplate with composables, supports… | ||
| Modern Testing on Android | Jose Alcérreca | 35m |
A tiny app called Sooth exposes a broken regex email validator that causes a .co.uk regression and shows why unit tests catch regressions early; tests use… | ||
| Composable Sheep: A Compose Animations Journey | Nicole Terc | 28m |
Compose animations center on sequencing UI property changes rather than frame-by-frame art, and the talk demonstrates this with concrete code: state APIs like… | ||
| A Complete Journey of Android Modularisation | Sinan Kozak | 37m |
A practical account of splitting a 200k‑line monolith into 150+ modules with 10+ developers, showing concrete wins and tradeoffs: use of Gradle profiler and… | ||
| Write it down: Using text in Jetpack Compose | Alejandra Stamato | 38m |
Jetpack Compose breaks text into layers: Text -> BasicText -> Paragraph -> platform Java/C++ rendering, and offers downloadable fonts (fetch Google Fonts with… | ||
| Keynote: Now in Modern Android | Florina Muntenescu, Wojtek Kaliciński | 41m |
Modern Android shows concrete choices and working examples: a production sample app on GitHub called Now in Android sample that demonstrates Jetpack Compose… | ||
| DevSecOps: Injecting Security into Android CI/CD Pipelines | Moataz Nabil | 30m |
Shows how to inject automated security checks into an Android CI/CD pipeline using a Bitrise CI workflow that builds, runs static analysis, uploads the APK via… | ||
| Implementing Modern Android Architecture | Manuel Vicente Vivo | 45m |
Concrete implementation of the Now in Android open‑source app demonstrates a layered UI/domain/data architecture with repositories, Room as the local single… | ||
| Scaling Productivity: How we have improved our dev experience | Gabriel Ittner, Hannes Dorfmann | 41m |
Freeletics reports work by 15 Android engineers across four teams on a codebase of roughly 1,600 Gradle modules and claims concrete wins: a CLI called droid… | ||
| Successfully publishing a tested, upgradeable and documented Open Source Library | Xavier F. Gouchet | 34m |
Android SDK matured over 2.5 years with ~2,400 commits, 20+ contributors, ~30 releases and 10 Maven artifacts used on ~100,000 devices; goal is zero crashes… | ||
| Writing bulletproof code with property-based testing | Sergio Sastre Flórez | 41m |
Shows how property-based tests replace hand-picked cases with 1,000 semi-random examples by default and catches bugs missed by examples (uppercase-regex error… | ||
| Forging the path from monolith to multi-module app | Marco Gomiero | 37m |
A year-long migration breaks the TIER Android monolith into a shell, libraries, feature contracts and feature implementations layout, extracts the ride feature… | ||
| 5 Common Traps You Can Step Into When Using Coroutines | Philipp Lackner | 15m |
Five concrete mistakes and fixes for Kotlin coroutines with code-level details: executing independent suspending calls sequentially instead of using async +… | ||
| Why is it easy for an android developer to build MicroServices (and why most of them don’t do it) | Manikanta Garikipati | 28m |
Claim: Android experience maps to backend so developers reuse tools and patterns to ship microservices in weeks. Uses Kotlin + Gradle, Micronaut for… | ||
| Untangling Coroutine Testing | Márton Braun | 38m |
Migrates projects to kotlinx.coroutines 1.6 testing APIs and shows concrete fixes: use runTest to get a TestDispatcher backed by a single… | ||
| Something old, something new: Adding Jetpack Compose to a large open source Android app | Maia Grotepass | 37m |
Adds Jetpack Compose into Habitica, a large open‑source Android app with 26 activities and 33 fragments, facing tight Kotlin/compiler version coupling that… | ||
| De-mock your tests | Jarosław Michalik | 27m |
Argues that overusing Mockito/MockK harms code and shows concrete replacements: implement a fake database using an internal list/map instead of… | ||
| The ever increasing convergence of native Android and iOS development | John O'Reilly | 25m |
Argues that native Android and iOS are converging through concrete examples: line-by-line comparisons of Swift and Kotlin, UI parity between SwiftUI/Compose… | ||
| SDK Design and Publishing For Kotlin Multiplatform Mobile | Kevin Galligan | 45m |
Kotlin multiplatform code exports to iOS through Objective‑C, so default parameters get lost, generics and suspend/Flow APIs become awkward, and sealed… | ||
| Creating Europe’s first mobile drivers license | Rutger Roffel | 24m |
A Google-backed implementation uses the JetPack Identity Credential API and ISO-based certificates to put a government-signed driver’s license into the device… | ||
| Memory Leaks & Performance Considerations: A Cookbook | Amanda Hinchman-Dominguez | 34m |
Android apps leak memory when background work outlives UI lifecycles; coroutines can leak too unless using structured concurrency and cancelable scopes… | ||
| Crash-reporting taken to next-level | Tahsin Dane, Savan Ajamoglu | 29m |
Built a BigQuery + Data Studio pipeline that ingests Firebase Crashlytics (real-time export of ~40–50 tables), cleans with Airflow, joins Firebase Analytics… | ||
| A recipe for a CI/CD pipeline | Zan Markan | 38m |
A complete CI/CD pipeline for the OwnTracks Android app uses CircleCI with Docker and VM executors, Gradle builds, Jacoco + Codecov coverage, and Espresso UI… | ||
| Kotlin Multiplatform multithreading old and new way | Anna Zharkova | 42m |
Kotlin Multiplatform concurrency historically forces Kotlin/Native code to use freezing and custom dispatchers to avoid frozen-exceptions; the talk shows a… | ||
| Story about how Amazon built their first in-vehicle delivery app | Stephan Betz, Simanti Olive | 29m |
Amazon Last Mile builds a dual-screen AAOS app for Rivian vans that runs on the vehicle head unit and complements the mobile driver app; it finishes in about a… | ||
| Security First Android Apps | Tarika Chawla | 43m |
Checklist-style practical fixes for Android app security: use EncryptedSharedPreferences not plain prefs; set android:exported=false for components unless… | ||
| Live Coding Session: How do you Build More Privacy Focused Apps? | Alice Yuan, Yacine Rezgui, Terence Zhang | 45m |
Live coding converts a messy photomemory app into a privacy-first app: replace custom picker with the Android 13 photo picker (backported to Android 11–12 via… | ||
| LinuxOnAndroid – Reviving a 10 year old Android project | Zachary Powell | 20m |
LinuxOnAndroid gets revived after a decade by rebuilding a one‑million‑download project that originally runs full GNU distributions via chroot method and peaks… | ||
| Workshop: Inspect and improve app performance | Ben Weiss, Tomáš Mlynarič | 05m |
Hands-on codelab that measures and speeds app cold start using the Macrobenchmark library to record startup timings, then generates and applies Baseline… | ||
| Shooting a “Glance” at App Widgets | Fatih Giriş | 24m |
Covers the Glance library that converts its own composables into RemoteViews and wear tiles, clarifies that Glance composables are distinct from Compose UI… | ||
| Transforming farmer’s lives using Android in Kenya | Harun Wangereka, Juma Allan | 16m |
Apollo builds two Kotlin Android apps that are offline-first and use server-driven UI so field agents fetch versioned schemas (one example is form v14) from… | ||
| Explained: Compose Compiler and Runtime | Can Yumusak | 28m |
Explains how Jetpack Compose achieves context awareness and hot recomposition by a Kotlin compiler plugin that rewrites bytecode and by a runtime that stores… | ||
| Extending IntelliJ-based IDEs at runtime | Dmitry Kandalov | 42m |
Runtime extension of IntelliJ-based IDEs using LivePlugin and Kotlin compiles a plugin.kts into classes loaded by a fresh classloader per evaluation, with a… | ||
| Smarter Application Caching with Kotlin Flow | Nick Skelton | 40m |
Shows a concrete caching layer built with Kotlin Flow that emits cached data immediately and network data when it arrives, using a createCachedCacheFlow… | ||
| Demystifying Enterprise Mobile Application Development | Robin Kuck | 16m |
SAP offers a middleware called mobile services plus an Android SDK that integrates with native APIs, a Fiori-like UI kit, and an offline encrypted store… | ||
| Android is open source, what does that mean for us? | James Gatt | 20m |
Average consumers replace phones every 2 years and many OEMs drop support at that point, but the Android Open Source Project exposes platform, device and… | ||
| Sharing code among multiple projects: the case of internal libraries | Jean-Baptiste Vincey | 30m |
Deezer extracts reusable code into private Android libraries organized as three libraries (features, core, design), hosted to an internal Nexus and released… | ||
| The future of dependency management, seen from 2022 | Louis CAD | 36m |
Dependency upgrades are slow and error prone with Gradle defaults, version ranges break reproducibility, and bots like Dependabot/Renovate generate noisy PRs… | ||
| Smarter data storage on Android | Sebastian Spät, Markus Kett | 43m |
MicroStream brings a JVM persistence engine to Android that serializes in-memory object graphs (POJOs only, no ORM or annotations) and writes delta-only… | ||
| Creating Applications for Small Screen, Low Memory Android Wearables | James Swinton-Bland | 23m |
AOSP wearable prototype (WS50) with 1 GB RAM and 8 GB flash, 2" touch display, NFC, Wi‑Fi and Bluetooth but no cellular, hot‑swap battery and integrated… | ||
| Path to the freelance | Eugen Martynov | 17m |
Switching from an internal role to freelance after 1.5 years of contracting and landing two contracts requires setting up a self‑employed entity, quarterly VAT… | ||
| Screenshot testing – The practical talk | Benedict Pregler | 18m |
Evaluates Shot and Dropbox (emulator-based) and Paparazzi; finds none perfect. Shot/Dropbox (emulator-based, sensitive to device/DPI/OS differences) requires… | ||
| What I found when I look into your APK | Fung Lam | 17m |
Scans of real APKs reveal concrete failure modes and fixes: oversized 32‑bit PNGs duplicated across densities produce a 100 MB APK from duplicated PNGs… | ||
| The Curious Case of Android Gesture Animation | Kinnera Priya Putti | 21m |
Implements a stretchy, sticky square that snaps to top or bottom using ViewDragHelper with clampViewPositionVertical and settleCapturedViewAt for smooth… | ||
| Basic Layouts in Compose | Jolanda Verhoef, Simona Stojanovic | 07m |
Hands-on one-hour workshop that builds a realistic UI from the MySoothe sample app using Jetpack Compose: implement each element (cards, rows, grids, lists)… | ||
| How Android Automotive Helps Us to Design and Build In-Car User Experiences | Casper Kessels | 29m |
Claim: using Android Automotive lets a design team build and validate real in-car interfaces fast. The team runs Android Automotive on a Samsung S5 tablet… | ||
| Invest in Real State: A workshop for State in Compose | Alejandra Stamato, Ian Clifton | 11m |
Hands‑on walkthrough of state in Jetpack Compose showing exactly which APIs to use: mutableStateOf and delegated properties for simple values… | ||
| Using Communication APIs to enhance your UX (and reduce notifications!) | Zachary Powell | 28m |
Apps send too many alerts so users ignore them: users get 46 notifications a day and only 4.6% are actioned, so push can’t start reliable flows. Communication… | ||
| Painless, Typesafe Jetpack Compose Navigation with Voyager | Alexander Steenbergen | 35m |
Migrates a 200-screen app to Jetpack Compose incrementally and replaces Google Navigation with Voyager, claiming no global NavGraph at startup and type-safe… | ||
| Releasing and monitoring your Android app with Firebase | Marina Coelho, Rosário Pereira Fernandes | 33m |
Overview of concrete Firebase release and monitoring workflows: use Test Lab’s device farm to run APKs/App Bundles and get screenshots videos and logs, extend… | ||
| Open Source at Scale | Nicola Corti | 36m |
Practical playbook for running a massive OSS project like React Native: explain the dual-source model (FB source vs GitHub), use fbshipit to sync commits… | ||
| How we migrated the CI / CD of our Android app to GitHub Actions | Titouan Thibaud | 19m |
Migrates a legacy Google Cloud Build pipeline to GitHub Actions, replaces complex Docker images with reusable actions (Gradle action, upload-artifact, Java and… | ||
| A ride through AOSP's new colors | Sid Patil | 28m |
Monet is the OS-level wallpaper-driven theming engine implemented as a SystemUI package plus wallpaper manager/service and a wallpaper observer that decodes a… | ||
| Using Compose Runtime to create a client library | Fatih Giriş | 37m |
Shows that Compose Runtime (not UI) can power non-Android clients by building a tiny Compose-based PowerPoint generator: compiler-injected Composer writes to… | ||
| What's new in Amazon Appstore | Giovanni Laquidara | 30m |
Amazon Appstore distributes Android apps to Fire TV, tablets, mobile and now Windows 11 via Windows Subsystem for Android (Android 11, US beta, requires ~8 GB… | ||
| Inside the .git folder - Explore the mysterious depths... | Ben Kadel | 36m |
Maps every file inside a .git directory to actual commands and bytes: shows commits/trees/blobs as objects with 40‑char hashes (first seven usually enough)… | ||
| Deep dive into DEX files byte-by-byte | DANIIL POPOV | 42m |
Explains DEX internals: header magic and checksums, string/type/proto/field/method tables stored as indices into shared pools, and code items holding… | ||
| Building Glanceables with Compose | Marcel Pintó Biescas | 38m |
Explains how Glance lets Compose-style composables become real widgets by translating to platform views and Tiles and shows a working weather widget that… | ||
| Hype Driven Development: How I learned to stop worrying and love the failures | Ash Davies | 35m |
Claims that chasing hype is OK if confined to a sandbox and risk-managed; builds a conference-listing app using GitHub content + GraphQL, Firebase Functions… | ||
| It's Time to Build for Wear OS | Ataul Munim, Yuri Schimke | 35m |
Wear OS history condenses into concrete opportunities: build complications for quick presence with minimal UI, add tiles using Jetpack Tiles and the new Tile… | ||
| Compose Beyond Material Design | Frank Tamre | 26m |
Kyosk migrates from XML to Jetpack Compose to implement a company-specific design system, proving Compose production-ready in 2022 and completing a four-month… | ||
| Testing: how hard can it be? | Danny Preussler | 36m |
Builds a Watch OS SoundCloud client and implements the login flow end to end: Compose screen -> ViewModel with coroutines -> wear client callback wrapped as… | ||
| What’s on tonight? New developments in Android and Google TV | Paul Lammertsma | 37m |
Android TV OS now reports over 110 million activated devices across 300+ partners with seven of ten top TV OEMs and 170 pay TV providers, and the talk details… | ||
| The age of large screen & foldables | Francesco Romano, Cesar Valiente Gordo | 47m |
Android 12L and Play Store ranking changes mean apps that adapt to larger screens get surfaced more, with about 270 million larger-screen devices cited… | ||
| Diving into Koin 3.2 & Koin Annotations 1.0 | Arnaud Giuliani | 38m |
Koin 3.2 adds a constructor DSL so you can declare dependencies with singleOf/factoryOf constructor DSL instead of hand-writing lots of get() calls, warns on… | ||
| Securing Mobile Apps with OWASP MASVS & MSTG | Carlos Holguera | 21m |
Google recognizes OWASP MASVS since April 2022 and uses it for the App Defense Alliance badge; the MASVS lists concrete controls (storage has about 15… | ||
| Treasure.map(): Functional Programming in Kotlin | Karin-Aleksandra Monoid | 35m |
Explains why common collection functions map/filter/fold/flatMap are the day-to-day functional tools and makes the concrete claim that lists are monads because… | ||
| Lessons Learned Migrating the Maps SDK to Compose | Chris Arriola | 30m |
Maps Compose is a Jetpack Compose interop layer that replaces tedious View-based glue by emitting map objects as composable nodes using subcomposition; it… | ||
| Visualizing Assertions for Complex Logic Tests | Mario Bodemann | 17m |
App state serializes into a UTF-8 chessboard string, then zips and base64s it to fit into 160 characters for the SMS API; UI renders with Jetpack Compose as a… | ||
| Life is too short to develop only for Android – A journey to Server-driven UI | Ji Zhenlei | 35m |
A server-driven UI system that ships entire screens by changing backend JSON, not app binaries, is described with concrete choices: Moshi polymorphic JSON for… | ||
| RoverMap: Rendering a Vector Map With Rust and Vulkan | Lorenzo Neumann, Jonas Treumer | 23m |
RoverMap implements a native Rust renderer with Vulkan/Metal/WebGPU backends and Kotlin bindings, compiling one codebase to Android, iOS, macOS, Linux, and… | ||
| How a tiny android app is changing travel experience and transporter industry business in Africa | Anselmo Alexandre | 09m |
A tiny Android app called Bileteira uses Material Tools, Jetpack Components and Kotlin to let users pick origin, destination, date and seat, pay with M-Pesa… | ||
| Error Handling Beyond the Standard Library | Stojan Anastasov | 44m |
Builds a signup flow that actually validates name (non‑blank), email (must contain @) and phone (starts with + and ≥4 chars), calls Retrofit and stores a… | ||
| Bytecode Transformations: Exploring new AGP APIs for instrumenting your app | Roman Zavarnitsyn | 39m |
Explains how the deprecated Transform API is replaced by the new AGP instrumentation API (available since AGP 4.2) that runs a single Gradle task, uses ASM… | ||
| In-App Subscriptions for all Android devices | Kevin Herembourg | 23m |
Shows how to ship subscriptions across Google, Amazon and Huawei stores with a reusable module per store and a common purchase interface that handles SKU… | ||
| Concurrency for Imposters | Chris Ward | 28m |
Explains why Kotlin coroutines beat ad-hoc threads for UI responsiveness, showing coroutines compiled to a simple state machine that suspends blocking work and… | ||
| Keeping your Gradle builds in top shape | Nelson Osacky | 33m |
Company builds lose an estimated 42 hours per day when each developer wastes 60 seconds across 50 builds; a five-step build validation scripts suite runs two… | ||
| What’s new in Apollo Kotlin 3 | Martin Bonnin | 23m |
Apollo Kotlin 3 is rewritten 100% Kotlin and unifies runtimes to provide Kotlin Multiplatform plus a coroutines and Flow API; codegen now defaults to… | ||
| Is my application taking up too much power? | Alice Yuan, Vinny DaSilva | 33m |
Android implements concrete limits: Android 9 introduces app standby buckets (active, working set, frequent, rare, restricted) and a restricted app can run… | ||
| nothing matches | ||