Mobile Application Development
Mobile Application Development
Mobile Application Development
Def: Mobile application development refers to the creation of software applications tailored for
mobile devices such as smartphones, tablets, and wearable gadgets.
Process: It includes planning, designing, coding, testing, deploying, and maintaining apps.
Key steps include researching the app's purpose, choosing a development approach (native, cross-
platform, or web-based), designing the user interface, coding, testing for bugs and performance,
deploying to app stores, ongoing maintenance, and optimizing for better user experience.
Milestones:
Cupcake (1.5), Froyo (2.2), Honeycomb (3.0), Jelly Bean (4.1), Lollipop (5.0), Marshmallow (6.0), Nougat
(7.0), Oreo (8.0), Pie (9.0), Android 10, 11, and 12.
Current Status: Android remains an open-source platform, powering a diverse range of devices globally,
with regular updates and advancements.
Waqas Blouch
3. Data Storage:
Data storage involves managing and storing information required by the software. This includes
databases, files, or any other form of data storage systems. It ensures the persistence and
retrieval of data necessary for the application to function correctly.
4. Libraries and Frameworks:
Libraries and frameworks consist of pre-written code or sets of tools that developers use to
simplify and expedite the development process. They provide reusable functions, modules, and
APIs (Application Programming Interfaces) that help in performing specific tasks without starting
from scratch.
5. APIs (Application Programming Interfaces):
APIs enable different software components or systems to communicate and interact with each
other. They define how different software elements should interact, allowing for integration
between different applications or services.
6. Error Handling and Logging:
Error handling mechanisms detect, manage, and report errors or exceptions that occur during
software execution. Logging involves recording relevant events or activities within the software
for debugging, monitoring, and auditing purposes.
7. Security Components:
Security measures like encryption, authentication, and authorization mechanisms safeguard the
software and its data from unauthorized access, breaches, and malicious attacks.
3. Cross-Platform Frameworks
Description: These frameworks allow developers to build applications that can run on multiple
platforms (iOS, Android, and sometimes others) using a single codebase.
Examples:
React Native: Uses JavaScript and React to build native-like apps.
Flutter: Google's UI toolkit for building natively compiled applications for mobile, web, and
desktop from a single codebase.
Xamarin: Uses C# and .NET to create apps for iOS, Android, and Windows.
Waqas Blouch
Advantages: Code reusability, faster development, cost-effectiveness for multi-platform apps.
4. Progressive Web Apps (PWAs)
Description: Web applications that leverage modern web technologies to provide an app-like
experience on web browsers.
Development Tools: Web technologies (HTML, CSS, JavaScript).
Advantages: Cross-platform compatibility, no installation required, discoverable through search
engines.
5. Other Platforms
Unity (for Games): Widely used for creating mobile games across various platforms.
PhoneGap/Cordova: Allows building mobile apps using web technologies (HTML, CSS,
JavaScript).
Waqas Blouch
• App Ecosystem: The App Store offers a curated selection of high-quality applications that have
undergone stringent review processes, ensuring a certain level of quality and security.
• Privacy and Security: iOS is renowned for its robust security measures and strict privacy
guidelines, giving users more control over their data and app permissions.
• Updates and Compatibility: Apple regularly releases iOS updates that are widely available
across compatible devices, ensuring long-term software support for older devices.
• Siri and Ecosystem Integration: Siri, Apple's voice assistant, integrates with various apps and
services within the Apple ecosystem, providing users with seamless interactions and control.
Description: Android Jetpack is a suite of libraries, tools, and guidance provided by Google to help
developers build high-quality Android apps more efficiently.
Components: Jetpack includes various components such as ViewModel, LiveData, Room, Navigation,
WorkManager, Paging, etc., offering solutions for common challenges in Android development.
Description: Android KTX is a set of Kotlin extensions that optimize and simplify Android development
using Kotlin programming language.
Benefits: It provides concise and idiomatic Kotlin code by leveraging Kotlin's language features, making
Android development more expressive and enjoyable.
3. AndroidX Libraries:
Purpose: These libraries replace the older support libraries, offering modern APIs and features for
Android app development.
Description: Android Animation API allows developers to create smooth and fluid animations in their
applications.
Functionality: It provides classes and interfaces to perform various animations like property animations,
view animations, transitions, and vector drawable animations.
Description: Android offers networking libraries like Volley and Retrofit for handling network requests
and interactions in applications.
Waqas Blouch
Usage: These libraries simplify tasks related to making HTTP requests, managing responses, and
handling data serialization/deserialization.
Description: Android provides testing support libraries such as Espresso and JUnit for writing and
executing unit tests, integration tests, and UI tests.
Purpose: These libraries aid in testing app functionalities, ensuring app stability and reliability.
Description: Room is an Android architecture component that provides an abstraction layer over SQLite,
allowing developers to work with a SQLite database more easily.
Functionality: It simplifies database operations, provides compile-time SQL validation, and offers
LiveData integration for reactive UI updates.
Def: The Android Application Framework is a set of software components provided by the Android
operating system to enable developers to create applications for Android devices. It consists of various
layers and components that work together to facilitate app development and execution.
1. Applications Layer:
App Components: Activities, Services, Broadcast Receivers, and Content Providers are the primary app
components used to build Android applications.
UI Components: Views, Layouts, Fragments, and Notifications facilitate the creation of user interfaces.
Execution Environment: ART is the runtime environment responsible for executing and managing
Android applications.
Ahead-of-Time Compilation: ART uses ahead-of-time compilation (AOT) to convert app bytecode into
machine code for improved performance.
3. Libraries:
Core Libraries: These libraries provide essential functionalities such as data structure handling, utilities,
file access, and more for app development.
Android Support Libraries: Formerly used for backward compatibility, these have been replaced by
AndroidX, providing modern components and support for older Android versions.
4. Android APIs:
Framework APIs: A set of APIs provided by Android for various functionalities, including graphics
rendering, media playback, connectivity, location services, and more.
Waqas Blouch
Development APIs: These APIs facilitate interactions with device hardware, sensors, camera, Bluetooth,
NFC, and other features.
5. Android Manifest:
Configuration File: The AndroidManifest.xml file contains essential information about the app, including
permissions required, components used, app structure, and other metadata.
Interpreter and Compiler: DVM/ART is responsible for running app bytecode, translating it into machine
code, and managing memory and resources efficiently.
7. Intent Framework:
8. Resources Manager:
Resource Handling: Manages app resources such as strings, layouts, images, and other assets,
supporting localization and providing access to device-specific resources.
9. Security Architecture:
Security Layers: Android's security architecture includes permissions, sandboxing, application signing,
encryption, and secure inter-process communication to protect user data and ensure app security.
Android Architecture
:-The Android operating system has a layered architecture that provides a structured framework for
building mobile applications. The Android architecture comprises several layers that interact with each
other to deliver a comprehensive environment for app development and execution.
Foundation: The Linux Kernel forms the core of the Android operating system, providing core system
functionalities such as device drivers, memory management, process management, and security
features.
Abstraction: HAL provides a standardized interface between the hardware components (e.g., camera,
sensors, display) and the higher-level Android software stack. It abstracts hardware-specific
implementations, ensuring uniform access to device features across different hardware configurations.
C/C++ Libraries: These include various libraries like Surface Manager, Media Libraries, SQLite, WebKit,
and others, providing essential functionalities for the Android system and native code support for
applications.
Waqas Blouch
4. Android Runtime (ART):
Execution Environment: ART (Android Runtime) or previously Dalvik Virtual Machine (DVM) is
responsible for running Android applications. It executes app bytecode, manages memory, and provides
a sandboxed environment for app execution.
Java-Based Framework: The Java API Framework includes various core Java libraries and Android-specific
Java APIs. It offers developers a rich set of classes and methods for building Android applications,
handling UI, data storage, connectivity, multimedia, and more.
6. System Services:
Background Services: System services are background processes that run independently, providing
various functionalities like managing network connections, handling notifications, managing alarms, and
performing system-level tasks.
7. Application Framework:
App Development Framework: The Application Framework layer includes key building blocks for
developing Android applications. It provides high-level abstractions and components like Activity
Manager, Content Providers, Views, Intents, etc., aiding in app development and management.
8. Applications Layer:
User-Facing Apps: This top layer consists of user-facing applications developed using the Android SDK.
These apps leverage the underlying layers and frameworks to provide diverse functionalities and
interact with users through the user interface.
Key Points:
Important Terminologies
Process
Waqas Blouch
Definition: In computing, a process refers to an executing instance of a program that contains the
program's code, data, and resources while it's running. It represents a unit of work managed by the
operating system.
Characteristics:
Independent Execution: Each process runs independently and isolated from other processes.
Resource Allocation: Processes have their memory space, file handles, and other system resources
allocated by the operating system.
Context Switching: The OS manages processes by allowing them to execute for a period, then switching
to another process, maintaining their state for resumption later.
Thread
Definition: A thread is a basic unit of CPU utilization within a process. It's a lightweight process and
represents a single sequence of execution within a process.
Characteristics:
Within Process Context: Threads exist within a process, sharing the process's resources like memory,
but each has its stack and instruction pointer.
Concurrent Execution: Multiple threads within a process can run concurrently, performing different
tasks simultaneously.
Less Overhead: Threads share resources, which incurs less overhead compared to separate processes.
Paging
Definition: Paging is a memory management scheme used by operating systems to store and retrieve
data from secondary storage (like hard disks) in smaller fixed-size units called pages.
Characteristics:
Memory Segmentation: It divides the virtual memory used by processes into fixed-size pages, making
memory management more efficient.
Page Table: The operating system maintains a page table that maps these virtual pages to physical
memory locations.
Demand Paging: Not all pages are loaded into RAM at once; instead, pages are brought into memory
only when they are needed, reducing memory wastage.
Segmentation
Segmentation divides memory into variable-sized segments for flexible organization, protection, and
sharing among different parts of a program.
Memory Management
Waqas Blouch
Memory management involves allocating, deallocating, and organizing computer memory efficiently to
optimize resource utilization, ensure system stability, and enhance security.
Application Frameworks
Application frameworks, in the context of software development, refer to a structured and reusable
foundation that provides a set of pre-built components, tools, and guidelines to facilitate the
development of software applications. These frameworks offer a structured approach, libraries, and
functionalities that developers can use as a starting point or template for creating specific types of
applications.
Waqas Blouch
WPF (Windows Presentation Foundation): For building Windows desktop applications using
.NET framework.
Components of Application
An application component refers to a specific building block or essential unit within an application that
performs a distinct function. These components are essential for organizing and structuring the
application's behavior, defining its functionality, and facilitating communication between different parts
of the application.
1. Activities:
An Activity represents a single screen with a user interface. It is a crucial component that interacts with
the user, handling user interactions and displaying UI elements such as buttons, text fields, etc. Each
Activity serves as an entry point into the application's functionality.
2. Services:
Services are background processes that run without a user interface. They handle long-running
operations or perform tasks in the background, such as playing music, handling network transactions, or
processing data, even when the user switches to another app or the device is in a different state.
3. Broadcast Receivers:
Broadcast Receivers are components that respond to system-wide broadcast announcements, such as
notifications, battery status changes, or incoming SMS messages. They allow the application to receive
and react to these broadcasts, triggering appropriate actions.
4. Content Providers:
Content Providers manage a shared set of application data that can be accessed and shared among
different applications. They allow data to be stored, retrieved, and shared securely between different
apps or components within the same app.
Waqas Blouch
Difference between Computer OS and Mobile OS
Waqas Blouch
Which Tech is better between Flutter and Java.
Flutter:
Pros:
Cons:
Java:
Pros:
Cons:
Waqas Blouch
Waqas Blouch
Waqas Blouch
Waqas Blouch