Ch 1: Android Overview Flashcards

1
Q

Android

Background

A
  • Launched in 2007
  • Serves wide range of hardware, not just mobile phones
  • Features an open software stack
  • Rich set of API Libraries
    • System Applications, Bundled Applications and third party Applications are all written using the same APIs
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Android API Libraries:

Common Features supported

A
  • Hardware Access, including sensors
  • Video Recording
  • NFC
  • Bluetooth
  • Maps
  • Location Based Services
  • Inter-application communication
  • Background Service support
  • Relational Databases
  • 2D/3D Graphics
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Motivation for Android:

Rough History of Phone Apps

A
  • Early native phone applications were generally coded in C or C++
    • Required thorough understanding of hardware on individual devices or device families
    • Caused app development to lag behind hardware development
  • Eventually, Java-Hosted MIDlets were introduced
    • Added abstraction to make development easier
    • Still restricted and unbalanced access to hardware
  • Android OS designed as an Open Development Platform
    • Equal and open dev access
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Motivation for Android:

MIDlets

A

Java Hosted MIDlets

  • Executed on a Java Virtual Machine (JVM)
  • Abstracted underlying hardware
  • Allowed developers to create applications that ran on many devices that supported the Java run time
  • Came at the price of heavily restricted access to the device hardware
  • Hardware access was also uneven, with native applications having more access than third party developers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Three Major Components

of the

Android Ecosystem

A
  • Operating System
    • Free and Open Source OS for embedded devices
  • Development Platform
    • Open Source
  • Devices
    • Devices that run the Android OS and the applications created for it
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Android Ecosystem:

Specific Parts

A
  • Compatibility Definition Document
  • Compatibility Test Suite
  • Linux operating system Kernel
  • Android Run Time (ART)
  • Core pre-installed applications
  • Application Framework
  • User Interface Framework
  • Open Source Libraries
  • Software Development Kit(SDK)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Android Ecosystem:

Compatibility Definition Document (CDD)

and

Compatibility Test Suite(CTS)

A

Together, the CDD and CTS describe the capabilities required for a device to support the

Android Software Stack

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Android Ecosystem:

Linux Kernel

A

A Linux operating system kernel provides a low-level interface with:

  • hardware
  • memory management
  • process control

All optimized for mobile and embedded devices

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Android Ecosystem:

Open Source Libraries

A

Open source libraries are available to aid in application development.

Includes:

  • SQLite
  • WebKit
  • OpenGL
  • a media manager
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Android Ecosystem:

Android Run Time (ART)

A

Used to execute and host Android applications and the core libraries that provide Android-specific functionality.

Designed to be small and efficient for use on embedded devices.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Android Ecosystem:

Application Framework

A

Agnostically( not knowing about the device) exposes system services to the application layer.

These services include:

  • Window Manager
  • Location Manager
  • databases
  • telephony
  • sensors
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Android Ecosystem:

User Interface Framework

A

A framework that is used to host and launch applications. Essentially defines how applications are handled by the system and presented to users.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Android Ecosystem:

Preinstalled Applications

A

Android devices come with a suite of applications that are expected by users. On a phone:

  • Phone dialer
  • SMS management app
  • Web Browser
  • Email client
  • Calendar
  • Contacts List
  • Music Player
  • Picture gallery
  • Camera and video recording app
  • Calculator
  • Home screen
  • Alarm Clock

Many Android devices also ship with proprietary Google applications

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Android SDK:

Major Features supported by

SDK libraries

A
  • Telephony and Internet:
    • GSM, EDGE, 3G, 4G, LTE, Wi-Fi
  • APIs for location based services
    • Both GPS and network-based
    • Map integration
  • Full multimedia hardware control
    • Playback and recording with microphone and camera
  • Media Libraries
  • Sensor APIs
    • Accelerometer
    • Compass
    • Barometer
    • Fingerprint sensors
  • Libraries for Wifi, Bluetooth, NFC hardware
  • Shared data stores and APIs for contacts, calendar and multi-media
  • Background services
  • Advanced Notification System
  • Integrated web browser
  • Graphics support
  • Localization through a dynamic resource framework
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Benefits of developing for Android

A
  • Access to largest ecosystem of smart phone users
    • Diverse range of devices and form factors
  • Simple and powerful SDK
  • No licensing fees
  • Excellent documentation
  • Low Barrier to entry
    • No required certification
    • Google Play store provides many monetization options
    • No approval process for app distribution
  • Developers have total control over their brands
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Programming Languages

used for Android

A
  • Java
    • Primary language of Android
  • Kotlin
    • Full support introduced in Android Studio 3.0
    • JVM language
    • Interoperable with existing Android languages and the Android Run Time

Java and Kotlin syntax can be used within the same applications

17
Q

Android Development Framework:

Major Parts

A

Android Run Time (ART)

Android SDK

(Also Android NDK)

Android Software Stack

Android Application Architecture

18
Q

Android Development Framework:

Android Run Time( ART)

