overview of cs 282 & androidschmidt/cs282/pdfs/androidovervie… · assignments written in java...
TRANSCRIPT
![Page 1: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/1.jpg)
Overview of CS 282 & Android
Douglas C. Schmidt [email protected]
www.dre.vanderbilt.edu/~schmidt
Institute for Software Integrated Systems
Vanderbilt University Nashville, Tennessee, USA
CS 282 Principles of Operating Systems II Systems Programming for Android
![Page 2: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/2.jpg)
Overview of CS 282 and Android D. C. Schmidt
2
Topics Covered in this Part of the Module • Course goals & logistics
![Page 3: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/3.jpg)
Overview of CS 282 and Android D. C. Schmidt
3
Topics Covered in this Part of the Module • Course goals & logistics
• Present an overview of the Android software architecture
![Page 4: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/4.jpg)
Overview of CS 282 and Android D. C. Schmidt
4
Course Goals • Learn about
• Mobile devices
• Systems programming for mobile devices
• The Android platform
• Develop interesting Android systems programming applications
• Expect lots of programming
• Each student will do multiple projects
• There may also be a group project at the end
![Page 5: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/5.jpg)
Overview of CS 282 and Android D. C. Schmidt
5
Administrivia
![Page 6: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/6.jpg)
Overview of CS 282 and Android D. C. Schmidt
6
Logistics • Douglas C. Schmidt
• [email protected] • Office: FGH #226 • Office hours: M. 1-3pm & W. 1-3pm
• Nearly always reachable by email • TAs/graders
• Nick King <[email protected]> • Nolan Smith <[email protected]> • Lane Kelly <[email protected]>
• Course URL: www.dre.vanderbilt.edu/~schmidt/cs282
![Page 7: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/7.jpg)
Overview of CS 282 and Android D. C. Schmidt
7 7
Course Work • There will be 5-6 programming
assignments written in Java • Can use Windows, Linux, Mac, etc.
• Must be done individually • Programs will be graded as follows:
• 40% execution correctness • 30% structure (e.g., modularization,
information hiding, etc.) • 10% insightful programming (e.g.,
developing reusable class components, etc.)
• 10% Consistent style (e.g., capitalization, indenting, etc.)
• 10% appropriate commenting style
![Page 8: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/8.jpg)
Overview of CS 282 and Android D. C. Schmidt
8 8
Course Work • There will be a 5 point deduction
(out of a possible 100 points) for each day that your program is late • Programs turned in later than
two calendar days after the due date will receive a zero
• There will be weekly quizzes & a comprehensive final exam
• The relative weighting of each portion of the course is : • 40% Programming projects • 40% Quizzes • 10% Final Exam • 10% Class participation
![Page 9: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/9.jpg)
Overview of CS 282 and Android D. C. Schmidt
9 9
Ground Rules • Assignments must be submitted on time
• Work must be your own (see www.owen. vanderbilt.edu/vanderbilt/about-us/ honor-code.cfm)
• No laptops open in class unless explicitly allowed
• You will be called upon to answer questions
• 10% class participation grade, so be involved & attend class
• You’ll get out of this course what you put into it, so be prepared to work hard & learn a lot
• Be prepared for weekly quizzes & occasional guest lectures
• Make sure to avail yourself of available help, e.g., office hours, TAs, mailing list, etc.
![Page 10: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/10.jpg)
Overview of CS 282 and Android D. C. Schmidt
10
Class Organization
• Mix of lecture & programming exercises
• ½ presentation
• ½ laboratory exercises & semester project
• Organization will remain flexible
• Will change as needed
![Page 11: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/11.jpg)
Overview of CS 282 and Android D. C. Schmidt
11
Why Mobile Devices & Android?
![Page 12: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/12.jpg)
Overview of CS 282 and Android D. C. Schmidt
12
Mobile Devices are the Next Computing Platform
![Page 13: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/13.jpg)
Overview of CS 282 and Android D. C. Schmidt
13
Why Android?
• Android has > 50% of the smartphone market (#1)
• iPhone has < 30% of the smartphone market (#2)
• Blackberry, Windows Mobile, & etc. are rapidly losing market share since their platforms not nearly as interesting to develop for as Android/iPhone
![Page 14: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/14.jpg)
Overview of CS 282 and Android D. C. Schmidt
14
Android is:
• the fastest growing smartphone platform
• open-source & works on multiple platforms
• no need to own a Mac
• no need to join a developer program
• Easy to learn for Java (& C++) programmers
• Much easier to transition to than Objective-C
Why Android?
![Page 15: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/15.jpg)
Overview of CS 282 and Android D. C. Schmidt
15
Getting Started with Android
![Page 16: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/16.jpg)
Overview of CS 282 and Android D. C. Schmidt
16
Developing Android Apps • Android is a software stack for mobile devices that provides an operating
system, middleware, & key services/applications • The Android SDK contains libraries &
development tools for creating applications
![Page 17: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/17.jpg)
Overview of CS 282 and Android D. C. Schmidt
17
Developing Android Apps • Android is a software stack for mobile devices that provides an operating
system, middleware, & key services/applications • Android uses the Eclipse Integrated
Development Environment (IDE)
![Page 18: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/18.jpg)
Overview of CS 282 and Android D. C. Schmidt
18
Developing Android Apps • Android is a software stack for mobile devices that provides an operating
system, middleware, & key services/applications • Android uses the Eclipse Integrated
Development Environment (IDE) • Android Eclipse Plugins provide:
• wizards for creating new apps • a visual editor for creating GUIs • editors for manipulating Android
XML descriptors needed for your app
• an emulator for testing your apps on your PC
• a debugger for finding errors in the emulator or on a device
![Page 19: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/19.jpg)
Overview of CS 282 and Android D. C. Schmidt
19
Developing Android Apps • Android is a software stack for mobile devices that provides an operating
system, middleware, & key services/applications • The Android SDK contains libraries &
development tools for creating applications • Android uses the Eclipse Integrated
Development Environment (IDE) • Android Eclipse Plugins provide:
• wizards for creating new apps • a visual editor for creating GUIs • editors for manipulating Android XML
descriptors needed for your app • an emulator for testing your apps on
your PC • a debugger for finding errors in the
emulator or on a device
![Page 20: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/20.jpg)
Overview of CS 282 and Android D. C. Schmidt
20
• Follow the instructions for Lab1 at http://www.dre.vanderbilt.edu/~schmidt/cs282/Lab1.pdf
Setting Up an Android Development Environment
![Page 21: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/21.jpg)
Overview of CS 282 and Android D. C. Schmidt
21
Figuring Out Android • Android is well documented • The Android javadoc references will be critical
reference material for your projects: • http://developer.android.com/reference/packag
es.html • The Android developer guide is another important
resource: • http://developer.android.com/guide/
components • We recommend “The Busy Coder’s Guide to
Android Development” e-book • http://commonsware.com/warescription
![Page 22: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/22.jpg)
Overview of CS 282 and Android D. C. Schmidt
22
Overview of Android
![Page 23: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/23.jpg)
Overview of CS 282 and Android D. C. Schmidt
23
What is Android? • Android provides a layered software stack for mobile devices, including
• A variant of the Linux OS optimized for power conservation & local IPC
C
![Page 24: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/24.jpg)
Overview of CS 282 and Android D. C. Schmidt
24
What is Android? • Android provides a layered software stack for mobile devices, including
• A variant of the Linux OS optimized for power conservation & local IPC • An optimized Java Virtual Machine (Dalvik), a subset of Java libraries
running on Dalvik, native C/C++ libraries, & a hardware abstraction layer
C+
+/C
C
![Page 25: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/25.jpg)
Overview of CS 282 and Android D. C. Schmidt
25
What is Android?
C++
/C
C Ja
va/J
NI
• Android provides a layered software stack for mobile devices, including • A variant of the Linux OS optimized for power conservation & local IPC • An optimized Java Virtual Machine (Dalvik), a subset of Java libraries
running on Dalvik, native C/C++ libraries, & a hardware abstraction layer • Middleware, including
• GUIs • Telephony services • Camera • Multimedia • App frameworks • App Distribution • etc.
![Page 26: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/26.jpg)
Overview of CS 282 and Android D. C. Schmidt
26
What is Android? • Android provides a layered software stack for mobile devices, including
• A variant of the Linux OS optimized for power conservation & local IPC • An optimized Java Virtual Machine (Dalvik), a subset of Java libraries
running on Dalvik, native C/C++ libraries, & a hardware abstraction layer • Middleware, including
• GUIs • Telephony services • Camera • Multimedia • App frameworks • App Distribution • etc.
• Common set of apps
See developer.android.com/guide/basics/what-is-android.html for more
Java
/JN
I C+
+/C
C
![Page 27: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/27.jpg)
Overview of CS 282 and Android D. C. Schmidt
27
Linux Kernel
• Provides infrastructure mechanisms to manage mobile device resources • Memory, process, & thread
management • Network & inter-process
communication stack • Device driver framework • Security
C
![Page 28: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/28.jpg)
Overview of CS 282 and Android D. C. Schmidt
28
Linux Kernel
• Android-specific enhancements • Binder – optimized inter-
process communication (IPC) • Android shared memory • Power management • Alarm driver • Low memory killer • Kernel debugger & Logger
C
en.wikipedia.org/wiki/Android_(operating_system)#Linux has more info
• Provides infrastructure mechanisms to manage mobile device resources • Memory, process, & thread
management • Network & inter-process
communication stack • Device driver framework • Security
![Page 29: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/29.jpg)
Overview of CS 282 and Android D. C. Schmidt
29
Hardware Abstraction Layer (HAL)
• User space C/C++ library layer that defines the interface Android requires hardware “drivers” to implement
• The HAL helps to decouple • Android platform logic from
hardware interface • Android frameworks from
Linux kernel
C++
/C
![Page 30: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/30.jpg)
Overview of CS 282 and Android D. C. Schmidt
30
Hardware Abstraction Layer (HAL)
• User space C/C++ library layer that defines the interface Android requires hardware “drivers” to implement
• The HAL helps to decouple • Android platform logic from
hardware interface • Android frameworks from
Linux kernel
• Motivation for a user-space HAL • Not all components have standardized
kernel driver interfaces • Android has specific requirements for
hardware drivers • Kernel drivers are GPL, which exposes
proprietary intellectual property of Android • Implementations of HAL components
are often not open-source
C++
/C
See tidsp.es.ncku.edu.tw/cinfon/resource/slides/11102012_02_final.pdf
![Page 31: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/31.jpg)
Overview of CS 282 and Android D. C. Schmidt
31
Native C/C++ Libraries
• System C library • bionic libc
• Surface Manager • display management
• Media Framework • audio/video streaming
• FreeType • library for rendering fonts
• Webkit • web browser engine
• OpenGL ES, SGL • graphics engines
• SQLite • relational database engine
• SSL • secure sockets layer
C++
/C
![Page 32: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/32.jpg)
Overview of CS 282 and Android D. C. Schmidt
32
Native C/C++ Libraries
• System C library • bionic libc
• Surface Manager • display management
• Media Framework • audio/video streaming
• FreeType • library for rendering fonts
• Webkit • web browser engine
• OpenGL ES, SGL • graphics engines
• SQLite • relational database engine
• SSL • secure sockets layer
C++
/C
developer.android.com/tools/sdk/ndk/index.html has info on Android NDK
![Page 33: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/33.jpg)
Overview of CS 282 and Android D. C. Schmidt
33
Android Runtime
• Support services for executing apps & frameworks
• Dalvik Virtual Machine (VM)
• Android apps typically written in Java, but don’t run in a standard Java VM
C/Ja
va/J
NI
![Page 34: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/34.jpg)
Overview of CS 282 and Android D. C. Schmidt
34
Android Runtime
• Support services for executing apps & frameworks
• Dalvik Virtual Machine (VM)
• Android apps typically written in Java, but don’t run in a standard Java VM
• Bytecodes executed in Dalvik VM “register machine”
• dx program transforms java classes into .dex-formatted bytecodes
• Just-in-time (JIT) compiler available
C/Ja
va/J
NI
![Page 35: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/35.jpg)
Overview of CS 282 and Android D. C. Schmidt
35
Android Runtime
• Support services for executing apps & frameworks
• Dalvik Virtual Machine (VM)
• Android apps typically written in Java, but don’t run in a standard Java VM
• Bytecodes executed in Dalvik VM “register machine”
• dx program transforms java classes into .dex-formatted bytecodes
• Just-in-time (JIT) compiler now available
• Apps typically run in their own processes, inside their own Dalvik VM instance
C/Ja
va/J
NI
See en.wikipedia.org/wiki/Dalvik_(software) for more on Dalvik
Browser App
Browser Activities
Dalvik VM
libC
Core Libs
![Page 36: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/36.jpg)
Overview of CS 282 and Android D. C. Schmidt
36
Android Runtime
C/Ja
va/J
NI
• Core Libraries • Core Java classes
• android.* • java.*, javax.* • junit.* • org.apache.*,
org.json.*, org.xml.*
• Support services for executing apps & frameworks
• Dalvik Virtual Machine (VM)
• Android apps typically written in Java, but don’t run in a standard Java VM
• Bytecodes executed in Dalvik VM “register machine”
• dx program transforms java classes into .dex-formatted bytecodes
• Just-in-time (JIT) compiler now available
• Apps typically run in their own processes, inside their own Dalvik VM instance
![Page 37: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/37.jpg)
Overview of CS 282 and Android D. C. Schmidt
37
Android Runtime
en.wikipedia.org/wiki/Comparison_of_Java_and_Android_API has more info
C/Ja
va/J
NI
• Core Libraries • Core Java classes
• android.* • java.*, javax.* • junit.* • org.apache.*,
org.json.*, org.xml.* • Doesn’t include all
standard Java SDK classes
• Support services for executing apps & frameworks
• Dalvik Virtual Machine (VM)
• Android apps typically written in Java, but don’t run in a standard Java VM
• Bytecodes executed in Dalvik VM “register machine”
• dx program transforms java classes into .dex-formatted bytecodes
• Just-in-time (JIT) compiler now available
• Apps typically run in their own processes, inside their own Dalvik VM instance
![Page 38: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/38.jpg)
Overview of CS 282 and Android D. C. Schmidt
38
• Window Manager • Manages top-level window’s look &
behavior • View System
• Lists, grids, text boxes, buttons, etc.
• Content Providers • Inter-application data sharing
• Activity Manager • Application lifecycle & common
navigation stack
Application Frameworks
• Package Manager • Manages application packages
• Telephony Manager • State of telephony services
• Resource Manager • Manages non-code resources: strings,
graphics, & layout files • Location Manager
• Access to system location services • Notification Manager
• Notify users when events occur
Java
/JN
I
• Provide services that are essential to the Android platform
![Page 39: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/39.jpg)
Overview of CS 282 and Android D. C. Schmidt
39
• Window Manager • Manages top-level window’s look &
behavior • View System
• Lists, grids, text boxes, buttons, etc.
• Content Providers • Inter-application data sharing
• Activity Manager • Application lifecycle & common
navigation stack
Application Frameworks
• Package Manager • Manages application packages
• Telephony Manager • State of telephony services
• Resource Manager • Manages non-code resources: strings,
graphics, & layout files • Location Manager
• Access to system location services • Notification Manager
• Notify users when events occur
Java
/JN
I
• Provide services that are essential to the Android platform
sites.google.com/site/io/inside-the-android-application-framework has more info
![Page 40: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/40.jpg)
Overview of CS 282 and Android D. C. Schmidt
40
Applications
• Some standard apps include: • Home
• main screen • Contacts
• contacts database • Calendar
• track schedules • Camera
• take photos & videos
Java
/JN
I
• Phone • dial phone numbers
• Browser • view web pages
• Email reader • Gmail & others
• Media player • Play songs & watch
movies • SMS/MMS
• Instant messaging
All apps written using Java (Android frameworks use many JNI calls to C/C++)
![Page 41: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/41.jpg)
Overview of CS 282 and Android D. C. Schmidt
41
Key Types of Android Components 1: Activity calls
downloadImage() with image URL
• Activity • Represents a single screen
with a user interface
See www.dre.vanderbilt.edu/~schmidt/cs282 for info on this app
![Page 42: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/42.jpg)
Overview of CS 282 and Android D. C. Schmidt
42
Key Types of Android Components 1: Activity calls
downloadImage() with image URL
• Activity • Represents a single screen
with a user interface • Can be started by creating an Intent object &
passing it to startActivity() • Parameters can be passed as “extras” to the
Intent used to start the Service
![Page 43: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/43.jpg)
Overview of CS 282 and Android D. C. Schmidt
43
Key Types of Android Components 1: Activity calls
downloadImage() with image URL
• Activity • Represents a single screen
with a user interface • Can be started by creating an Intent object &
passing it to startActivity() • Parameters can be passed as “extras” to the
Intent used to start the Service • Apps can have multiple Activities
See developer.android.com/guide/components/activities.html for more info
![Page 44: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/44.jpg)
Overview of CS 282 and Android D. C. Schmidt
44
Download Service 2: Sends GET request
to web server
Key Types of Android Components • Activity
• Represents a single screen with a user interface
• Service • Runs in background to perform
long-running operations or to access remote resources
1: Activity calls downloadImage() with image URL
![Page 45: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/45.jpg)
Overview of CS 282 and Android D. C. Schmidt
45
• Activity • Represents a single screen
with a user interface • Service
• Runs in background to perform long-running operations or to access remote resources • Started Service – Often
performs a single operation & usually doesn’t return a result to the caller directly • Parameters can be passed as “extras”
to the Intent used to start the Service
Download Service 2: Sends GET request
to web server
Key Types of Android Components 1: Activity calls
downloadImage() with image URL
![Page 46: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/46.jpg)
Overview of CS 282 and Android D. C. Schmidt
46
• Activity • Represents a single screen
with a user interface • Service
• Runs in background to perform long-running operations or to access remote resources • Started Service – Often
performs a single operation & usually doesn’t return a result to the caller directly • Parameters can be passed as “extras”
to the Intent used to start the Service • Bound Service – Offers a client-server interface that
allows components to interact with the Service • e.g., via the Android Interface Definition Language (AIDL) & Binder RPC
Download Service 2: Sends GET request
to web server
Key Types of Android Components 1: Activity calls
downloadImage() with image URL
See developer.android.com/guide/components/services.html for more info
![Page 47: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/47.jpg)
Overview of CS 282 and Android D. C. Schmidt
47
Key Types of Android Components • Activity
• Represents a single screen with a user interface
• Service • Runs in background to perform
long-running operations or to access remote resources
• Content Provider • Manages a shared set of
application data
1: Activity calls downloadImage() with image URL
Image Metadata Content Provider
Image Files
Download Service 2: Sends GET request
to web server
3: Stores downloaded image in filesystem & metadata in Content Provider
![Page 48: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/48.jpg)
Overview of CS 282 and Android D. C. Schmidt
48
Key Types of Android Components • Activity
• Represents a single screen with a user interface
• Service • Runs in background to perform
long-running operations or to access remote resources
• Content Provider • Manages a shared set of
application data • Data typically stored
persistently in an SQLite database
1: Activity calls downloadImage() with image URL
Image Metadata Content Provider
Image Files
Download Service 2: Sends GET request
to web server
3: Stores downloaded image in filesystem & metadata in Content Provider
![Page 49: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/49.jpg)
Overview of CS 282 and Android D. C. Schmidt
49
Key Types of Android Components • Activity
• Represents a single screen with a user interface
• Service • Runs in background to perform
long-running operations or to access remote resources
• Content Provider • Manages a shared set of
application data • Data typically stored
persistently in an SQLite database
• Never accessed directly, but via a Content Resolver
1: Activity calls downloadImage() with image URL
Image Metadata Content Provider
Image Files
Download Service 2: Sends GET request
to web server
3: Stores downloaded image in filesystem & metadata in Content Provider
developer.android.com/guide/topics/providers/content-providers.html has more
![Page 50: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/50.jpg)
Overview of CS 282 and Android D. C. Schmidt
50
Image Metadata Content Provider
Image Files
Key Types of Android Components Download Service
2: Sends GET request to web server
3: Stores downloaded image in filesystem & metadata in Content Provider
4. Broadcasts intent containing image URI
• Activity • Represents a single screen
with a user interface • Service
• Runs in background to perform long-running operations or to access remote resources
• Content Provider • Manages a shared set of
application data • Broadcast Receiver
• A component that responds to system-wide Intent broadcast announcements
5: Activity receives intent & displays image
![Page 51: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/51.jpg)
Overview of CS 282 and Android D. C. Schmidt
51
Image Metadata Content Provider
Image Files
Key Types of Android Components Download Service
2: Sends GET request to web server
3: Stores downloaded image in filesystem & metadata in Content Provider
4. Broadcasts intent containing image URI
• Activity • Represents a single screen
with a user interface • Service
• Runs in background to perform long-running operations or to access remote resources
• Content Provider • Manages a shared set of
application data • Broadcast Receiver
• A component that responds to system-wide Intent broadcast announcements • Supports complex Intent filtering
See developer.android.com/reference/android/content/BroadcastReceiver.html
5: Activity receives intent & displays image
![Page 52: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/52.jpg)
Overview of CS 282 and Android D. C. Schmidt
52
Summary
sites.google.com/site/io/anatomy--physiology-of-an-android has Android overview
• Android defines a layered software stack for mobile devices
![Page 53: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/53.jpg)
Overview of CS 282 and Android D. C. Schmidt
53
Application
DVM & Linux Process
Content Provider
Service Activity
Broadcast Receiver
Summary • Android defines a layered software stack for mobile devices
• Apps are developed using framework components that Android can instantiate & run as needed
See developer.android.com/guide/components/fundamentals.html for more info
![Page 54: Overview of CS 282 & Androidschmidt/cs282/PDFs/AndroidOvervie… · assignments written in Java • Can use Windows, Linux, Mac, etc. • Must be done individually • Programs will](https://reader031.vdocuments.net/reader031/viewer/2022022604/5b6811af7f8b9acc608c6afb/html5/thumbnails/54.jpg)
Overview of CS 282 and Android D. C. Schmidt
54
Summary • Android defines a layered software stack for mobile devices
• Apps are developed using framework components that Android can instantiate & run as needed
• Most parts of Android are available in open-source format
See source.android.com for instructions on how to obtain Android source code