We may earn an affiliate commission when you visit our partners.
Course image
Alexandre Genet

During this course, we will develop an Android application that will display photos taken by the rovers on Mars using Android Studio.

This app will use all the latest Jetpack technologies:

  • Compose (no more XML)

  • Hilt (Dagger Dependency Injection Framework)

  • Room (Jetpack component to create a lite database)

  • Retrofit (REST client)

  • Coroutines and Flow (To create asynchronous tasks and request our database)

You also use ViewModels with Jetpack to use an MVVM Repository architecture.

Read more

During this course, we will develop an Android application that will display photos taken by the rovers on Mars using Android Studio.

This app will use all the latest Jetpack technologies:

  • Compose (no more XML)

  • Hilt (Dagger Dependency Injection Framework)

  • Room (Jetpack component to create a lite database)

  • Retrofit (REST client)

  • Coroutines and Flow (To create asynchronous tasks and request our database)

You also use ViewModels with Jetpack to use an MVVM Repository architecture.

With this example, you should be able to create an Android App to the industry standard.

Navigation with Jetpack Compose could be challenging, so we will create a simple example with 4 screens and a BottomNav to understand it. A Scaffold will be use to create the BottomNav.

Your productivity will be improve as Jetpack Compose is easier to write and reuse.

You will improve your knowledge of Kotlin. If you still use Java, this course is an opportunity to learn.

Compose is a new way to create a UI on Android. It is more concise and reusable. Therefore, it helps to develop faster Android applications.

In this app we will use Jetpack Compose Components from Materal3:

  • Card

  • LazyColumn

  • Column

  • Row

  • AsyncIamge (from the Coil lib to display an image from a server)

  • Text

  • Image

  • NavHost (to use navigation)

  • NavigationBar

  • NavigationBarItem

  • Box

  • Scaffold

We will also see how we can use a modifier to define padding.

Enroll now

What's inside

Learning objectives

  • Create an modern android application with jetpack compose in kotlin
  • Organize the code with separate layers (viewmodels mvvm, repositories and data layers)
  • Room database and retrofit
  • Understand the basic of flow and kotlin coroutine
  • Start jetpack composable in a ui tests
  • Write unit tests
  • Create animations
  • Create a theme using material3 with dark and light modes and custom fonts
  • Use hilt for dependency injection (a dagger-based framework)
  • Create a bottom navigation and navigate between screens

Syllabus

Introduction

In this first part, we will explore the Android App that we will building during this course. We will also look at the NASA API used to get the data and image to be displayed.

Read more

We will see how we can create a NASA API key on the api.nasa.gov website. This step is optional, using the DEMO_KEY is possible for this course.

Thought a simple basketball example we will describe the observable pattern with Flow.

Discover how the code will be organized into 4 layers:

  • Activity/Compose elements

  • ViewModels

  • Repositories

  • Data layers (Retrofit for API network requests and Room for local database)

We will describe the observation pattern to illustrate how the data are updated on the screen.

This lecture will feature some code examples to explain the relationship between layers.

Let's verify if you have understand concept of the project layer.

Test your knowledge about Jetpack compose.

During this lecture, we will add a bottom bar to choose between all the rovers photos and the saved photos.

In the resource, find the Android Studio project with the result expected at the end of the video. Also find the rover icon in the resources.

Reading of the Room documentation to understand how we will use it inside the Android application.

We will create the sqlite marsRover.db using Room. We will define one table for this database by creating the MarsRoverSavedLocalModel. In addition, we will create the DAO to access the data.

Then we will use Flow Combine to mix network data with local data. In order to display the rover photo with the status save/not save. We will also make the photo card clickable to change this status.

Create the saved screen accessible from the bottom bar with the saved photo that came from the database. In the downloadable material, you will find the Android project at the end of this stage.

In this video, we will use Android Studio to explore what data is written in our local database.

This article describes how to create light and dark theme for our app. The next video is a live coding of it.

Define a light and dark theme with personalized colors to create the unique Mars Rover Explorer Android application.

Learn how to change to font of the app using Material3 theme.

In this lecture, we will animate the save/unsave icon when the user saves or unsaves the photo. The animation will be a scale-in/scale-out type. We will also play with duration.

In this lecture, we will create a MarsRoverManifestViewModelTest to test the MarsRoverManifestViewModel.

Mockk dependency will be added to mock a MarsRoverManifestRepo and control answers for this repo.

We will also add a MainCoroutineRule to use coroutines in our test.

In addition, we will refactor MarsRoverManifestViewModel to use the IoDispatcher in our coroutine.

