droidcon San Francisco 2024
2024-06-06..2024-06-07
San Francisco, United States
[droidcon San Francisco 2017, droidcon San Francisco 2018, droidcon San Francisco 2022, droidcon San Francisco 2023, droidcon San Francisco 2024]
who it's for
android developers, kotlin multiplatform engineers, mobile platform engineers, mobile architects, engineering managers, developer productivity engineers, mobile security engineers
topics
Jetpack Compose UI; Kotlin Multiplatform (KMP); Gradle configuration cache; Android Studio plugin development; Room KMP database; WebRTC signalling with Ktor; session replay for debugging; gRPC migration strategies; passkeys and digital identity; LeakCanary heap trimming; K2 compiler plugins; CI/CD pipeline optimization
| title | author | length |
|---|---|---|
| Stop Debating. Start Enforcing with Lint Rules | Stelios Frantzeskakis | 33m |
Argues for replacing architecture debates in PRs with executable lint rules written as unit tests using Consist and Kotest, run via Gradle and GitHub Actions… | ||
| Speed Trap Ahead - Avoiding Costly Security and Privacy Issues in SDK Integration | Michael Krueger | 23m |
Now Secure pentests show third‑party SDKs cause most problems: a study for the App Defense Alliance finds 85% failed due to integrated SDKs. Concrete failures… | ||
| Type safe experimentation | Patxi Bocos | 22m |
Generates type-safe Kotlin accessors for Optimizely features and experiments to eliminate string-typo bugs and make unused flags discoverable, using Optimizely… | ||
| Iteration Speeds with Gradle Configuration Cache | Aurimas Liutikas | 38m |
Gradle stores and reuses the configuration phase to cut iteration overhead: AndroidX (786 projects) drops a 42s configure+run into about 4s, roughly 32x faster… | ||
| The Tech Migration Playbook: A Reddit Case Study | Lauren Darcey | 42m |
Reddit’s platform team describes how a staged migration actually cuts risk: they attack a 2.5‑hour buildtime problem with targeted big steps, run hackathon… | ||
| Supercharge Android Studio: Developing Your First Plugin | Idan Nakav | 21m |
Explains how to build an Android Studio/IntelliJ plugin using the plugin XML, extensions, services, actions and listeners, and the PSI for code inspection… | ||
| Safe Network API Migration Tactics | Chris Francis, Ashok Varma | 27m |
Uber migrates high‑QPS JSON HTTP endpoints to gRPC with a requirement of zero downtime and QPS increase under 2% and uses Retrofit/OKHttp, gRPC over HTTP3… | ||
| Solve your Mobile Bugs with Session Replay | Michelle Zhang | 19m |
Sentry’s mobile session replay sends screenshots from the SDK (default one frame per second) and stitches them with a custom video replayer plus rrweb to… | ||
| Seamless mobile real-time communication with WebRTC | Renaud Mathieu | 44m |
Shows a working WebRTC stack end-to-end: a Ktor websocket signalling server that exchanges SDP and ICE, a client handling ICE/STUN/TURN (uses Google TURN by… | ||
| Room Renovations | Elif Bilgin | 17m |
Room now ships as Room KMP v2.70-alpha1 supporting Android, JVM desktop and native (iOS, macOS, Linux) and requires the Room Gradle plugin, KSP, schema export… | ||
| Jetpack Compose is Swift (UI). | Siamak Ashrafi | 41m |
Argues that Jetpack Compose maps directly to SwiftUI and that knowing Android gets you most of iOS: Jetpack Compose ≈ SwiftUI. Compares Kotlin and Swift… | ||
| MVWTF: Demystifying Architecture Patterns | Adam McNeilly | 36m |
Compares MVC, MVP, MVVM and MVI using a concrete task‑list implementation in Compose with coroutines, StateFlow and Android Architecture Component ViewModel… | ||
| Why testing is a developer's problem | Scott Erlanger, Blake Reynolds | 32m |
Argues that test automation must match Agile speed and shows a working solution: Testim/Testm with a virtual mobile grid, record‑and‑replay authoring, variable… | ||
| Demystifying Pixel Shaders (AGSL) | Timo Drick | 32m |
Shows actual AGSL code compiled into a RuntimeShader + ShaderBrush and used as a Compose modifier, passing uniforms like uniform float2 size and animating via… | ||
| How we brought the Uber Driver App to Android Auto | Victor Cervantes, Bhargav Maniyar | 19m |
Ports the Uber Driver app to Android Auto by extending the existing RIBs framework into car screen RIBs, keeping the same interactors and a single data source… | ||
| Creating websites in Kotlin leveraging Compose HTML | David Herman | 40m |
Kobweb is a Kotlin web framework built on Compose HTML that demonstrates live reloading with a dev server and a CLI, automatic routing from a pages folder, and… | ||
| Mobile Developer Productivity Panel | Rooz Mohazzabi, Junking Qiu, Ty Smith, Aida Issayeva, Ben Schwab | 49m |
Large orgs report concrete wins: Android teams range from ~95 monthly contributors to 350–400 monthly (600–800 over six months) and monorepos exceed 10M LOC… | ||
| Reimagining Pagination in Kotlin Multiplatform | Matt Ramotar | 23m |
StoreX Paging implements a UDF‑first, normalized store built on Store and Molecule (Compose runtime) that exposes a stateflow of id lists and per‑item… | ||
| Modularization | David Chang, Manuel Nakamurakare | 30m |
Pinterest moves from a monolith to ~450 modules and sees surprising tradeoffs: caching gives 9x faster local builds (450s → 50s) and 3x faster clean builds… | ||
| Passkeys and digital identity best practices | Kateryna Semenova | 24m |
Passkeys replace passwords with public key cryptography and reduce phishing risk; Verizon data shows 80% of breaches are linked to passwords and 58% of US… | ||
| Module Mayhem: Tales From Shared Business Logic | Dan Peluso | 39m |
Peloton migrates from two modules to 2 to 2,000 modules to cut build bottlenecks that once caused 30+ minute builds, using Gradle, DTOs and utility modules as… | ||
| Reldex: scoring the efficiency of app release cycles | Pratul Kalia | 09m |
Reldex defines a single release-process score built from six metrics (overall time to release, time to stabilize, stage rollout time, hot fixes during rollout… | ||
| Lifecycles at Scale: with Multiplatform | Dinorah Tovar | 38m |
Announces that Lifecycle 2.8.0 is now stable and ships a Kotlin-MVU model with multiplatform compatibility, and demos using Compose Multiplatform to share… | ||
| Kotlin Multiplatform in an MVVM World | Zachary Sweigart | 26m |
Fair uses Kotlin Multiplatform to share its MVVM domain and data layers, publishing KMP artifacts as Android AARs and a single iOS XCFramework via Jenkins to… | ||
| Drawing without pain and recomposition | Vitalii Markus | 36m |
Shows concrete fixes that cut needless recompositions and allocations by moving reads out of composition into layout or drawing phases, with working examples… | ||
| How Slack mobile does accessibility | Hye Jung Choi | 18m |
Slack Mobile runs with one Android accessibility engineer, no dedicated iOS hire yet and plans to recruit one, and no manual QA so engineers own accessibility… | ||
| Exploring Android Accessibility Malware | Aviv Gil-Ad | 20m |
Demonstrates a working Android accessibility service malware that automates credential stuffing by parsing combo lists, using a C2 to receive target app names… | ||
| DevSecOps: Balancing development and security | Pat Shueh | 34m |
Claims that Zimperium scans every Play Store app and finds 80% of Android apps lack obfuscation, demos showing APKs decompiled to reveal API keys and SSL… | ||
| Distributing big AI models in mobile apps | Beatriz Vinal Murciano | 33m |
SwiftKey is a billion‑download keyboard that keeps the APK small (20 MB download / 55 MB installed) while adding AI by choosing between cloud and on‑device… | ||
| Build KMP Offline-First Apps | Ben Chatelain | 39m |
Claims ability to get iOS and Android syncing in about two days by wiring a Ditto SDK into a Kotlin Multiplatform app; core uses a Rust engine exposed via C… | ||
| Extending kotlin-inject for fun & profit | Ralf Wondratschek | 38m |
Company replaces Dagger+Anvil with kotlin-inject + KSP to get compile-time DI across Kotlin Multiplatform, writes a custom KSP processor using KotlinPoet and… | ||
| Deriving derived state: derivedStateOf explained | Zach Klippenstein | 39m |
derivedStateOf is a custom Compose state that reduces invalidations and caches per-snapshot results so expensive or lazily-used calculations (example: sorting… | ||
| Improving Developer Experience On Byte At a Time | Ishan Khanna | 36m |
Build system middleware ByteX uses the Android Gradle Transform API and ASM to host isolated bytecode plugins that run as a single transform task, process… | ||
| Deploying Android AOSP at Scale | Kristian Golding | 17m |
AOSP-based, headless solar cameras with LTE Wi‑Fi and Bluetooth run on 71,000 devices across 45 states and process up to 6 billion images per day with ~500… | ||
| Reexamining Developer Advice from the First droidcon | Lauren Darcey, Shane Conder | 33m |
Compares advice from 2009 to 2024 and finds which rules still matter: keep long work off the UI thread, use StrictMode for thread/resource issues, test on real… | ||
| Adaptive Layouts in Compose | Alex Vanyo | 35m |
Explains why Compose’s composition/layout/draw phases force tradeoffs between first frame correctness and switching which composables run, and shows practical… | ||
| Gamifying Reduction of Technical Debt | Valera Zakharov | 47m |
A config-driven Code Health Score system quantifies and gamifies technical debt by merging Android lint and Detect SAR outputs, applying weighted checks, and… | ||
| How to make Kotlin compile 2x faster? | Penguin Jiao | 36m |
Aiming to halve Kotlin compile time on a huge monorepo, the team uses Gradle + Kotlin compiler tweaks: remove unused dependencies and split modules to raise… | ||
| Goodness, Gracious, Great Builds of Gradle | Eric Kuck | 26m |
Gradle at Reddit is replaced by a layered internal plugin set that enforces consistent build files, migrates dependencies, and speeds CI: a settings plugin… | ||
| How we automated code maintenance | Ameya Ketkar, Gautam Korlam | 25m |
Describes a production system that generates ready to merge PRs to automate refactors and cleanups across Kotlin, Java, Swift, JS, Go and more using a… | ||
| Meta-programming with K2 compiler plugins | Tadeas Kriz | 42m |
Builds several K2 compiler plugins: a declaration checker that enforces lowercase class names (reports warnings), an assignment transformer that rewrites… | ||
| Jetpack Compose Navigation: Beyond The Basics | Miguel Kano | 02m |
Covers making navigation-compose routes type-safe by replacing string routes with type-safe route classes, cutting boilerplate and preventing runtime ID… | ||
| Artifact Transforms | Nelson Osacky, Inaki Villar | 38m |
A Gradle/Android build often runs far more transformation work than tasks: an assembled debug can execute ~5,000 artifact transforms versus ~2,000 tasks, and… | ||
| Better, Faster, and Stronger CI/CD Pipeline | Yohan Hartanto | 43m |
Overview of Uber's Android CI: monorepo with ~12,000 modules, dual build systems migrating from Bazel+Bazel? (transcript says basil) and Gradle, moved CI from… | ||
| Universal heap trimming with LeakCanary 3 | Pierre-Yves Ricau | 37m |
Adds a heap-diff detector to LeakCanary 3 that runs during automated scenarios (Espresso, Robolectric, UIAutomator or JVM tests) and takes periodic heap dumps… | ||
| Creating delightful camera experiences | Jayant Chowdhary, Jag Saund, Kailiang Chen | 41m |
Recommendation: prefer CameraX for common apps and Camera2 only for raw reprocessing or high‑speed capture; CameraX simplifies setup to ~15–20 lines. New APIs… | ||
| Android Studio Tips and Tricks Part 3 | Michael Bailey | 41m |
Shows concrete Studio shortcuts and inspections: enable presentation assistant and IDE full zoom for live demos; use change signature refactoring (or Alt‑Enter… | ||
| 400 fragments in 40 days | Adam Greenberg | 27m |
Pinterest migrates roughly 445 fragments in 40 days from a bespoke screen manager into Jetpack Navigation by pivoting from a full rewrite to a phased plan… | ||
| Add Generative AI capabilities to your Android app | Terence Zhang, Thomas Ezan | 39m |
Gemini Nano runs on device via AI Core in Android 14 and targets small models for local GenAI, Gemini Nano (2–3B params), benefiting from LoRA fine‑tuning… | ||
| Simple Recipes to Enhance Developer Productivity | Aida Issayeva | 40m |
Large monorepo of ~2 million lines and 294 modules with ~150 builds/day and 110 contributors reduces PR build time from ~68 to ~27 minutes — a 61% total win —… | ||
| Building for the Future of Android | Dan Galpin, Ash Nohe | 43m |
Android 15 enforces edge‑to‑edge when you move to targetSdk 35, so handle window insets for custom composables (three‑button nav is translucent); enable… | ||
| 20 Nuggets in 20 Minutes - Get more from your CI | Ben Boral | 20m |
Shows concrete CI moves: run an LLM code review on diffs using Bitrise+OpenAI; benchmark runners—4‑core 27m → 16‑core 10m and an M1 Max Android build is… | ||
| Complement your media editing pipeline with Media3 | Nevin Mital | 15m |
Media3’s Transformer module provides concrete APIs for transcoding, trimming, custom GL shader effects and compositions built from edited media item sequences… | ||
| Boosting Compose UI from Sluggish to Snappy | Akshay Chordiya, Tasha Ramesh | 40m |
A Compose card stack that initially misses frame deadlines by ~50–60 ms gets rebuilt as a sandboxed “Janky Tinder” and profiled with macrobenchmark frame… | ||
| Exploring Navigation Libraries for Compose | Rikin Marfatia | 46m |
Compares three concrete Compose solutions by building the same multi‑module app three times with a bottom nav, a feed→detail flow, and deep links so you can… | ||
| nothing matches | ||