Who’s this API for? Practical User-centric Techniques for Android Library Design

Are the APIs of your Android library truly designed with “ease of use” in mind? When we focus solely on implementing features, it’s easy to overlook the perspective of the developers who will actually consume the library. In this session, I’ll share exactly that kind of experience. While building an in-house authentication library—including UI and navigation—we discovered that the “well-intentioned” API we had crafted clashed with consuming apps’ architectures and DI strategies, and was hard to grasp without thoroughly reading the docs. This revealed a gap between the *maker’s logic* and the *user’s needs*. Drawing on these lessons, we’ll define what a genuinely developer-friendly interface looks like and present concrete design practices and code examples from real-world Android development that you can start applying tomorrow. # Main Topics - Why obsess over interface design? - Lessons from failure and how a truly usable library elevates developer experience. - Putting consumer-friendly API design into practice: - Harmony with app architectures: Designing APIs that fit various structures (MVVM, MVI, Jetpack, etc.) and integrate flexibly with networking layers such as OkHttp/Retrofit. - Encapsulating UI and navigation: A deep dive into making a UI- and navigation-aware authentication library that remains architecture-agnostic yet easy to wire into apps. - Respecting DI strategies: DI-agnostic techniques that play nicely with Hilt, Koin, and other setups—even for UI-heavy libraries. - Keeping dependencies simple: Choosing public API types and hiding third-party dependencies. - Leveraging Kotlin’s strengths: Using extension functions, DSLs, and other language features to craft safe, intuitive APIs. - Organizing Gradle modules and dependencies: Clarifying dependency graphs with effective `api` vs `implementation` usage. - To continuously improve libraries: - Effective KDoc, sample apps, team maintenance workflows, and making the most of user feedback. This session will prompt you to re-examine what makes an interface truly “easy to use” and equip you with practical tips and ideas to try in your own projects starting tomorrow. (Translated by the DroidKaigi Committee)

  • mkeeda Cybozu, Inc. Android Engineer


Summary

  • Dates 2025.09.12 / 17:20 ~ 18:00 (40min)
  • Place Jellyfish
  • Language Japanese

Intended audience

- Developers who see room for improvement in their Android library APIs and want to boost usability - Those seeking practical know-how on encapsulating complex features—including UI and navigation—into libraries that integrate smoothly with apps - Developers looking for modern, maintainable library design techniques that leverage Kotlin - Engineers responsible for (or interested in) the quality and maintainability of team-developed libraries

Android is a trademark of Google LLC. The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License. Android, Google Play and the Google Play logo are trademarks of Google LLC.

© 2014- DroidKaigi Committee