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.
System apps are apps the system has recognized as the default apps to perform common tasks like email, texting, camera operation, etc.
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:
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.
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.
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.
XML stands for Extensible Markup Language and is a markup language (not a programming language). Essentially it’s a format for encoding data in a hierarchical (tree like) manner, and is intended to be readable by both humans and computers.
An XML document is composed of a series of Elements that are organized in a hierarchical fashion through the use of Tags. A tag is a special syntax that indicates where an element should be placed in a document.
Container tags actually consist of two separate tags, a start tag, and an end tag. Each individual tag starts and ends with less than and greater than signs and has the name of the Element in the middle. End tags are differentiated with a forward slash at the beginning of the element name.
Container tags can have other tags nested inside of them, which results in a tree-like structure of elements nested inside one another.
<element1><element2></element2></element1>
Single tags, unlike container tags are self closing, meaning we only have one tag. These look similar to start tags but have a forward slash after the Element name.
<element />
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 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.