A senior software engineer working at Careem as part of the Food android team
Abdulahi Osoble
Scaling Android Development without a Monorepo
As mobile startups grow into medium sized companies, it's not always possible to have a monorepo. In this talk, we'll discuss how some strategies and tooling can help us ship and manage an Android app across a large number of repositories. We'll also discuss some of the problems we run into and how we can solve them.
We'll discuss topics such as:
- binary compatibility - why it's important and how we handle it (especially when a bump in a shared library might cause a crash in a completely different part of the app).
- tooling to understand changes to the dependency tree (what version changes occurred, what versions are behind, and catching these at CI).
- sharing Gradle build plugins to make life easier.
- code generation strategies to share code between Android and iOS.
- and more
We’ll also discuss a high level of the architectural decisions that allow adding or removing major pieces of functionality through just adding or removing a dependency to the Gradle script, and how this architecture gives us some neat advantages along the way.