This is a series to document every step involved, from development to deployment.
📱 The Goal
I want to learn how to make Android Apps.
I've built a few small apps in React that help educating and training your musical ear, and while they work well in a web browser, I'd like those to be available as stand-alone offline apps. Once they work on my phone, an additional possibility is to upload them to Google Play. I find them useful after all, so maybe others too, and it would be a joy to work on something that connects coding and music.
This is only a rough overview, because I can't even estimate yet all the things I'll have to learn. When I started experimenting with some basic apps, I thought my usual development environment (an average Windows PC) would fulfill all requirements. It has already transpired that this task goes beyond learning a few tools and libraries.
👉 I'll use React Native, since I already know React.
👉 Expo allows a simple setup for beginners, so I'm going to use that as well.
👉 At some point, I'll have to eject from Expo, because the apps that I plan to build require access to Android APIs that Expo hasn't made available yet.
👉 From that point onwards, there seems to be no way around setting up a Linux machine. It's a good idea anyway to get familiar with it.
👉 I have no experience whatsoever with Android Studio yet, but I'm quite sure I'll need some of their command line tools as well.
📱 Step 1: Linux
Linux will only come into play once the app is finished and ready for deployment, but I think it would make sense to start here, to learn how to use it while setting up the development environment.
There are hundreds of different distributions (distros) available for Linux, but one of the most popular choices, particularly for Android development, is Ubuntu.
A little background info
Any Linux distro consists of basically two parts: The Linux kernel and a set of tools/applications (GNU software).
The kernel is located at the lowest level of the system. It is responsible for allocating memory and managing resources and devices, but on its own, it would be mostly useless. To have a full operating system, you also need software to interact with the computer and instruct it to do the tasks you want it to do (write some text into an editor, save that file, etc). If you compare the operating system to a car, the kernel would be the engine.
📱 Resources for further reading: