How to take your beginner Android skills to the next level by studying open-source Android Apps
This list of open-source Android apps may come in handy if you have grasped all necessary concepts to develop Android application and you think you are ready to work on an application that follows industry standards. By industry standards, I mean, an app that has good architecture, is scalable and maintainable in the long run.
Here is the list of open-source apps in this article:
- Android Architecture Blueprints v2 — Google’s official recommended app
- Plaid 2.0 — Google’s official recommended app with focus on Material Design
- Sunflower — Google’s official recommended app with more focus on many Jetpack components
- CatchUp — Community app with multi-module and multi-api-service
- Showcase — Community app with multi-module and clean architecture
- Google I/O — Google’s official annual conference app
- Tivi — Community app with a focus on multi-module architecture and Jetpack
FYI: Google has an 📚 official architecture guide for Android application which captures what most of the sample application does. I highly recommend you read that article first before studying any open-source applications.
⚙️ Android Architecture Blueprints v2
This is Google’s official app that showcases the usage of some of the key Jetpack components to make a sustainable app. This is a good starting point to get an understanding of how to architect an app.
They do have a vanilla implementation in master
branch, however, I will focus on dagger-android
branch that has dagger support (see README).
- Language: Kotlin
- Architecture: MVVM
- Dependency Injection: Dagger
- Navigation: Jetpack Navigation
- Unit Tests: JUnit and Espresso
- Source: https://github.com/android/architecture-samples
👔 Plaid 2.0 — Showcasing Material Design
In early days Plaid 1.0 application (created in 2014) was Nick Butcher’s app where he showcased how material design and animation can bring joy and life to an Android application. After years of improving, the Plaid app has come to a point where it makes perfect sense to make this app a reference app that showcases how an ideal Android application can be built using material design and fluid animation. So, in 2019, Nick did exactly that, they have moved the Plaid Github repo to Google’s official repository — here is the article explaining the move and goal (I highly recommend to read it).
NOTE: The Plaid 2.0 is still under heavy development, which as a bonus, gives you an opportunity to learn how an application is migrated to modern architecture and Kotlin. See the Github project page with different technical articles explaining how the app is being migrated to 2.0
- Key Features: Material Design, Android Theming, Dark Mode, Multi-Module, Animation
- Language: Kotlin
- Architecture: MVVM
- Dependency Injection: Dagger
- Navigation: Plain (intent based)
- Unit Tests: JUnit and Espresso
- Source: https://github.com/android/plaid
🌻 Sunflower — Showcasing Android Jetpack
This is another Google’s official app that showcases many Jetpack components in one application.
This is a minimal application that is great for learning.
- Key Features: Dark Mode, Animation, Room (Database), WorkManager
- Language: Kotlin
- Architecture: MVVM (LiveData, ViewModel, Lifecycle, Data Binding)
- Dependency Injection: None (Dagger not used to keep it simple)
- Navigation: Jetpack Navigation (Single Activity)
- Unit Tests: JUnit and Espresso
- Source: https://github.com/android/sunflower
🔖 CatchUp — All in one
This app aggregates articles and posts from different services like Hackernews, Medium, Reddit, Slashdot, Dribble, Uplabs and so on. This is a very recent app from Zac Sweers who has put a significant amount of time to develop this app. The app architecture is inspired by Plaid and U+2020 app. CatchUp is being actively developed, you can clone and build locally to try it out.
Please note, this is kinda large scale complex application that is well done and contains many advanced techniques. So, if you are a beginner, I would postpone looking into the application towards the end of your study ^_^
ps. I, myself have found this application recently. Personally I like how the Gradle script is organized using Kotlin based Gradle scripts (kts), and how the dagger is used extensively to manage dependencies of different component and service implementations.
- Key Features: Dark Mode, Animation, Advanced Dagger,
- Language: Kotlin
- Architecture: — (Not sure, I need to study this app more)
- Dependency Injection: Dagger Hilt (Advanced usage)
- Navigation: Basic (Intent Based)
- Unit Tests: Some JUnit tests exist (not priority).
- Source: https://github.com/ZacSweers/CatchUp
NOTE: As per Zac, he recently tweeted “standard disclaimer that CatchUp is not necessarily a template of patterns I endorse or recommend. It’s a laboratory not a representative sample”
Showcase — clean architecture
This is another community sample that I discovered recently. The sample app is developed by Igor Wojda, author of “Android Development with Kotlin” book.
The showcase app incorporates many best practices, here is the project summary on Igor’s own words:
Android application following best practices: Kotlin, coroutines, Clean Architecture, feature modules, tests, MVVM, static analysis.
- Key Features: Kotlin and Coroutines, Gradle KTS, Static Code Analysis
- Language: Kotlin
- Architecture: Clean Architecture
- Dependency Injection: None (Manual)
- Navigation: Jetpack Navigation
- Unit Tests: JUnit
- Source: https://github.com/igorwojda/android-showcase
Honorable mention
Here are some open-source apps that are worth mentioning:
🎤 Google I/O Annual Conference App
Since 2011 the Google I/O companion application has been the spotlight application by Google that showcases the latest Android features. It recently incorporated Android Wear and Auto variants too.
Historically the source code of the app is released 3–5 months after the conference. Still, it is a great complete application for studying.
- Key Features: Multiform factor (Mobile, Tablet, Wear OS, Auto, TV), Firebase, WorkManager, Dark Mode (2019)
- Language: Kotlin (2018-2019+), Java (2011–2017)
- Architecture: MVVM (2019)
- Dependency Injection: Dagger Hilt
- Navigation: Jetpack Navigation (2019)
- Unit Tests: JUnit and Espresso
- Source: https://github.com/google/iosched
📺 Tivi — Track Show Tracking
Tivi app is currently in the early stages developed by Chris Banes, a member of the Android Developer Relations team. He closely works with Nick Butcher, author of Plaid.
The app uses all the latest libraries and recommendations from Google. This app has a very modular structure, almost everything is divided into modules (about 29 modules as of writing). This app will be a good study material when the app goes into the beta stage. Now, it’s too early to recommend as main study material.
- Key Features: Dark Mode, Multi-Module, Multi-Service (Trakt, TMDb), Room (Database), RxJava 2
- Language: Kotlin
- Architecture: MVVM + Lifecycle + LiveData
- Dependency Injection: Dagger Hilt
- Navigation: Jetpack Navigation
- Unit Tests: JUnit (Under active development)
- Source: https://github.com/chrisbanes/tivi
I will continue to extend this article to include more community projects. Feel free to share projects that are ideal for learning. Thanks 🙏