In the third project in the Udacity Android Developer Nanodegree, students are tasked with making a baking app capable of showing a collection of baking recipes for a variety of delicious cakes. Recipes feature ingredients, a step-by-step instructions as well as a video to guide the cook.
The objective of this project is to allow the students to demonstrate having learned a variety of useful Android developer skills, such as:
- Master-datail flow utilizing fragments on phones and tablets
- Providing a widget for the user's homescreen
- Video playback using Exoplayer
- UI testing using the Espresso testing framework
- Handling errors and inconsistencies in network APIs
- Use relevant libraries to alleviate some of the manual, tedious or otherwise error-prone work inherent in Android development
Aside from the core project requirements set forth by Udacity, this project stands out by including:
- MVVM architecture utilizing Google's Architecture Components
- LiveData
- ViewModel
- Room
- Dagger2 dependency injection
- Timber for enhanced logging
- ButterKnife viewbinding
- Glide image loading
- Retrofit + Gson for fetching network data as well as JSON deserialization
- Java 8 language features like lambda's and method references
- General advice on how to use ExoPlayer from this article
- Much inspiration on MVVM from Google's codelab
- Info on Room relationships from this article
- How to set intents on activity under test from this blog post
- How to write custom matcher for testing background color of a view from this SO answer (adapted)
- Targeting individual tests for phone and tablet respectively from this article
- Commit messages format and content from this guide
- How to make ExoPlayer fullscreen from this article