Android Basics: Introduction

April 3rd, 2020

Welcome to my Android Basics series! Throughout the coming posts I will introduce you to the fundamentals of building a high quality Android app from scratch. Starting from an empty Android Studio project, we will build out an entire app, following solid development practices, designing a good architecture, and targeting relatively high quality UI and UX to make sure the app comes out the other end as a great piece of software.

What will we cover?

Throughout this course I will teaching:

  • Fundamental Android concepts such as Fragments, Activities, and Views
  • How to architect an Android app for easy maintainability, testability, and extensibility
  • Tips to effectively use Android Studio to build an app (I will be using IdeaVim, but will include plenty of non-Vim tips as well)
  • Android modularity
  • Unit and integration testing
  • How to properly handle errors and give feedback to the user about incorrect inputs or failure state
  • Dependency injection, a summary of the available options, and then details about using Koin throughout the rest of the series
  • Planning out a data schema and using Room for databases
  • How to build a UI, including details on building custom views, how to present data in a list, and how to properly style your app
  • Little ways to improve the experience of using the app. Everything from audio feedback to interaction animations.
  • How to share with other apps
  • How to prepare an app for the Play Store

There are many details of app development that won't be covered. There will be minimal use of media (only for UI feedback), no complex networking, and the interface will be relatively simple. This will also be a free app with no IAP, so I won't be covering any payment processing topics

In the future I will be writing series delving more into these unexplored areas, but for now even with a relatively simple app this will be a lot to cover!

Prerequisites

This is not a series for totally beginner programmers. I won't be covering Kotlin basics, I will be going quickly through much of the tooling setup, and I will expect some familiarity with Git and other basic development tools.

If you are completely new to Kotlin, I would recommend taking a look at https://kotlinlang.org/docs/. The Getting Started guide on the official docs should give you enough background to understand what I'm teaching.

I won't expect any prior knowledge of Android development though. This will literally start from the installation of Android Studio and go from there.

What are we building?

As I have discussed before, I will be teaching with projects that are at least somewhat compelling and could be interesting to use. As such, I want to build a habit tracker app that captures the idea of 'don't break the chain', and presents it in a nice way. Ideally this should be an app that is satisfying to use and you will want to have on your own phone. The working name for the app will be HabitChain.

I will say though, if you aren't feeling that inspired by HabitChain and have an idea for a similarly scoped project, feel free to build that instead! There will of course be adjustments you will need to make, but the process should work relatively well, and at worst you might need to repeat some things a few times to build out all of the features in your app. But if it keeps you more engaged with the material you will learn much more, and adapting the learnings to something of your own is valuable in and of itself.

Next Steps

In the next lesson I will be introducing some basic concepts, tools, and terminology that you will come up constantly as you develop for Android.

Next Post: Coming Soon

One last thing.

If you enjoyed this post, consider signing up for my newsletter. Every week The Wednesday Writeup will come to you with an update on what I have been working on and thinking about, as well as recommendations for things to read and watch. You can check out the backlog and sign up at aengus.substack.com.

I don't have comments on this site, but I would also greatly appreciate any feedback via Twitter or Email.