From Code to Play Store: The Long Journey of an Android App
Getting an Android app into production is a long and complex journey.
Over the past few weeks, I have been building an app called Bastion - Secure Vaults. This app allows users to create highly secure vaults—protected by industry-standard encryption—to store sensitive files and photos. The "secret sauce" is that users can create multiple vaults, allowing them to set up "decoy" vaults to hide their real ones.
Developing the app was both fun and challenging. My days were filled with the typical tasks of a mobile developer: writing Kotlin code, crafting the security architecture, and testing the app on both virtual and real devices. I used Linear (my favorite ticket manager) to handle feature requests and user feedback, while managing the codebase through Git—branching, merging, and linking every commit to its corresponding ticket.
However, things got trickier during the transition to the Google Play Store. I configured my CI/CD pipeline (using GitHub Actions) to automatically generate an app bundle and upload it to the "Internal" track every time I pushed code. From there, I could promote the release to other tracks as needed.
This is where I hit a roadblock: I eventually had multiple versions of the app across different tracks and couldn't easily remember which version contained which features. I found myself manually tracking the relationship between my Git history, my ticket management service, and the app version code (the CI build number).
I realized I was trying to synchronize three entirely different phases:
- Coding: Managing history with Git.
- Publishing: Managing tracks in the Google Play Console.
- Planning: Managing features in a ticket manager.
I really wish there was a tool to bridge these gaps and keep everything in sync automatically...
— Christophe