# Android Development Fundmentals I

Android is a mobile operating system based on a modified version of the Linux kernel and other open-source software, designed primarily for touchscreen mobile devices such as smartphones and tablets.

**Languages :**

Android apps can be written using Kotlin, the Java programming language, and C++ languages. The Android SDK tools compile your code along with any data and resource files into an APK or an Android App Bundle.

**Kotlin** is an **Android-compatible** language that is **concise**, **expressive**, and designed to be t**ype-** and **null**\-**safe**. It works with the **Java** language seamlessly, so it makes it easy for developers who love the Java language to keep using it but also incrementally add Kotlin code and leverage Kotlin librarie

#### **Android App Bundle (.aab) vs Android Package(.apk)**

**An *Android package***, which is an archive file with an `.apk` suffix, contains the contents of an Android app required at runtime, and it is the file that Android-powered devices use to install the app.

**An Android App Bundle**, which is an archive file with an `.aab` suffix, contains the contents of an Android app project, including some additional metadata that isn't required at runtime. An AAB is a publishing format and **can't be installed on Android devices.**

#### **Android App Components**

*   **Activities**
*   **Services**
*   **Broadcast receivers**
*   **Content providers**

every component has it’s own context. as android developer remember this context you will face much more .

**\> Activities**

An ***activity*** is the entry point for interacting with the user. It represents a single screen with a user interface

**\> Services**

A ***service*** is a general-purpose entry point for keeping an app running in the background for all kinds of reasons. It is a component that runs in the background to perform long-running operations or to perform work for remote processes. A service does not provide a user interfac

**\> Broadcast receivers**

A ***broadcast receiver*** is a component that lets the system deliver events to the app outside of a regular user flow so the app can respond to system-wide broadcast announcements. Because broadcast receivers are another well-defined entry into the app, the system can deliver broadcasts even to apps that aren’t currently running.

**\> Content providers**

A ***content provider*** manages a shared set of **app data** that you can store in the **file system**, in a **SQLite** database, on the web, or on any other persistent storage location that your app can access. **Through the content provider, other apps can query or modify the data**, if the content provider permits it.

you can activate or access to components using **Intent ,** You can think of them as the **messengers** that request an action from other **components**

you can use this intent to navigate to another activities or starting services

### Manifest File :

App declares all its components in this file, which is at the root of the app project directory.

all permissions included in this file

in the next article we will discuss project structure.

references:

[fundamentals](https://developer.android.com/guide/components/fundamentals)

[Android\_software\_development](https://en.wikipedia.org/wiki/Android_software_development#:~:text=Android%20software%20development%20is%20the,other%20languages%20is%20also%20possible.)
