Codecademy Logo

Why Android?

Android Hardware

Hardware is the physical “hard” components of the phone, like the screen, battery, processor and motherboard, or even more obscure hardware devices like accelerometers, gyroscopes, proximity sensors, etc. The software is the intelligence that makes the phone run, manages all of the input/output, and runs the apps (in this case Android).

Android Software

Software is the intelligence that operates the hardware, manages all of the input/output, and runs the apps. It’s the brain of the device.

Android Source Code Modification

Because the Android source code is modifiable by companies selling the phones, the actual user interface from device to device will vary as well. Depending on the brand of phone and when it was purchased the default UI may differ.

Android Software Development Kit

The Android Software Development Kit contains the libraries and tools you need to develop Android Apps.

Android Studio

Android Studio is an Integrated Development Environment (IDE) created by Google which is used to develop Android apps. Android Studio is a program specifically designed to make developing Android Apps easier, it helps to streamline development, and contains useful tools like a visual layout editor, a debugging suite, and a collection of device emulators to test your apps on. It also has the ability to load your app up on a real android device, and package your app for deployment to the Google Play Store.

How to Write Android Apps

Android apps are developed in one of two programming languages, either Java or Kotlin. Apps also utilize Extensible Markup Language (XML) which is used to describe data resources, build configuration files, and describe the UI of apps.

Android Virtual Devices

The Android emulator allows you to run your app on an Android Virtual Device (AVD), which behaves just like a physical Android device. You can set up numerous AVDs, each emulating a different type of device.

Integrated Development Environment

Android Studio is the official integrated development environment for Google’s Android operating system, built on JetBrains IntelliJ IDEA software and designed specifically for Android development. It is available for download on Windows, macOS and Linux based operating systems. It is a replacement for the Eclipse Android Development Tools as the primary IDE for native Android application development.

Android Apps

Apps are the main way a user interacts with their android device, they are essentially programs that run on Android and are composed of one or more interactive screens.

Android System Apps

System apps are apps the system has recognized as the default apps to perform common tasks like email, texting, camera stuff, etc.

Java API Framework

The Java API Framework is a set of software libraries and utilities essential for Android Development. This is the layer of the stack that developers will be interacting with and includes things like:

  • UI components
  • Resource management
  • Lifecycle management

Android Runtime

Each application runs on its own instance of the Android runtime (ART). ART is a managed runtime that runs application code.

Think of an Android Runtime as an isolated container where each app lives and carries out its processes. It’s kind of like the house where each app lives.

Hardware Abstraction Layer HAL

The hardware abstraction layer (HAL) consists of a number of library modules that manage access to the hardware of an Android device. This hardware includes the camera, audio, Bluetooth connectivity, and various internal sensors. Applications interact with HAL via the Java API framework.

Linux Kernal

The Linux kernel sits at the base of the Android stack. It handles threading, low-level memory management, security, and drivers. Essentially it’s the core brain of the operation. Linux is an operating system that can be run on desktop computers as well as phones. It’s the most complicated and most highly developed part of the Android stack and is the main reason something like Android is able to exist.

Gradle Build Tool

Android applications can consist of hundreds or thousands of files worth of code, video, audio and images. These need to be packed in a way that can be understood by the Android device, which is where Gradle comes in. The Gradle tool in Android studio will package everything together in a compressed file called and APK, which can then be distributed and run on Android devices.

Android Emulator

Android Studio also includes a suite of emulators which developers can use to test their apps. It comes pre-packaged with emulators for many of the most popular Android devices in the world.