We will write tests for the MarsRoverManifestRepo and use mockk to predefine answers for the MarsRoverManifestService (success and error).

We will use test with coverage to verify that we test all the lines in the MarsRoverPhotoViewModel.

In this video, we will write unit tests on the function that combines data from the Retrofit interface (network request) and the Dao interface (room database) into a single model.

We will create a composeTestRule to manipulate composable functions automatically. We will also update the version numbers for the BOM and Junit4 UI tests.

In this lecture, we will have a UI test that will start the Manifest compose function. For this, we will create a fake list of RoverManifestUiModel, then use composeTestRule to start the screen and run text assertions.

We will create on automated test that display a predefined list of photo and verify that some texts are display and id our screen contains item with the content description "save icon".

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses Jetpack Compose, which offers a more concise and reusable way to create UIs on Android, potentially improving development speed and maintainability
Employs MVVM architecture with ViewModels, repositories, and data layers, which is a common and recommended pattern for building robust Android applications
Integrates Hilt, a Dagger-based dependency injection framework, which can simplify dependency management and improve code testability in Android projects
Includes UI tests using ComposeTestRule, which allows for automated testing of composable functions and verification of UI elements, promoting better code quality
Covers unit tests for convertors, ViewModels, and Repositories, which are essential for ensuring the reliability and correctness of individual components
Explores Material3 theming with light and dark modes and custom fonts, which allows developers to create visually appealing and personalized user interfaces

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Modern android dev with jetpack

According to learners, this course provides a strong, practical foundation in modern Android development using the latest Jetpack libraries including Compose, Retrofit, Room, and Hilt. Students appreciate the hands-on, project-based approach building a complete Mars Rover app, which helps solidify understanding of concepts like MVVM architecture, Kotlin Coroutines/Flow, and navigation. While the course is highly relevant and covers many essential topics like unit and UI testing, some reviewers noted that the pace can be fast for those without prior Android or Kotlin experience. Additionally, due to the rapidly evolving nature of these technologies, learners might need to make minor adjustments to the code as libraries update. Overall, it's seen as an excellent resource for transitioning to or mastering modern Android practices.
Libraries update frequently; code may need tweaks.
"As Compose and related libraries evolve rapidly, code examples might require minor adjustments to work with the latest versions."
"Had to update some dependencies and fix small build issues to get the project running smoothly."
"This is somewhat expected with fast-moving tech, but be prepared to troubleshoot occasional code issues."
"The course reflects a specific point in time for library versions."
Good explanation of MVVM layers.
"Liked how the MVVM architecture was structured and explained with clear separation of concerns."
"Helped me understand how to organize a modern Android project using repository and data layers."
"The architectural guidance is solid and industry-relevant."
Builds a complete, real-world app.
"The hands-on project building a Mars Rover app is a great way to apply the concepts learned."
"Loved building a complete app step-by-step, integrating all the different Jetpack components."
"The project ties all the concepts together nicely into a functional application."
"Working on the practical project was the most valuable part for me."
Covers the latest Android libraries.
"covers the latest Android technologies like Compose, Room, Hilt, Retrofit in a single project..."
"Great for learning Compose, Room, Retrofit, and Hilt together to build a modern Android app."
"This course was instrumental in helping me transition to modern Android development patterns using Jetpack libraries."
"I learned how to use the cutting-edge tech for Android development effectively."
Some topics could be more detailed.
"Could use more in-depth coverage on specific advanced Compose patterns or performance optimizations."
"Wished for more extensive examples on testing complex scenarios with these libraries."
"The introduction to Coroutines and Flow is good, but not a deep dive."
"Some advanced topics felt briefly covered."
Pace may be fast for beginners.
"Requires some prior Android/Kotlin experience, not ideal for absolute beginners."
"The course moves quickly through some topics, which can be challenging if you're completely new to Kotlin or Android."
"I found the pace a bit fast in certain sections, requiring me to rewatch videos."
"Might need prerequisite knowledge to keep up comfortably."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Android Jetpack Compose with Retrofit Room Hilt in Kotlin with these activities:
Review Kotlin Fundamentals
Solidify your understanding of Kotlin syntax and core concepts before diving into Jetpack Compose. This will make learning Compose much smoother.
Show steps
  • Review Kotlin documentation on variables, functions, and classes.
  • Practice writing simple Kotlin programs.
  • Complete online Kotlin tutorials or exercises.
Brush up on Android fundamentals
Revisit core Android concepts to better understand how Jetpack Compose integrates with the Android ecosystem. This will help you grasp the context of the course.
Show steps
  • Review the Android activity lifecycle.
  • Familiarize yourself with basic UI elements in Android.
  • Understand the concept of intents and activities.