A
  • Executes and manages all Android applications
  • Each application runs in a separate process
  • Similar to Java Virtual Machine, but is it’s own runt time designed for efficiency
  • ART stops and kills processes as necessary to manage resources
  • Handles all responsibility of memory and process management
  • Sits on top of a Linux kernel, which handles low-level hardware interaction
    • Drivers
    • Memory management
  • Provides a set of APIs that give applications access to underlying services, features and hardware
19
Q

Android Development Framework:

Android SDK

Major Features

(What is included “in the box”)

A
  • Android API Libraries
  • Development Tools
  • Android Emulator
    • Runs an Android Virtual Device
  • Full Documentation
  • Sample Code
  • Online Support
20
Q

Android Development Framework:

Android SDK

Android Emulator

A

A fully interactive mobile device emulator featuring several alternative skins.

  • Runs within an Android Virtual Device(AVD)
    • Simulates a device hardware configuration
  • Allows you to see how an application will look and behave on a real Android device.
  • Hardware-neutral, making it a better independent test environment than any single hardware implementation
21
Q

Android Development Framework:

Android Software Stack:

What it is

A

A Linux kernel and a collection of C/C++ libraries,

exposed through an application framework that provides services for, and management of, the run time and applications.

22
Q

Android Development Framework:

Android Software Stack:

Layers

A
  • Application Layer
  • Support/Compatibility/Proprietary Libraries
  • Application Framework
  • Native(C/C++) Libraries
  • Android Run Time
  • Hardware Abstraction Layer(HAL)
  • Linux Kernel
23
Q

Android Development Framework:

Android Software Stack:

Support/Compatibility/Proprietary Libraries

Components

A
  • Android Support Library
  • Google Play Services
  • Firebase
24
Q

Android Development Framework:

Android Software Stack:

Application Framework

Components

A
  • Views
  • Activity Manager
  • Fragment Manager
  • Window Manager
  • Resource Manager
  • Notification Manager
  • Content Providers
  • Telephony Manager
  • Package Manager
  • Location Manager
25
Q

Android Development Framework:

Android Software Stack:

Native (C/C++) Libraries:

Components

A
  • Media
  • libc
  • Graphics (OpenGL, …)
  • SQLite
  • SSL & Webkit
  • many more
26
Q

Android Development Framework:

Android Software Stack:

Android Runtime

Components

A
  • Android Run Time (ART)
  • Android Core Libraries
27
Q

Android Development Framework:

Android Software Stack:

Hardware Abstraction Layer(HAL)

Components

A
  • Audio
  • Bluetooth
  • Camera
  • Media
  • Storage
  • Peripherals
  • Sensors
  • TV
  • DRM
  • Automotive
28
Q

Android Development Framework:

Android Software Stack:

Linux Kernel:

Components/Tasks

A
  • Hardware Drivers
  • Process Management
  • Memory Management
  • Binder( IPC )
  • Security
  • Power Management
29
Q

Android Development Framework:

Android Software Stack:

Linux Kernel

Summary

A

Provides core services,

(including hardware drivers, process and memory management, security, network and power management)

The specific kernel version depends on the Android platform version and hardware platform.

30
Q

Android Development Framework:

Android Software Stack:

Hardware Abstraction Layer( HAL )

Summary

A

The HAL provides an abstraction layer between the underlying physical device hardware and the remainder of the stack.

(It can let you do that, Dave.)

31
Q

Android Development Framework:

Android Software Stack:

Native C/C++ Libraries

Summary

A

Run on top of the kernel and HAL.

Includes various common C/C++ libraries such as libc and SSL, as well as:

  • A media library for playback of audio/video
  • A surface manager to provide display management
  • Graphics libraries, including SGL and OpenGL for 2D and 3D graphics
  • SQLite for native database support
  • SSL and WebKit for integrated web browser and Internet security
32
Q

Android Development Framework:

Android Software Stack:

Application Framework

Summary

A

Provides the classes used to create Android applications.

Also provides a generic abstraction for hardware access and manages the User Interface and Application resources.

33
Q

Android Development Framework:

Android Software Stack:

Application Layer

Summary

A

All applications, both native and third party, are built on the application layer by means of the same API libraries.

Runs within the Android Run Time,

using the classes and services made available from the Application Framework

34
Q

Android Run Time:

Dalvik files

A

The ART executes Dalvik executable files, with the extension ( .dex )

  • Named after an early virtual machine implementation called “Dalvik”
  • Format is optimized to ensure minimal memory footprint
  • .dex files are created by transforming Java or Kotlin language compiled classes using tools supplied within the SDK
35
Q

Android Development Framework:

Android Application Architecture

Summary

A

The Application Architecture encourages component reuse,

enabling you to publish and share Activities, Services and data with other applications, with access managed by security restrictions.

Defines several classes, managers and mechanisms that form the cornerstones of all Android Applications

36
Q

Android Development Framework:

Android Application Architecture

Cornerstones

A
  • Activity Manager and Fragment Manager
    • Activities and Fragments define the user interface
    • The managers control the lifecycle of Activities and Fragments, including the Activity Stack
  • Views
    • Used to construct user interface controls
  • Notification Manager
  • Content Providers
  • Resource Manager
  • Intents
    • Mechanism for transferring data between applications and their components