droidcon Berlin 2021
2021-10-20..2021-10-22
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 |
|---|---|---|
| droidcon_recap_final_25fps | 03m | |
Active participation in Droidcon helps hire and scale a team to 10 developers in 4 to 5 months by using community networking, panels and meetups as the… | ||
| Bluetooth LE for Modern Android Development | Erik Hellman | 38m |
Practical checklist for BLE on Android: target at least API level 28 (API 31 adds companion device service), use CompanionDeviceManager for pairing/background… | ||
| Migrating your app to compose, step 1, live coding | Richard Schattauer | 37m |
Live coding converts one Android view card into a Jetpack Compose composable as the concrete first step of migration, showing a working component that compiles… | ||
| Introducing Kotlin Multiplatform in an existing project | Marco Gomiero | 36m |
Explains how a Kotlin Multiplatform library is actually delivered into three repos: Android artifacts published with the Maven Publish plugin, iOS packaged as… | ||
| Get in the fast lane; Android Automotive OS | Juhani Lehtimäki, Pierluigi Rufo | 37m |
Snapp Automotive builds Android Automotive OS images for multiple head units and reports concrete lessons: they ship Android Automotive OS builds and a working… | ||
| Sign-in with Apple on Android devices? | Devlin Duldulao | 16m |
Shows how Sign in with Apple actually works on Android by using a server-side OAuth flow plus an Android WebView that loads Apple’s auth URL, captures the… | ||
| Rock-Solid UI and Instrumentation Testing | Sinan Kozak | 44m |
A CI pipeline runs 800 UI tests under 20 minutes by parallelizing shards on Firebase Test Lab and blocking merges on failures, with per-feature tests across… | ||
| Hosting our states in Compose | Dinorah Tovar | 43m |
Explains concrete patterns: move state to a top-level host so composables stay stateless, pass values plus onValueChange lambdas, and encapsulate complex UI… | ||
| Lesson Learned from building successful android library: PhotoEditor | Burhanuddin Rashid | 39m |
An Android Java library called PhotoEditor delivers pinch, text, filter, emoji and sticker editing and racks up 197,000 downloads and ~3,000 GitHub stars with… | ||
| Scaling App development at Zalando | Alexey Agapitov, Volker Leck | 37m |
Narrates a migration from many codebases to a monorepo and a modular Android architecture, showing the concrete tools used (Gradle configuration, build cache… | ||
| How to ask permission, the clean way | Ronaldo Pace | 22m |
Shows a concrete PermissionService that exposes a Flow of permission states and a CompletableDeferred-based suspend request so callers await results instead of… | ||
| What they don’t tell you about feature toggles | Ivan Damjanović | 14m |
Defines three practical flag types — client, product, and technical — and gives concrete rules: use client flags only during development, swap them for… | ||
| Standby Buckets in Android | Mathias Wegener | 28m |
Investigation shows standby buckets block reliable incoming-call wakeups: using PJSip for SIP and Firebase high-priority pushes to trigger connection tests… | ||
| Flutter for TV platforms | Aleksandr Denisov | 37m |
A Flutter movie-gallery is built and proven to run on Android TV and Fire TV with no changes, to run on Apple TV after building a custom engine fork and minor… | ||
| DataStore Preferences and migrating from SharedPreferences | Hitesh Das | 30m |
DataStore replaces SharedPreferences for small key/value needs, using Kotlin coroutines and Flow on Dispatchers.IO to avoid UI blocking, and signals IO errors… | ||
| Testing your React Native App - The Cypress way | Janhavi Dahihande | 18m |
Practical rundown: Cypress is used here as a JavaScript, non‑Selenium end-to-end runner that Thunkable uses to test React Native at the product level; the demo… | ||
| A-Z of Kotlin Flow | Monika Kumar Jethani | 01h 12m |
Shows how to replace RxJava with Kotlin coroutines + Flow by converting network and database calls into a repository-returned Flow, collecting it in a… | ||
| Building a books app with Jetpack Compose and Firebase | Rosário Pereira Fernandes | 01h 06m |
Builds an Android books app using Jetpack Compose for UI and Cloud Firestore for a serverless backend, with a LazyColumn list, Material cards and a floating… | ||
| That's how we scroll in Flutter | Krzysztof Krasiński-Sroka | 01h 03m |
Hands-on workshop that teaches building custom render sliver widgets in Flutter using the repo github.com/widgets/custom-scroll-workshop and live code. It… | ||
| The Importance of Being Tested | Roberto Orgiu | 40m |
Argues that tests must target behavior not call order, and that dependencies must be injected rather than built inside classes so coroutines, dispatchers and… | ||
| "Offline" is not an error | Yonatan Levin | 38m |
monday.com builds an offline‑first Android client that records every user change locally, applies optimistic local‑first updates to the UI, and persists sync… | ||
| Using Kotlin Flow in MVVM | Fatih Giriş | 24m |
Shows replacing LiveData and suspend calls with Kotlin Flow using a fake repo that emits loading then a 1s-delayed random result, and a separate while(true)… | ||
| Game Development with Unity from an Android Point of View | Julien Salvi | 35m |
Unity on Android uses JNI-bound plugins written in Java/Kotlin or C/C++; developers must call System.loadLibrary, follow JNI naming, and expose C++ functions… | ||
| Privacy Engineering in Android | Pauline Anthonysamy | 23m |
Researchers show motion sensors can reveal factory calibration to create a persistent device fingerprint that runs <1 second, no permission, via web or app… | ||
| Comedy Talk | Chet Haase | 27m |
Claim: Android begins as a two‑person camera OS and grows to run on more than 3 billion devices. Concrete artifacts described include a homemade BASIC compiler… | ||
| Community Day Kickoff | Danny Preussler, Jossi Wolf | 18m |
Overview of the Community Day process with concrete actions: where to submit sessions, how to vote on talks, and how remote audience joins via Zoom and the… | ||
| The shape of media regulation to come | Philipp Sümmermann, Hans-Christian Woger | 42m |
European media rules redefine services into broadcasting, media platforms and intermediaries and impose concrete obligations: a live stream regularly exceeding… | ||
| Agile hardware development (as an Android dev) | Falko Richter | 19m |
Android mobile skills port to hardware by actually wiring Android to Arduino, Raspberry Pi and Tinker Board modules and shipping PCBs fast enough to iterate a… | ||
| Climate Crisis: Can we as developers save the planet? (panel) | 01h 00m | |
Panel argues software can help but also creates impact: data on data‑center energy is missing (estimates range 2% to 50% of global power), cloud providers… | ||
| Enhance your single screen designed-app to make it shine on foldable devices | Cristian Verdes, Cesar Valiente | 01h 21m |
Walks through converting a single-screen list/detail app to use Jetpack WindowManager plus SlidingPaneLayout and NavigationRail, replacing a fragment container… | ||
| A Composable New World! | Carlos Mota | 01h 16m |
Live-codes an Unsplash client built with Jetpack Compose 1.0 and Coil Compose that fetches trending images, shows them in a LazyColumn with image caching via… | ||
| A page out of Server driven UI on Android | Adit Lal | 33m |
Argues that adopting Server Driven Architecture for the UI layer lets teams push layout and content changes without app updates by shipping a JSON-driven… | ||
| Junioring Senior Developers | Vladimir Jovanović | 17m |
Senior developers lose sight of being a beginner and focus on fixing code instead of growing people; root causes include missing empathy, ad‑hoc onboarding… | ||
| Your own @Annotation processor | Gabriel Samojlo | 30m |
Explains how to build a simple annotation processor that actually generates Java source files at compile time using the Java Annotation Processing API, shows… | ||
| From Ooops to Mobile DevOps: 7 Steps for Successful Mobile DevOps Transformation | Moataz Nabil | 28m |
Seven concrete steps to turn Android delivery into repeatable DevOps practices, starting with automated build-and-test pipelines, staged rollouts, and feature… | ||
| Extend your reality with AR | Anitha Manikandan | 29m |
Overview of augmented, virtual and mixed realities with hands-on details about ARCore features and how three AR types differ in tracking, anchoring and… | ||
| Clean up state handling with a state machine | Daniel Gergely | 19m |
Retrofits a state machine into a growing ride app, replacing a monolithic ride model with a sealed class hierarchy for states and actions as a generic abstract… | ||
| WebRTC on Android. Simplier than you thought! | Artem Bagritsevich | 24m |
Provides step-by-step, reproducible instructions to build WebRTC for Android from source using depot_tools, GN and Ninja and an included build_webrtc.sh that… | ||
| Understanding and debugging ANR's (Android Not Responding) | Dinesh Shanmugam C | 12m |
Explains how to read the ANR traces.txt snapshot to find the actual culprit: main thread states like main thread sleeping 30s or blocked waiting on TID 19… | ||
| Automating Android Workflows with Github Actions | Ubiratan Soares | 40m |
Explains how GitHub Actions runs Android CI using YAML workflows that map trigger events to jobs, each job running on a runner machine; demonstrates a real… | ||
| Gradient descent is taking away your Android developer job | Michal Harakal | 29m |
A provocative Andrej Karpathy tweet claims gradient descent can write code better than you and the talk shows concrete experiments: a neural net implemented… | ||
| Detekt - State of the Union | Nicola Corti | 41m |
detekt is a community‑driven static analyzer for Kotlin that already ships 220 rules, including syntactic checks like magic number, semantic checks like… | ||
| Printed Circuit Boards and Android: A Love Story Between Two Engineering Disciplines | Mario Bodemann | 27m |
A custom die with LEDs, three PCB iterations (SMD failed, through‑hole succeeded) proves the workflow: design in EasyEDA → JLCPCB, program a USB‑C Xiao… | ||
| Nail your Gradle build time | Josef Raska | 40m |
Company with 20+ teams and hundreds of build hours weekly reduces Gradle time by measure every build, using a small build-listener plugin to record median… | ||
| Jetpack Compose for Games & Animations | Wajahat Karim | 32m |
Jetpack Compose can be used as a real canvas for generative art, games and micro‑interactions using Kotlin and the Canvas API. The uploader groups demos into… | ||
| How we engineered our design system | Luca Nicoletti | 26m |
Engineered an Android design system using an atomic approach with an 8‑point grid, a single color-palette XML, and text styles mapped from Figma; built… | ||
| � Automating key workflows in your daily developer life! | Alessandro Mautone | 19m |
Daily CI workflow on Bitrise fetches tags, runs tests, checks git log since the latest tag and only when commits exist increments a numeric beta_# tag (bash… | ||
| Offline first Flutter applications | Salih Guler | 21m |
Built a Flutter desktop+mobile task app that moves from unreliable Firebase persistence to an interim in‑memory Redux store and finally to a REST backend with… | ||
| 'Nitrogenize' your project with Mvvm, Compose, UTP - A killer combination for successful deliveries | Enrico Bruno Del Zotto | 29m |
Compose integrates with unidirectional data flow patterns like MVVM and MVI by exposing snapshot state from ViewModels, using remember/rememberSaveable for… | ||
| Advanced multi-platform dependency injection | Salomon Brys | 37m |
Shows how Kodein-DI runs across Kotlin/JVM, Kotlin/Native and Kotlin/JS and what actually works: provider, factory, singleton, multiton bindings with tags and… | ||
| Adding Flutter to your app - what are they not telling you? | Łukasz Wiśniewski | 30m |
A team migrates to Flutter using the add-to-app approach (Flutter 1.2 → 2.5), building feature packages and a gallery runner, and ships onboarding first while… | ||
| Improve your animations skills in Flutter | Dominik Roszkowski | 29m |
Shows how to make Flutter animations practical: uses built‑in implicitly animated widget subclasses and a custom implicitly animated widget to smoothly… | ||
| The Billion User Open Secret | Abel Adugam A. Nibori | 12m |
Claim: the next billion users come from low-connectivity regions such as 135 million in Middle Africa and 208 million in Southern Asia, so design choices… | ||
| Inhibiting the impostor | Ana Baotić | 31m |
Claims that about 70% of people experience impostor feelings and that saying yes to at least 4 of 10 checklist questions signals a problem; gives a concrete… | ||
| An Introduction to Effective Snapshot Testing on Android | Sergio Sastre Flórez | 31m |
Snapshot tests inflate views, record pixel‑perfect images and compare them on CI, with a separate record vs verify workflow; mismatched emulator… | ||
| How to survive on Android and don't get killed | Petr Nalevka, Jiří Richter | 37m |
Claims that manufacturers (Samsung, Huawei, OnePlus, Xiaomi) add aggressive task killers that abruptly stop alarms, break wake locks and kill foreground… | ||
| Developing Locally with the Firebase UI Emulator | Peter John Welcome | 28m |
Sets up the Firebase UI Emulator, demonstrates connecting an Android app to a local Firestore instance that triggers Cloud Functions, and shows live logs and… | ||
| Keeping your Pixels Perfect �: Paparazzi 1.0 | John Rodriguez | 33m |
Paparazzi renders Android screens on the JVM so UI checks run in seconds instead of waiting 30s–10min for APK build + emulator, bypassing dexing, AAPT and ADB… | ||
| Practical tips for succeeding with CI/CD for Android | Zan Markan | 34m |
Practical, actionable checklist for Android CI/CD: use enough CPU/RAM so Gradle builds match local speed, raise resource class on CircleCI, and cache… | ||
| Keynote: Why Projects Succeed: Lessons Learned from the Android OS | Chet Haase | 52m |
A project that begins as a two-person camera OS in 2003 becomes a platform on more than 3 billion devices by choosing an open-source platform, shipping a… | ||
| Feature Toggles, Trunk-Based Development and Continuous Delivery | Alex Fedorov | 35m |
Argues that switching to every commit to main plus automated CI/CD and thorough tests cuts cycle time from weeks to days by eliminating long-lived branches and… | ||
| Testing Jetpack Compose UI | Dmytro Shuba | 30m |
Claims that Jetpack Compose testing differs from View testing: no view hierarchy, declarative UI, no IDs but Modifier.testTag and semantic properties, and… | ||
| A Hitchhiker's Guide to Compose Compiler: Composers, Compiler Plugins, and Snapshots | Jossi Wolf, Amanda Hinchman-Dominguez | 39m |
By Jossi Wolf & Amanda Hinchman-Dominguez
If you are an Android Developer, chances are you are pretty excited about Jetpack Compose! But how does it work? In… | ||
| Quick Apps: Speedy Development, Maximum Outreach | Martin Alvarez Espinar | 16m |
Quick Apps implements W3C MiniApp specs as an MVVM framework using JS/CSS/HTML and a Vue.js-like component model, running on Android with a V8 JavaScript… | ||
| The journey of adopting Jetpack Compose in Babbel’s App | Ahmed Mabrook, Ben Kadel | 39m |
Babbel integrates Jetpack Compose into its existing app in six months, landing Compose 1.0.4 across the project by updating AGP to 7+ and applying a repository… | ||
| Building a Production-Ready Chat SDK Using Jetpack Compose | Márton Braun, Filip Babić | 35m |
Claims to be the world's first Jetpack Compose Chat SDK and shows a working, open‑source Android SDK built with Compose components, customizable slots, and… | ||
| Become a Pro in Android Studio | Márton Braun | 39m |
Live demo uses the Stream Chat Android SDK to show concrete Android Studio workflows: enable Presentation Assistant and Key Promoter X plugins, disable bundled… | ||
| How to best authenticate with non-Google identities | Paul Ruiz | 20m |
Announcement that the platform is deprecating WebView for authentication and a clear walkthrough of the OAuth2 authorization code flow for native apps using… | ||
| What is the Android Cache Fix plugin and why do I need to solve my own cache misses? | Nelson Osacky | 27m |
The Android cache fix plugin detects real cache misses by comparing two builds and fixes specific AGP bugs: it rewrites path-sensitive task inputs… | ||
| Introduction to dual-screen and foldables development | Cesar Valiente, Cristian Verdes | 33m |
Overview of concrete results and tools: Jetpack Window Manager (beta2) exposes window metrics, folding feature boundaries and posture changes (flat vs… | ||
| Your new Data Safety section on Google Play | Tina Sriskandarajah, Aisha Iqbal | 14m |
Google Play requires developers to must fill a data safety form for each app disclosing what data is collected (sent off‑device) versus shared, purposes… | ||
| Inside the Room | Effie Barak | 37m |
Explains how Room maps AndroidX and framework APIs onto SQLite internals: a single-file database with one writable connection and many concurrent readers, five… | ||
| KMM story - from first feature to Mobile mono-repo at Sphere | Attila Blenesi, Anders Ha | 38m |
Kotlin Multiplatform Mobile powers a shared AppCore that migrates the domain layer into a database-first, unidirectional flow using Kotlin Coroutines and… | ||
| Backend for Frontend – The secret of a great mobile project | Michal Szczepanik | 17m |
A mobile team builds a Backend-for-Frontend that translates a legacy XML web API with only six endpoints into a JSON API removing roughly 80% unused fields… | ||
| Becoming a mentor, why and how? | Florian Mierzejewski | 35m |
Explains how to convert experience into a repeatable mentorship process: set clear onboarding expectations, give daily work like reading PRs and wiki, create a… | ||
| Using GraphQL in a KMM project with Jetpack Compose and SwiftUI | John O'Reilly | 32m |
Kotlin Multiplatform uses Apollo to download the Star Wars GraphQL schema, generate strongly typed Kotlin data classes and fragments, and expose a shared… | ||
| The definitive guide to Android library development | Jeroen Mols | 39m |
Walks through creating an Android library by adding a library module to an app, explains that an AAR omits transitive deps so a POM must list them, and warns… | ||
| Kotlin Multiplatform Mobile in production: key takeaways from developing two cross-platform apps | Lena Stepanova | 23m |
Two production apps use Kotlin Multiplatform Mobile to share networking and local storage and later the view‑model layer; networking uses Ktor and local DB… | ||
| KMP for Mobile Developers | Enrique López Mañas | 29m |
Kotlin Multiplatform compiles common Kotlin into an iOS framework and Android AAR/jar so UI stays native while business logic is shared; examples use… | ||
| Coroutines for Kotlin Multiplatform in practise | Christian Melchior | 41m |
Kotlin Multiplatform coroutines work, but only if code assumes the Kotlin/Native constraints: kotlinx.coroutines ships as JVM core vs native‑mt (Ktor forces… | ||
| Backend Engineering for Android Developers | Himanshu Singh | 28m |
Argues that Kotlin is a practical backend choice and demos building a server with Ktor with Netty from start.ktor.io or the IntelliJ plugin, shows the… | ||
| Idiomatic Kotlin in Tests | Jarosław Michalik | 25m |
Examples show stepwise refactors from Java JUnit tests to Kotlin using IntelliJ Java→Kotlin converter, replacing JUnit patterns with Kotest stringSpec and… | ||
| Android Architecture Design with Koin | Arnaud Giuliani | 42m |
Koin is a Kotlin DI library focused on constructor injection and a small DSL; the project has 7K stars and about 5M downloads/year. Version 3 merges Android… | ||
| Efficient Kotlin | Marcin Moskała | 38m |
Kotlin tips for real savings: object headers cost about 12 bytes header so boxed Integers use 5–6x memory cost versus primitives, JVM caches small Integers and… | ||
| Everything is an API | Ash Davies | 25m |
Argues that every module is an API so treat internal code like public contracts, showing Kotlin techniques (suspend functions, infix notation, interface… | ||
| Writing Apps for the Work Profile | Darryn Campbell | 16m |
Explains how to make an Android app behave correctly inside a Work Profile: use managed configurations (app restrictions) to expose XML-configurable settings… | ||
| nothing matches | ||