Read 'Head First Android Development'
Gain a broader understanding of Android development principles before focusing on Jetpack Compose. This book can help bridge the gap for those new to Android.
Show steps
  • Read the chapters covering activities, layouts, and data storage.
  • Try the example projects in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Practice Compose Layouts
Reinforce your understanding of Compose layouts by building various UI components. This will improve your ability to create complex UIs with Compose.
Show steps
  • Create simple layouts using Column, Row, and Box.
  • Experiment with different modifiers for styling and positioning.
  • Build a more complex layout with nested components.
Build a Simple UI with Compose
Apply your knowledge of Compose by building a small, self-contained UI project. This will solidify your understanding of the concepts covered in the course.
Show steps
  • Design a simple UI with a few interactive elements.
  • Implement the UI using Jetpack Compose.
  • Add basic functionality to the UI elements.
Follow Advanced Compose Tutorials
Explore advanced Compose topics through online tutorials to deepen your understanding. This will expose you to more complex use cases and techniques.
Show steps
  • Find tutorials on topics like custom layouts or animations.
  • Follow the tutorials step-by-step, implementing the code examples.
  • Adapt the tutorial code to your own projects.
Contribute to a Compose Library
Contribute to an open-source Compose library to gain practical experience and learn from other developers. This will expose you to real-world development practices.
Show steps
  • Find an open-source Compose library on GitHub.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Android Jetpack Compose with Retrofit Room Hilt in Kotlin will develop knowledge and skills that may be useful to these careers:
