Download CS350_Android_OS_Presentation Group 3

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Android OS
Google's Mobile Device
Operating System
Intro & Overview
Steve Mance
Agenda
•
•
•
•
•
•
•
Intro/Overview
Hardware and IO
Kernel
Software Architecture
Programming Languages
Application Framework and Components
Future for mobile and non-mobile platforms
Intro/Overview - What is Android?
• Operating System optimized for Mobile Devices
• Open Source
• Maintained by Google
• Based on the Linux kernel
Intro/Overview - System Overview
Intro/Overview - History
• Android Inc. founded 2003
• Purchased by Google from initial dveloper in 2005
• Version 2.0 released 2009
o Starts to take hold in the Smartphone Market
• Version 3.0 released 2011
o Predominantly used in Tablets
Intro/Overview - Features
• Apps
o The "Programs" of Android
o Composed of application components
• Widgets
o Provide information and tools directly on the Home
Screen
o No need to launch an activity
• Marketplace
o A place for App distribution, run by Google
o Developers can sell their apps or give them away freely
o Third Party distributors also available
Intro/Overview - Marketshare
Intro/Overview - Marketshare
• Late 2009/Early 2010 Android begins it's growth
in the US Smartphone market
• As of Janurary 2011 the Android OS has the highest
marketshare in smartphones in the US
• Now more prevalent than iOS (Apple) and Blackberry
(RIM)
Intro/Overview - Relevant Devices
Phones:
HTC Thunderbolt
Motorola Droid/2/X
HTC Evo
Samsung Nexus S
+Many More
Tablets:
Motorola Xoom
Samsung Galaxy Tab 4G
Dell Streak
Asus Eee-Pad Transformer
+More
Hardware and I/O
Dmitiry Lozovatskiy
Device Requirements
Chipset:
ARM-based (32-bit Advanced reduced instruction set computer
architecture machine). Dalvik VM graphics processing, currently assume an ARM
architecture.
Memory:
in
128 MB RAM; 256 MB Flash External. Android can boot and run
configurations with less memory, but it isn't recommended.
Storage: Mini or Micro SD. Not necessary for basic bring up, but recommended.
Primary Display: QVGA (320×240) TFT LCD or larger, 16-bit color or better.
Touch screen interface no smaller than 2.8 inches in size.
Navigation Keys:
5-way navigation with 5 application keys, power, camera
and volume controls.
Camera: Must have a resolution of at least 2 megapixels, but not required.
USB: Standard mini-B USB . For flashing the device system images and
debugging.
Bluetooth:
1.2 or 2.0, but not required.
Kernel
Geoff Hetherington
About the Android Kernel
• Derived from the Linux 2.6 kernel, with added
enhancements not found in Linux
• Kernel mode and user mode are used the same as in the
Linux kernel
Ashmem
• Anonymous Shared Memory
• Ashmem uses virtual memory
• The kernel is allowed to free this shared memory
• More viable for low memory devices, because it can discard
shared memory units
Pmem
• Process memory allocator
• Similar to ashmem, but uses physically contiguous memory
as opposed to virtual memory
• Manages large, contiguous regions of memory shared
between user space and the kernel drivers
Binder
• A tool for inter-process communication
• Binder driver manages synchronization between processes
• Facilitated using different states
o Receive blocked
o Ready
o Send blocked
o Reply blocked
Logger
• System logging, separate from the Linux kernel’s own
logging system
• Stores logs from applications, events, and the system
• Write path is optimized to avoid overhead from open(),
write(), and close()
Android Power Management
• Wake locks are used to hold the machine awake until a
wake lock is released
• Wake locks issued in user space, handled by kernel
• Power management can shut CPU down if there are no
active wake locks
Multithreading and Multitasking
• Expensive operations are done in a background service
• Slow work is done in a background thread
• Ensure the UI is responsive to the user
• Processes are not killed when the user closes an
application, instead they remain in the background
Removal From Linux Kernel
• Android code removed from Linux kernel as of December,
2009
• Kernel development has been removed from the Linux
kernel tree
• Android kernel includes features that would need to be
integrated into Linux kernel to merge it into main kernel tree
Software Architecture
Raanan Korinow
System Libraries
• libc for C and C++
o Why not glibc?
• libpthread
o not 100% POSIX compliant
• Isn't Android programmed in Java?
• SDK vs NDK
More Libraries
• SSL
• SQLite
• WebKit (and LibWebCore for embeddable webpages)
• Audio Manager
• Media Framework
o MediaPlayer
Graphics Libraries
• Scalable Graphics Library (SGL- for 2D)
• OpenGL for Embedded Devices (for 3D)
• FreeType (vector and bitmap fonts)
• Surface Manager
o Composes 2D and 3D windows, widgets, apps, toolbars
and more using Surface Flinger
o Uses Binder IPC to get buffers from apps to put into
frames
Hardware Abstraction Libraries
• GPS, Radio, Camera, Bluetooth, other I/O
• Hardware drivers must implement in order for applicationss
to use them
• Applications interact with the abstraction libraries, not the
driver
• Promotes variety in hardware without breaking applications
• Gives OS tighter control over devices
Android vs Linux Software Architecture
• No native window library
• Does not support full set of GNU libraries
• Difficult to port Linux applications to Android, but possible if
working within libc constraints
Reboot Bug (2008)
Android allowed a remote device to be controlled over serial
port
If device not attached, phone would execute ALL text input as
shell commands
Typing “reboot” in an email/browser/anywhere would result in
phone rebooting
Architecture and Components at fault! Promptly fixed, but
jeopardized Android’s reputation.
Programming on Android
Jin Kim
Application Development
• Most Android applications written in Java
• However, no Java Virtual Machine in the platform
• Java classes compiled into Dalvik virtual machine
• Dalvik - a specialized virtual machine designed specifically
for Android
Android Software Development Kit
(SDK)
• The SDK includes a comprehensive set of development
tools.
• Includes a debugger, libraries, documentation, sample code
• These tools are accessed through an Eclipse plugin called
ADT (Android Development Tools) or from command line
• Developing with Eclipse is preferred (but not required)
Steps for Developing Applications
1. Install Eclipse or own IDE
2. Install ADT plugin, or an editor of your choice
3. Set up Android Virtual Devices or hardware devices on
which you will install your applications
4. Create an Android project
o Contains all source code and resource files for
your application. Built into an .apk package that you can
install on Android devices.
5. Build and run your application
Steps for Developing Applications
6. Debug your application with the SDK debugging tools
o Involves using a JDWP-compliant debugger along with
the tools provided with Android SDK.
7. Test your application with the Testing and
Instrumentation
framework
o The Android SDK provides a testing and instrumentation
framework to help set up and run tests
Support for Additional Languages
• In 2009, Google announced the Android Native
Development Kit (NDK)
o Allows developers to build Android software components
with C and C++
o
Comes with limitations, however
o
Intended to be used alongside Java to code individual
parts of programs, not as a full alternative
• Google also launched the Android Scripting Environment
(ASE) - allows developers to build apps with Python and Lua
New Language
• July, 2009, Google released language called Simple,
designed specifically for Android apps
• Simple - based on BASIC
• Easy to learn and use language
• Gives both amateur and professional programmers a quick
and easy way to write Android apps
Application Components
Jason Loewy
Android Components
• Four types: Activities Services - Content
Providers - Broadcast
Receivers
• Part of the building blocks
of applications
• Each component type
performs its own unique
action
Component - Activity
• Activities can be thought of
as a single view that
provides a user interface
• Each activity is it's own
entity but all activities work
together to form the
application.
Component - Services
• Services are tasks that run
in the background
• Run on the main process
thread unless otherwise
specified
• Examples include playing
music while using other
applications, handling
network transactions, etc
(Image from http://marakana.com)
Component - Content Provider
• Content Providers allow for
cross application
communication
• Applications must have
necessary permission levels
to communicate
• For example allows
applications to select an
image from the phones
library, select a contacts
info from the contacts list,
etc
Component - Broadcast Receiver
• Broadcast are system wide
notifications
• Broadcast Receivers allow
applications to receive those
notifications and act
accordingly
• For example releasing
allocation memory on a low
memory warning.
Android's Future
Adam LaFave
Growth
Android predicted to grow in market share:
o 38.6% (#2) tablet OSes by 2015
o 48.8% (#1) phone OSes by 2015
Reasons for Growth
• Open Source
o Many handset / tablet makers utilize this free OS (HTC,
Motorola, Samsung)
 Saturates the market with Android hardware on
multiple carriers
o Free to develop on -- no overhead charge for developing
apps (iOS)
• Strong fan base
• Alternative to iOS-based devices
• It's Google
With Great Growth Comes Great Responsibility
Fragmentation
• Different screen sizes, hardware features, user interfaces
and carrier-decided OS updates cause inconsistent Android
experience
• After selling a device, manufacturer has little incentive to
offer updates
Security
• More users = more attractive to malware writers
• "Open" market means it's customer's responsibility to stay
away from malicious software
• Smartphone use in business world poses risk
Mobile Growth Visualized
Merger With Chrome OS
Eric Schmidt (ex-CEO):
o The two efforts [Android and Chrome OS] will ultimately
converge.
o "We're working overtime to get these technologies merged in
the right way."
What does this mean for Android?
Merger With Chrome OS
Chrome OS heavily utilizes the cloud.
o A small hard drive is only needed for the OS itself.
The merger may bring more cloud services to Android, possibly
eliminating the need for internal storage.
o Pictures, songs, videos, etc. may not need to be stored on the
devices themselves -- instead pulled from the cloud when
requested.
References and Resources
http://elinux.org/Android_Kernel_Features
http://cs736-android.pbworks.com/w/page/5834465/ASHMEM
http://elinux.org/Android_Logging_System
http://developer.android.com/index.html
http://developer.android.com/resources/articles/painless-threading.html
http://android-developers.blogspot.com/2010/04/multitasking-android-way.html
http://www.kroah.com/log/linux/android-kernel-problems.html
http://www.silicon.com/technology/software/2011/02/16/android-chrome-os-to-converge-says-googles-eric-schmidt-39746988/
http://www.gartner.com/it/page.jsp?id=1626414
http://www.gartner.com/it/page.jsp?id=1622614
http://www.eweek.com/c/a/Mobile-and-Wireless/Androids-Surging-Popularity-10-Factors-Driving-Its-Growth-485860/
http://www.pcworldme.net/2011/02/20/fragmentation-could-stunt-androids-growth/
http://developer.android.com/guide/basics/what-is-android.html
http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars
http://www.informationweek.com/news/internet/google/218700186