DroidKaigi 2024
2024-09-11..2024-09-13
Tokyo, Japan
[DroidKaigi 2016, DroidKaigi 2018, DroidKaigi 2019, DroidKaigi 2021, DroidKaigi 2022, DroidKaigi 2023, DroidKaigi 2024, DroidKaigi 2025, DroidKaigi 2026]
as the organisers put it
DroidKaigi is a conference tailored for Android developers. We took place on the 11 to 13 of September 2024.
who it's for
android developers, kotlin developers, ui engineers, app architects, qa engineers, security engineers, tools developers, cross-platform developers
topics
Jetpack Compose migration strategies; Jetpack Compose modifiers usage; Compose screenshot and UI testing; Kotlin 2.0 and K2 migration; Kotlin Symbol Processing (KSP) adoption; Navigation and keyboard focus in Compose; Gradle dependency verification and supply chain hardening; Offline-first apps with Room and WorkManager; Firebase Analytics event instrumentation; PDF rendering and Android 15 improvements; Credential Manager and Google Sign-in migration; MediaPipe image recognition on Android
| title | author | length |
|---|---|---|
| Opening | murAta Yuzi | 01m |
Opening sequence for DroidKaigi 2024 sets a jaunty tone with music by 100-200 and a short animated montage that stitches conference branding to playful lyric… | ||
| Understanding Context | Okumura | 33m |
Defines Android Context as the app’s window to resources and system services and shows concrete APIs: Context.getString for locale-specific strings, using… | ||
| From Android View to Jetpack Compose — A Guide to Migrating to Jetpack Compose | syarihu | 38m |
A practical, incremental migration from Android View to Jetpack Compose using Kotlin 2.0–aligned Compose compiler, Hilt, Navigation Compose, and ComposeView as… | ||
| Essential concepts to know when learning Declarative UI | HyunWoo Lee | 38m |
Compares concrete implementations across Jetpack Compose, SwiftUI, React Native by walking through a timetable-item like button (mutableState, like/isLike and… | ||
| Preparing for Supply Chain Attacks | RyuNen344 | 41m |
Covers protecting Android projects against supply-chain attacks by showing concrete Gradle practices: how to verify library signatures (PGP), configure… | ||
| Catching Up on Jetpack Compose Training Starting Now | nyafunta9858 | 37m |
A practical roadmap for becoming productive with Jetpack Compose: start with Android Developers docs, codelabs and GitHub samples, then perform three setup… | ||
| How Kotlin 2.0 Will Evolve Android Development | daasuu | 38m |
Kotlin 2.0 introduces the K2 compiler promising up to 2× faster compilation and gives a concrete six-step Android migration path (bump Kotlin, update KSP, move… | ||
| The real case of offline-first app: Farmer App… | Arief Rahman, Takuya Kodama | 38m |
An Android app for Ghanaian farming communities stores user inputs as draft records in a separate Room table, shows local data via Room flows immediately, and… | ||
| Navigation focus in 2024: Supporting keyboard navigation with Compose | Tiphaine | 36m |
Focus navigation for non-touch input on Android — keyboard, remote, and game controllers — and how to implement and preserve that support when migrating UI to… | ||
| Why you should positively consider introducing and migrating to KSP | shxun6934 | 37m |
Kotlin Symbol Processing (KSP) as a replacement for kapt is explained: add the KSP Gradle plugin, switch annotation-processor dependencies to their KSP… | ||
| Comprehensive Guide to Jetpack Compose Modifiers | wiroha | 38m |
A deep dive into Jetpack Compose Modifiers that surveys about 150 modifiers and presents 49 concrete examples, plus a ZOZO usage ranking derived from three… | ||
| You will 💙 becoming a fullstack develope… | Ibrahim Gharbi, Yassine Benabbas | 36m |
Shows three working demos: a Quiz app sharing one Kotlin codebase that runs on four platforms from one codebase (Android, iOS, desktop, web) while keeping… | ||
| Help! ViewModel | mhidaka | 43m |
Uses Kotlin Flow streams from repositories and maps internal ViewModelState to a plain UIState that Compose renders, keeping a single-direction data flow… | ||
| Thinking about battery life: strategies for location monitoring (Geofence) | Haruchiro | 39m |
Compares a custom geofence implementation (using the Fused Location Provider and haversine formula to compute distance) with Google Mobile Services (GMS)… | ||
| Working abroad as a career option | tetsu | 37m |
The talk explains how taking a job abroad expands career options but needs planning: visas tend to favor occupations with labor shortages, relevant experience… | ||
| PDF Viewer then and now — PdfRenderer improvements in Android 15 | Hunachi | 38m |
Covers building a custom Android PDF viewer using the platform PdfRenderer API and Jetpack Compose, including code for Compose lists, scrolling/zoom gestures… | ||
| Image Recognition and Object Detection with MediaPipe on A… | Anant Chowdhary | 48m |
Shows how to run on-device object detection, classification and segmentation on Android using MediaPipe with concrete code steps: add… | ||
| What I learned improving complex code in my first year as an engineer | Tanamura | 36m |
An early-career Android engineer describes tackling legacy product code by migrating incomplete Flux-based Action/Store components toward Clean Architecture… | ||
| Privacy Sandbox on Android | Junya Haseba | 41m |
Google's Privacy Sandbox on Android defines four concrete components: a 446-topic on-device interest taxonomy, a Protected Audience API for running ad… | ||
| Understand the mechanism! Screenshot-testing Compose previews in many variations | Sumio Toyama (sumio_tym) | 40m |
Describes turning Jetpack Compose @Preview functions into automated screenshot tests across variants (dark mode, tablet sizes, locales) by collecting previews… | ||
| Crafting Cross-Platform Adventures: Building a Game Engin… | David Wursteisen | 36m |
Built a Kotlin Multiplatform engine using OpenGL/WebGL and hitting iOS’s Metal roadblock that forces rewriting all shaders, so 3D work stalls and focus shifts… | ||
| Android 15 and Japanese Support | Seigo Nonaka | 39m |
Android 15 introduces concrete Japanese text features: locale-driven font selection so Japanese fonts are chosen by default, new line-break tuning including… | ||
| From Idea to IDE: Developing Plugins for Android Studio | Ahmed Ali | 28m |
A working Android Studio plugin is built that adds a context menu item Document this code, sends the selected Kotlin element to Gemini AI via a Ktor client… | ||
| Strategies and tactics for incrementally refactoring while keeping the app releasable | Yuki Anzai | 41m |
Strategies and concrete tactics for performing incremental refactors on Android apps while keeping them releasable are presented, covering migrations like… | ||
| Using Credential Manager starting with Google Sign-in migration | clockvoid | 41m |
Explains migrating from Google Play Services Auth (deprecated 2025) to Jetpack Credentials and Google ID libraries: replace play-services-auth calls with… | ||
| [Guest Talk] Increasing coding productivity w… | Adarsh Fernando, Chris Sinco | 37m |
Gemini in Android Studio ships in Canary and demos adding a favorites filter to a Compose Pokedex (uses PokeAPI) by using the chat window, custom code… | ||
| Win on startup time! Improving app launch performance | yanmar | 36m |
Shows how to measure Android cold start with Macrobenchmark (10 iterations) to capture TTI, then add reportFullyDrawn to get TTFD and use Android Studio CPU… | ||
| Shared Element Transitions in Jetpack Compose: examples, adoption and how they work | hyoga | 33m |
Shows a Jetpack Compose 1.7.0-beta01 photo viewer using SharedTransitionLayout, Modifier.sharedElement(), rememberSharedContentState and AnimatedVisibility to… | ||
| Automated kitting for Android dedicated devices using WebADB | Hisamoto Kunimine | 39m |
Presents a system to convert Android devices into single-purpose terminals by automating ADB commands either with shell scripts or via a browser client using… | ||
| Sending events to Google Analytics for Firebase to support data-driven decisions | Haruhiko Takada | 36m |
Describes how Google Analytics 4 for Firebase exports events to BigQuery (one daily table) and how setting analytics_user_id allows app events to be joined… | ||
| Data-backed app widget development — with Jetpack Glance | Miyabi Gouji, Yuri Ogura | 41m |
The talk presents rebuilding Android app widgets using Jetpack Glance to improve retention and avoid App Standby Buckets, including a new combined… | ||
| Bridging the Gap: Understanding Method Channels for Flutter … | Md Noman Khan | 27m |
Shows working code to call native battery APIs on Android (MainActivity) and iOS (AppDelegate) using a MethodChannel named command_test_battery and a Flutter… | ||
| 2024 edition! Thorough comparison of generative AI useful for Android development | Nishimy, wiroha | 39m |
Compares three generative AI tools—Google Gemini, GitHub Copilot, and OpenAI ChatGPT—focusing on how each integrates with Android Studio and performs on… | ||
| Mastering Screenshot Testing for Android Apps | bing-zhu | 38m |
Compares Roborazzi and Google’s Compose Preview Screenshot Testing (CPST), showing a real setup that uses Roborazzi + Showcase with a screenshot-grad plugin… | ||
| Road to Single Activity | yurihondo | 42m |
Migrates a large Android app from Fragments/AndroidView to Jetpack Compose and consolidates many Activities into one working main activity, using Navigation… | ||
| Best practices for building a consistent design system from design to app implementation | Shuzo | 40m |
A concrete production design-system recipe: keep structured Figma files and export design variables via Figma Variables → REST API, use an automated token… | ||
| RAG (Retrieval Augmented Generation) with Mobile Application | DREAMWALKER | 37m |
Builds a 100% native Android (Jetpack Compose) RAG app that uses OpenAI/Gemini APIs and Orama embeddings with Chroma on the server and migrates retrieval and… | ||
| Implementing an Android client that brings out GraphQL’s strengths | Kurumi Morimoto | 36m |
An Android app has used GraphQL end-to-end for about two years and documents four ADRs: put domain logic in the server schema, use Apollo-Kotlin v3 with a… | ||
| A New Era of Testing | Marcel Schnelle | 36m |
JUnit 5 is usable on Android now via an Android JUnit5 Gradle plugin and Jupiter libraries (example uses 5.11); unit tests get parameterized features like CSV… | ||
| All the ways to check UI variations in Android apps | Nozomi Takuma | 41m |
Shows practical methods and tools to verify Android app UI variations: Jetpack Compose Preview (multi‑preview templates and custom devices), Android Studio UI… | ||
| Understand touch event mechanics and master gestures | usuiat | 39m |
Explains how Jetpack Compose detects and handles touch events and gestures, covering simple APIs like onClick, the detectGestures API, and how to build custom… | ||
| Put some 3D sparkles in your 2D app | Daniele Bonaldo | 35m |
Shows how to drop real 3D models into an Android Compose app using the Filament engine, loading glb and gltf formats, and reusing one Engine plus loaders… | ||
| Debugging: All You Need to Know | Jumpei Matsuda | 33m |
Shows concrete debugger techniques in Android Studio: use conditional breakpoints and path counts to avoid noisy logs, attach the JVM debugger in four ways… | ||
| Android Auto app development today — a case study from building navigation apps | Takuro Negishi | 33m |
Yahoo! Car Navigation was ported to Android Auto and made production-ready using Google's Desktop Head Unit emulator to test screen sizes and rotary-controller… | ||
| How Android development experience applies outside Android development | konifar | 37m |
Describes how Android engineering skills transfer to backend and iOS work and leadership: moved from Android to writing Go server code, doing Kotlin Android… | ||
| Practical obfuscation guide | Mitchan | 36m |
R8 is Android’s default tool (since AGP 3.4.0) that does code shrinking, resource shrinking, optimization, and obfuscation to reduce APK size and enable… | ||
| Creative and complex user interfaces with Compose UI | Chris Horner | 39m |
Recreates a Persona 5–style messaging UI in Jetpack Compose: custom trapezoid speech bubbles drawn at runtime with genericShape, avatars masked and layered… | ||
| nothing matches | ||