Baseline Android Project Setup

I’ve been working in a large Internet retail application for almost a year now. Despite rigorous revisions and grooming, the project still consists of architectures, types and approaches dating back to the beginning of Android’s framework – some of them deprecated and several Google creations that were eventually abandoned by Google’s own engineers.

It’s been bewildering trying to keep up with new developments for the platform, all the while updating legacy code. It’s also been difficult to accept announced features that aim to fix common issues that make production Android development difficult. I admit to feeling cynical about new a feature’s effectiveness and long-term support from the Android team.

An iOS engineer recently asked me where I’d start with a green-field Android project. I gave that person a quick list of libraries and approaches. That got me thinking about how to advise a non-Android person about sorting out all the good from the bad and I came up with this list.

If I’m starting almost any project I’ll typically follow this list. I’ll probably update this and maybe add a link to my minimal project.

Production Libraries

  • Retrofit
  • Koin
  • Okhttp
  • Firebase remote config
  • Databinding via LiveData
  • Architecture components
  • Timber

Development Libraries

  • Leak Canary


  • Multi-module / feature-module
  • MVVM
  • Concurrency via coroutines
  • ViewModels
  • DI

Convenience QOL

  • KTX


  • RxJava
  • RxKolin

Rules of thumb

  • Minimize annotation processing as much as possible

Leave a Reply

Your email address will not be published. Required fields are marked *