Android Developer
An Android Developer builds and maintains applications for the Android platform, and this course directly aligns with that goal. This course provides practical experience in building an Android application using modern tools and techniques like Jetpack Compose, Hilt for dependency injection, Room for local data persistence, Retrofit for network requests, and Kotlin coroutines for asynchronous operations. The course emphasizes MVVM architecture, which is a common pattern used in Android development, and offers learners the chance to work with Material3 UI components and create custom themes. An Android Developer who has experience with these technologies will be highly effective in their role.
Mobile Application Developer
A Mobile Application Developer creates apps for mobile devices, and this course helps develop the skills to do so for the Android platform. The course focuses on building a complete Android app with the newest Android Jetpack features, including Compose, Hilt, Room, and Retrofit. It also includes testing and theming. A Mobile Application Developer should know how to develop with a modern approach. Understanding how to work with data layers, asynchronous tasks, and navigation is an essential part of this role, and this course provides hands-on practice with these concepts. It will be especially helpful for developers who want to transition to Android development or update their skillset.
Software Engineer
A Software Engineer designs, develops, and maintains software systems, and this course helps build skills in a specialized area of software engineering. The course provides a grounding in Android development using the latest Jetpack libraries and Kotlin, along with experience in testing, dependency injection, and data management. Knowledge of modern architectural patterns like MVVM, REST clients via Retrofit, and local databases with Room, which is all taught in this course, is crucial for Software Engineers who work with Android applications. The course's unit testing and UI testing sections will also be especially relevant to the Software Engineer role, which emphasizes code quality and reliability.
Kotlin Developer
A Kotlin Developer specializes in coding with the Kotlin language, and this course offers practical experience with Kotlin within the Android ecosystem. The course uses Kotlin to build an Android application using the Jetpack Compose framework, giving the learner real world experience using the language. A Kotlin Developer will benefit from the course's focus on modern Android libraries, such as Hilt, Room, and Retrofit. The course also gives a good overview of Kotlin coroutines and flow, which are important tools for asynchronous programming in Kotlin. Those who wish to use Kotlin in the Android ecosystem should complete this course.
UI Developer
A UI Developer focuses on the user interface, and this course introduces how to build modern UIs for the Android platform. The course specifically teaches how to use Jetpack Compose, the modern UI toolkit for Android development, including its declarative approach and component system. A UI Developer will find the emphasis on Compose components, Material3 design, and theming to be particularly useful. The course also covers navigation design with Composables and the use of modifiers, which are all highly relevant to UI development. Anyone who wants to build engaging and modern user interfaces on Android should take this course.
Mobile UI Engineer
A Mobile UI Engineer specializes in the development and implementation of user interfaces for mobile applications, and this course provides the necessary skills for creating Android UI. The course's focus on Jetpack Compose, Material3 components, themes, and animations is directly relevant to the work of a Mobile UI Engineer. This course offers hands-on experience with building layouts using Compose, working with navigation, and implementing custom styling. A Mobile UI Engineer who wants to focus on Android will find this course extremely valuable, as it covers modern development techniques and best practices.
Application Developer
An Application Developer is responsible for creating applications, and this course gives hands-on experience developing an Android application. The course covers the full development cycle, encompassing UI with Jetpack Compose, data handling with Room and Retrofit, and dependency injection using Hilt. An Application Developer must be aware of modern development techniques and the latest libraries, which is the focus of this course. The knowledge of MVVM architecture, coroutines, and UI testing learned in this course are directly applicable to the work of a successful Application Developer.
Mobile Software Developer
A Mobile Software Developer builds software for mobile platforms, and this course helps build experience for the Android platform. The course curriculum aligns with many of the responsibilities of a Mobile Software Developer, including user interface creation, data management, and network requests. The course gives learners a chance to develop a complete Android app from start to finish using modern tools like Jetpack Compose, Hilt, Room, and Retrofit. A Mobile Software Developer who seeks to work with modern Android development techniques should take this course.
Junior Software Developer
A Junior Software Developer is often involved in the development, testing, and debugging of software applications, and this course may be useful as a step toward that role with a focus on Android. The course provides practical experience in building Android applications with modern tools and frameworks, giving developers a real-world project to demonstrate their abilities. The focus on testing and using Jetpack libraries, which this course provides, helps a Junior Software Developer contribute to an Android project. This course may be useful for a Junior Software Developer who wants to focus on the Android mobile platform.
Software Development Engineer
A Software Development Engineer is involved in the full software lifecycle. This course may be helpful because it provides hands-on experience in developing a complete Android application using modern libraries and frameworks. The curriculum touches on topics like UI development with Jetpack Compose, data management with Room and Retrofit, and dependency injection using Hilt, which is beneficial to this role. Software Development Engineers may find that the course's testing components, including unit and UI tests, also aligns with responsibilities in the role. This course may be useful for a Software Development Engineer who wants to familiarize themselves with Android development.
Backend Developer
A Backend Developer focuses on server-side logic and databases, and this course may be useful to understand how Android applications interact with data. Although this course focuses on Android app development, it covers network requests using Retrofit and local database storage using Room. These are very relevant to the work of a Backend Developer. Understanding how the backend integrates with client applications is important, and this course can help a Backend Developer understand that. A Backend Developer who wants to understand the relationship between client and server may find this course helpful.
Full-Stack Developer
A Full Stack Developer works on both front-end and back-end technologies, and this course may be useful to develop the front-end skill set with a focus on Android. The course covers the use of Jetpack Compose, which handles the front end of android applications, as well as network data requests via retrofit, which is relevant to the full stack. While the focus is on the mobile platform, understanding how different parts of an application work together is relevant to the Full Stack developer. A Full Stack Developer may find this course helpful as a way to expand their skillset into the mobile field.
Mobile Product Manager
A Mobile Product Manager oversees the strategy and development of mobile products, and this course may be useful for understanding the technical aspects of building Android applications. Although the role does not directly involve coding, the course provides insights into the technologies and processes involved in Android development, which can help with informed decision-making. This course familiarizes learners with the Android ecosystem, modern development practices, and the challenges of building apps with tools such as Jetpack Compose. A Mobile Product Manager may find this course helpful for a better understanding of mobile development.
Technical Project Manager
A Technical Project Manager oversees technical projects, and this course may be useful for gaining insight into the Android development process. While a Technical Project Manager does not need to be a developer, this course provides experience using modern tools and practices for creating Android applications, which can help with project oversight. An understanding of the technologies, development patterns, and testing methodologies described in the course, would help a Technical Project Manager communicate with the development team. A Technical Project Manager may find this course helpful to be better versed with the challenges in Android development.
Quality Assurance Engineer
A Quality Assurance Engineer ensures the quality of software through testing, and this course may be useful for understanding testing methodologies specific to Android. The course includes sections on UI testing and unit testing, which are very relevant to Quality Assurance. Although Quality Assurance Engineers may not need to know how to code, exposure to development and testing can help improve communication across teams. A Quality Assurance engineer who seeks to broaden their knowledge of the Android development lifecycle may find this course helpful for their career.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Android Jetpack Compose with Retrofit Room Hilt in Kotlin.
Provides a beginner-friendly introduction to Android development concepts. It covers fundamental topics like activities, layouts, and data storage, which are helpful for understanding the context of Jetpack Compose. While the book uses Java, the core concepts are transferable and provide a solid foundation. It is more valuable as additional reading to build a base understanding.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser