What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali,...

44
What is Android? Mobile Device Application Development COMPSCI 345

Transcript of What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali,...

Page 1: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

What is Android?

Mobile Device Application DevelopmentCOMPSCI 345

Page 2: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is an Operating System

● An interface between users/applications and the hardware. Provides a high-level view of I/O devices. Provides useful abstractions: processes, memory, files...

● Resource allocator Mediates conflicting requests for CPU time and access to

devices (camera, phone, sensors, ...) and other resources.

● Control program Provides environment for safe execution of user applications.

– Prevents processes from reading memory outside their address space or accessing devices without permission.

Page 3: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is an Operating System

● Built on top of Linux (kernel version 3.10.49).

● Linux (written in C) handles: thread management. memory management. power management.

● Android is not (?) a Linux distribution. The kernel was modified for mobile devices. Optimized for minimal memory footprint. Does not include many standard tools and libraries.

Page 4: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Why Linux?

● Hardware manufacturers can develop device drivers for a well-known kernel.

● Security:

A mature open-source kernel in widespread use. Trusted by corporations and security experts. Constantly being researched, attacked, and fixed.

● Application sandbox: Every app runs as a separate Linux process. Actually, all software above the kernel is sandboxed.

Page 5: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Not Just an Operating System

● “Android is an open source, Linux-based software stack created for a wide array of devices and form factors.”

A software stack is a set of software subsystems that comprise a platform for the execution of applications.

Devices: smartphones, tablets, wearables, ...

A form factor prescribes the size, shape, and other physical characteristics of devices.

Mobile phone form factors: bar, flip, slider.

Page 6: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is a Software Stack

Hardware Abstraction LayerHardware Abstraction Layer

Native C/C++Libraries

Native C/C++Libraries

AndroidRuntimeAndroidRuntime

Linux KernelLinux Kernel

Android APIAndroid API

System AppsSystem Apps

Page 7: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is a Software Stack

● Thread management● Memory management● Power management● Drivers

usb wifi audio camera display keypad bluetooth binder (IPC) shared memory

Hardware Abstraction LayerHardware Abstraction Layer

Native C/C++Libraries

Native C/C++Libraries

AndroidRuntimeAndroidRuntime

Linux KernelLinux Kernel

Android APIAndroid API

System AppsSystem Apps

Page 8: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is a Software Stack

Hardware Abstraction LayerHardware Abstraction Layer

Native C/C++Libraries

Native C/C++Libraries

AndroidRuntimeAndroidRuntime

Linux KernelLinux Kernel

Android APIAndroid API

System AppsSystem Apps● Provides standard

interfaces exposing device capabilities to Java API framework.

Audio Sensors Camera Bluetooth

Page 9: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is a Software Stack

Hardware Abstraction LayerHardware Abstraction Layer

Native C/C++Libraries

Native C/C++Libraries

AndroidRuntimeAndroidRuntime

Linux KernelLinux Kernel

Android APIAndroid API

System AppsSystem Apps● Many core system

components run native code requiring libraries written in C or C++.

● Java API Framework exposes some of these libraries to apps.

Libc Webkit Open GL ES OpenMAX AL Media Framework

Page 10: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is a Software Stack

Hardware Abstraction LayerHardware Abstraction Layer

Native C/C++Libraries

Native C/C++Libraries

AndroidRuntimeAndroidRuntime

Linux KernelLinux Kernel

Android APIAndroid API

System AppsSystem Apps● Designed to run

multiple VMs on low-memory devices.

● Runtime libraries that implement most of the core Java API.

Page 11: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android is a Software Stack

Hardware Abstraction LayerHardware Abstraction Layer

Native C/C++Libraries

Native C/C++Libraries

AndroidRuntimeAndroidRuntime

Linux KernelLinux Kernel

Android APIAndroid API

System AppsSystem Apps● The building blocks used

by app developers.

● Java classes for:

UI components

UI layouts Activities Resources Notifications Content providers

Page 12: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

● Stored in the read-only /system/app folder.

Web browser Calendar Camera Dialer Email

Android is a Software Stack

Hardware Abstraction LayerHardware Abstraction Layer

Native C/C++Libraries

Native C/C++Libraries

AndroidRuntimeAndroidRuntime

Linux KernelLinux Kernel

Android APIAndroid API

System AppsSystem Apps

Page 13: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Dalvik Virtual Machine

● VM for executing Android apps.● Optimized for running multiple instances. ● Register-based. Fewer (but more complex) instructions

compared with stack-based VMs (like the JVM).

Linux KernelLinux Kernel

Hardware Abstraction LayerHardware Abstraction Layer

Android RuntimeAndroid Runtime

App A

Dalvik VM

App B

Dalvik VM

App C

Dalvik VM

App D

Dalvik VM

Page 14: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Dalvik Virtual Machine

JavaCompiler

JavaCompiler

SourceCode

SourceCode

ByteCodeByteCode JVMJVM

Page 15: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Dalvik Virtual Machine

DEXCompiler

DEXCompiler

DalvikByteCode

DalvikByteCode

DalvikVM

DalvikVM

JavaCompiler

JavaCompiler

SourceCode

SourceCode

ByteCodeByteCode JVMJVM

Page 16: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android Runtime (ART)

● Successor of Dalvik for improved performance. AOT compiler. Improved garbage collection. More debugging features.

● Runs DEX bytecode for backward compatibility.● History:

Included in 4.4 (KitKat) as alternative runtime. Replaced Dalvik entirely in 5.0 (Lollipop). Added JIT compiler with code profiling in 7.0 (Nougat).

Page 17: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android Development

● In order to write apps, you will need: JDK (SE) 7 or 8 The Android SDK Android Studio

● Apps can be run in the SDK’s emulator or deployed directly to an attached device.

● Some knowledge of XML is needed. app configuration resource management

Page 18: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Using Java

● All features of Java 7 are supported.● Supported features of Java 8:

lambda expressions method references type annotations repeatable annotations (API 24 only) default and static interface methods (API 24 only)

● Google vs. Oracle: can an API be copyrighted?

Page 19: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Other Development Languages

● Kotlin is now an official Android language. Resembles but improves upon Java (safer, more concise) Designed to interoperate with Java. Can use the Java Class Library. Runs on the JVM. Can be compiled to JavaScript source code. Created and developed by JetBrains. Fully supported in Android Studio.

Page 20: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android SDK

● Developer tools compiler debugger emulator ⋮

● Documentation● Sample code and tutorials● Implementation of the Android API

Page 21: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Android Studio

● Google’s official IDE for Android development● Built on top of IntelliJ IDEA (Community Edition)

World-class code editing, debugging, performance tooling, a flexible build system, and an instant build/deploy system all allow you to focus on building unique and high quality apps.

Page 22: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Material Design

● A design philosophy for the look-and-feel of an app that allows for a unified experience across platforms and device sizes.

● Three guiding principles: Material is the metaphor. Bold, graphic, intentional. Motion provides meaning.

Page 23: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Material is the Metaphor

● Inspired by paper and ink.● Grounded in tactile reality.● Surfaces and edges provide visual cues.● Familiar tactile attributes suggest affordances.● Flexibility of material creates new affordances that

supersede laws of physics without breaking them.● Realistic lighting shows seams, divides space, and

indicates moving parts.

Page 24: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Bold, Graphic, Intentional

● Elements of print-based design create hierarchy, meaning, and focus. typography space scale color

● Immerses user in the experience.● Emphasis on user actions makes core functionality

immediately apparent and provides waypoints.

Page 25: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Motion Provides Meaning

● Primary user actions are inflection points that initiate motion, transforming the whole design.

● Objects presented without breaking continuity of experience, even as they transform and reorganize.

● Motion focuses attention and maintains continuity. ● Transitions efficient yet coherent.

Page 26: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

History

2001 Google starts filing for mobile patents.

2005 Google purchases Android, Inc.

2007 Open Handset Alliance

2008 Android 1.0

2009 Android 1.5

2010 Sued by Oracle for copyright/patent infringement.

2011Acquires Motorola and 17,000 patents. Purchases 1023 patents from IBM.

Page 27: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

History

● Google sync: Gmail, Contacts, Calendar

● Standard apps alarm clock, dialer,

launcher, gallery, calculator, settings

● App downloads and updates through Android Market

Version Android 1.0

API Level 1

Release Date 09/23/2008

● Web Browser● WiFi and Bluetooth● Camera● Media Player● Instant messaging● Text messaging● Google Maps with Street View

Page 28: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

History

● Map improvements● Save attachments● Show/hide dial pad

Version Android 1.1

API Level 2

Release Date 02/09/2009

Page 29: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Cupcake

● Widgets● Pictures in contacts

Version Android 1.5

API Level 3

Release Date 04/27/2009

● Video recording/playback● Animated screen transitions● Auto-rotation option

● Upload to YouTube and Picassa● Virtual keyboards with text prediction and user dictionary

Page 30: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Donut

● Text-to-speech engine

Version Android 1.6

API Level 4

Release Date 09/15/2009

● Expanded gesture framework● Multilingual speech synthesis● Integrated camera/gallery

● Select multiple photos for deletion● Enhanced voice and text entry search● View app screenshots in Android Market

Page 31: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Eclair

Version Android 2.0

API Level 5

Release Date 10/26/2009

● Live wallpapers● Multi-touch events● Improved Google Maps● Tap contact photo to call● Many new camera features● Add multiple accounts to a

device for synchronization of email and contacts

Version Android 2.1

API Level 7

Release Date 01/12/2010

Version Android 2.0.1

API Level 6

Release Date 12/03/2009

● Improved typing speed on virtual keyboard with smarter dictionary that uses contact names as suggestions.

Page 32: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Froyo

● USB tethering● File uploads in browser app● JavaScript V8 engine in Chrome● Numeric and alphanumeric passwords● Android Cloud to Device Messaging (C2DM) support

Version Android 2.2

API Level 8

Release Date 05/20/2010

● Adobe Flash support● WiFi hotspot functionality● Support for high PPI displays

Page 33: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Gingerbread

● Support for extra-large screens● Last version to target only phones● Oldest version still used in the wild● Native support for new sensors (gyroscope, barometer, ...)

Version Android 2.3

API Level 9

Release Date 12/06/2010

● Multiple cameras● Native support for VoIP● NFC support, allowing user

to read an NFC tag embedded in poster, sticker, advertisement.

Version Android 2.3.3

API Level 10

Release Date 02/09/2011

Page 34: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Honeycomb

Version Android 3.0

API Level 11

Release Date 02/22/2011

● Optimized for tablets● Holographic UI● Fragments API● Action bar● System bar● USB On-The-Go● Encrypt user data● External keyboards

Version Android 3.1

API Level 12

Release Date 05/10/2011

Version Android 3.2

API Level 13

Release Date 07/15/2011

Page 35: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Ice Cream Sandwich

● Unified SDK for both tablets and phones● Improved Holographic UI with Roboto font family● Improved camera app with zero shutter lag, time lapse

settings, panorama mode, ability to zoom while recording

Version Android 4.0

API Level 14

Release Date 10/18/2011

● Photo editor● Face Unlock● Customizable launcher● Improved voice integrationVersion Android 4.0.3

API Level 15

Release Date 12/16/2011

Page 36: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Jelly Bean

Version Android 4.1

API Level 16

Release Date 07/09/2012

● Smoother UI● Multichannel audio● Camera improvements● Expandable notifications● Lock screen improvements● Multi-user support on tablets● RTL languages supported● Open GL ES 3.0 support

Version Android 4.2

API Level 17

Release Date 11/13/2012

Version Android 4.3

API Level 18

Release Date 07/24/2013

Page 37: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

KitKat

● Wearable extensions● Wireless printing● Android Runtime (experimental)● New framework for UI transitions

Version Android 4.4

API Level 19

Release Date 10/31/2013

● NFC host card emulation, enabling device to replace smart cards

● Storage Access Framework● UI updates for Google Maps

Version Android 4.4W

API Level 20

Release Date 06/25/2014

Page 38: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Lollipop

● Support for 64-bit CPUs● Open GL ES 3.1 on supported GPU configurations● 15 new languages: Basque, Bengali, Burmese, Chinese

(Hong Kong), Icelandic, Kannada, Kyrgyz, Macedonian, Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu

Version Android 5.0

API Level 21

Release Date 11/12/2014

● ART● Tap and Go● Project Volta● Flashlight app● Material Design

Version Android 5.1

API Level 22

Release Date 03/09/2015

Page 39: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Marshmallow

● Doze mode● Native fingerprint reader support● MIDI support for musical instruments● App permissions now granted at runtime● Automatic full backup and restore for apps● Contextual support from keywords within apps

Version Android 6.0

API Level 23

Release Date 10/05/2015

Page 40: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Nougat

● Daydream virtual reality platform● Picture-in-picture support for Android TV● New JIT compiler with code profiling to ART● Another system partition for seamless system updates

Version Android 7.0

API Level 24

Release Date 08/22/2016

● Ability to screen zoom● Multi-window support● Vulcan 3D rendering API● Unicode 9.0 emoji support

Version Android 7.1

API Level 25

Release Date 10/04/2016

Page 41: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Oreo

● Neural networks API● Shared memory API● Faster boot time● Notification improvements

Version Android 8.0

API Level 26

Release Date 03/21/2017

● Redesigned architecture makes it easier and faster for hardware makers to deliver Android updates.

● Adaptive icons● Multi-display support

Version Android 8.1

API Level 27

Release Date 12/5/2017

Page 42: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Pie

● New UI for quick settings menu.

● Screenshot button added to power options.

● New gesture-based navigation options.

Version Android 9.0

API Level 26

Release Date 08/06/2018

● Android Dashboard Tells how much time user

spends on device and with particular apps.

Allows user to set time limits on apps.

Page 43: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Usage (October 2018)

Version Share

Oreo 22%Nougat 28%

Marshmallow 21%Lollipop 18%KitKat 8%

Jelly Bean 3%

Page 44: What is Android? - facstaff.bloomu.edu · meaning, and focus. ... Malayalam, Marathi, Nepali, Sinhala, Tamil, and Telugu Version Android 5.0 API Level 21 Release Date 11/12/2014 ART

Popularity

● 1,000,000 new users every day (2017)

● 1,000,000,000 active users daily (2017)

● 2,000,000,000 active users monthly (2017)

● 85% of global smartphone market share (2018)

● Largest installed base of any mobile platform