Android presentation
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Android presentation

on

  • 1,638 views

 

Statistics

Views

Total Views
1,638
Views on SlideShare
1,637
Embed Views
1

Actions

Likes
4
Downloads
100
Comments
0

1 Embed 1

https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Android presentation Presentation Transcript

  • 1. Android Architecture
  • 2. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 3. Android System Architecture
  • 4. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 5. Linux Kernel● Android is built on the Linux kernel, but Android is not Linux● No native windowing system● Does not include the full set of standard Linux utilities● Patch of “kernel enhancements” to support Android
  • 6. Why Linux Kernel?● Great memory and process management● Permissions-based security model● Proven driver model● Support for shared libraries● Its already open source!
  • 7. Kernel Enhancements• Binder• Power Management
  • 8. Binder: Problem● Applications and Services may run in separate processes but must communicate and share data● IPC can introduce significant processing overhead and security holes
  • 9. Binder: Solution● Driver to facilitate inter-process communication (IPC)● High performance through shared memory● Per-process thread pool for processing requests● Reference counting, and mapping of object references across processes● Synchronous calls between processes
  • 10. Binder in Action
  • 11. Binder in Action
  • 12. Binder in Action
  • 13. Binder in Action
  • 14. Binder in Action
  • 15. Binder in Action
  • 16. Binder in Action
  • 17. BinderAndroid Interface Definition Language (AIDL)http://developer.android.com/guide/components/aidl.html
  • 18. PM Problem● Mobile devices run on battery power● Batteries have limited capacity
  • 19. PM Solution● Built on top of standard Linux Power Management (PM)● More aggressive power management policy● Components make requests to keep the power on through “wake locks”● Supports different types of wake locks
  • 20. Android PM in Action
  • 21. Android PM in Action
  • 22. Android PM in Action
  • 23. Android PM in Action
  • 24. Android PM in Action
  • 25. Android PM in Action
  • 26. Android PM● Use wake locks carefully!● sysfs entries for wakelocks in android "/sys/power/wake_lock", "/sys/power/wake_unlock", "/sys/power/state"
  • 27. KernelDownload and Build android kernel from:http://source.android.com/source/building-kernels.html
  • 28. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 29. Native Libraries
  • 30. Native Libraries● Bionic Libc● Function Libraries● Native Servers● Hardware Abstraction Libraries
  • 31. Native Libraries● Bionic Libc● Function Libraries● Native Servers● Hardware Abstraction Libraries
  • 32. What is Bionic?● What is bionic? Custom libc implementation, optimized for embedded use.
  • 33. What is Bionic?Why build a custom libc library?● License: we want to keep GPL out of user- space● Size: will load in each process, so it needs to be small● Fast: limited CPU power means we need to be fast
  • 34. Bionic libc● BSD License● Small size and fast code paths● Very fast and small custom pthread implementation
  • 35. Bionic libc● Built-in support for important Android- specific services a. system properties getprop(“my.system.property”, buff, default); b. log capabilities LOGI(“Logging a message with priority ‘Info’”);
  • 36. Native Libraries● Bionic Libc● Function Libraries● Native Servers● Hardware Abstraction Libraries
  • 37. WebKit● Based on open source WebKit browser: http: //webkit.org● Renders pages in full (desktop) view● Full CSS, Javascript, DOM, AJAX support● Support for single-column and adaptive view rendering
  • 38. Media Framework● Based on PacketVideo OpenCORE platform● Supports standard video, audio, still-frame formats● Support for hardware / software codec plug- ins
  • 39. SQLite● Light-weight transactional data store● Back end for most platform data storage
  • 40. Native Libraries● Bionic Libc● Function Libraries● Native Servers● Hardware Abstraction Libraries
  • 41. Surface Flinger● Provides system-wide surface “composer”, handling all surface rendering to frame buffer device● Can combine 2D and 3D surfaces and surfaces from multiple applications
  • 42. Surface Manager● Surfaces passed as buffers via Binder IPC calls● Can use OpenGL ES and 2D hardware accelerator for its compositions● Double-buffering using page-flip
  • 43. Audio Flinger● Manages all audio output devices● Processes multiple audio streams into PCM audio out paths● Handles audio routing to various outputs
  • 44. Native Libraries● Bionic Libc● Function Libraries● Native Servers● Hardware Abstraction Libraries
  • 45. Hardware Abstraction Layer
  • 46. Hardware Abstraction Libraries● Why do we need a user-space HAL? ○ Not all components have standardized kernel driver interfaces ○ Kernel drivers are GPL which exposes any proprietary IP ○ Android has specific requirements for hardware drivers
  • 47. Hardware Abstraction Libraries● Libraries are loaded dynamically at runtime as needed QualcommCameraHardware.cpp ... libqcamera = dlopen(“/system/lib/liboemcamera.so”, TLD_NOW); ... *(void **)&LINK_camera_init = ::dlsym(libqcamera, "camera_init"); ... LINK_camera_init();
  • 48. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 49. Android Runtime
  • 50. What is the Dalvik VM?● Androids custom clean-room implementation virtual machine● run on a slow CPU● with relatively little RAM● on an OS without swap space● while powered by a battery
  • 51. Dalvik Virtual Machine● Provides application portability and runtime consistency● Runs optimized file format (.dex) and Dalvik bytecode● Java .class / .jar files converted to .dex at build time
  • 52. Core Libraries● Core APIs for Java language provide a powerful, yet simple and familiar development platform ○ Data structures ○ Utilities ○ File access ○ Network Access ○ Graphics ○ …
  • 53. .dex file
  • 54. .jar Vs .dex
  • 55. .class files
  • 56. .dex file
  • 57. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 58. Application Framework
  • 59. Core Platform Services● Services that are essential to the Android platform● Behind the scenes - applications typically dont access them directly
  • 60. Core Platform Services● Activity Manager
  • 61. Core Platform Services● Activity Manager● Package Manager
  • 62. Core Platform Services● Activity Manager● Package Manager● Window Manager
  • 63. Core Platform Services● Activity Manager● Package Manager● Window Manager● Resource Manager
  • 64. Core Platform Services● Activity Manager● Package Manager● Window Manager● Resource Manager● Content Providers
  • 65. Core Platform Services● Activity Manager● Package Manager● Window Manager● Resource Manager● Content Providers● View System
  • 66. Hardware Services● Provide access to lower-level hardware APIs● Typically accessed through local Manager object LocationManager lm = (LocationManager) Context.getSystemService (Context.LOCATION_SERVICE);
  • 67. Hardware Services● Telephony Service
  • 68. Hardware Services● Telephony Service● Location Service
  • 69. Hardware Services● Telephony Service● Location Service● Bluetooth Service
  • 70. Hardware Services● Telephony Service● Location Service● Bluetooth Service● WiFi Service
  • 71. Hardware Services● Telephony Service● Location Service● Bluetooth Service● WiFi Service● USB Service
  • 72. Hardware Services● Telephony Service● Location Service● Bluetooth Service● WiFi Service● USB Service● Sensor Service
  • 73. Android System
  • 74. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 75. Inside The System● Connectivity ○ Bluetooth ○ WiFi● Power Management● Display & Multimedia ○ Display Subsystem ○ Audio Subsystem ○ Camera/Video Subsystem● Telephony
  • 76. Connectivity● Bluetooth● Wi-Fi
  • 77. BluetoothNote: Android 4.2 introduces a new Bluetooth stack optimized for use withAndroid devices. The new Bluetooth stack developed in collaboration betweenGoogle and Broadcom replaces the stack based on BlueZ and providesimproved compatibility and reliability.
  • 78. Wi-Fi● Android uses wpa_supplicant as the platform interface to the Wi-Fi device.● Your Wi-Fi driver must be compatible with the standard wpa_supplicant
  • 79. Wi-Fi
  • 80. Inside The System● Connectivity ○ Bluetooth ○ WiFi● Power Management● Display & Multimedia ○ Display Subsystem ○ Audio Subsystem ○ Camera/Video Subsystem● Telephony
  • 81. Power Management
  • 82. Inside The System● Connectivity ○ Bluetooth ○ WiFi● Power Management● Display & Multimedia ○ Display Subsystem ○ Audio Subsystem ○ Camera/Video Subsystem● Telephony
  • 83. Display & Multimedia● Display Subsystem● Audio Subsystem● Camera/Video Subsystem
  • 84. Display Subsystem
  • 85. Audio Subsystem
  • 86. Camera/Video Subsystem
  • 87. Android Multimedia Framework
  • 88. Inside The System● Connectivity ○ Bluetooth ○ WiFi● Power Management● Display & Multimedia ○ Display Subsystem ○ Audio Subsystem ○ Camera/Video Subsystem● Telephony
  • 89. Telephony● Radio Interface Layer Androids Radio Interface Layer (RIL) provides an abstraction layer between Android telephony services (android.telephony) and radio hardware.
  • 90. Radio Interface Layer
  • 91. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 92. Runtime WalkthroughIt all starts with init…Similar to most Linux-based systems at startup,the bootloader loads the Linux kernel and startsthe init process.
  • 93. Runtime Walkthrough● Init starts Linux daemons, including: ○ USB Daemon (usbd) to manage USB connections ○ Android Debug Bridge (adbd) to manage ADB connections ○ Debugger Daemon (debuggerd) to manage debug processes requests (dump memory, etc.) ○ Radio Interface Layer Daemon (rild) to manage communication with the radio
  • 94. Runtime Walkthrough● Init process starts the zygote process: ○ A nascent process which initializes a Dalvik VM instance ○ Loads classes and listens on socket for requests to spawn VMs ○ Forks on request to create VM instances for managed processes ○ Copy-on-write to maximize re-use and minimize footprint
  • 95. Runtime Walkthrough● Init starts runtime process: ○ Initializes Service Manager – the context manager for Binder that handles service registration and lookup ○ Registers Service Manager as default context manager for Binder services
  • 96. Runtime Walkthrough● Runtime process sends request for Zygote to start System Service
  • 97. Runtime Walkthrough● Runtime process sends request for Zygote to start System Server ○ Zygote forks a new VM instance for the System Service process and starts the service
  • 98. Runtime Walkthrough● System Service starts the native system servers, including: ○ Surface Flinger ○ Audio Flinger
  • 99. Runtime Walkthrough● Native system servers register with Service Manager as IPC service targets:
  • 100. Runtime Walkthrough● System Service starts the Android managed services:
  • 101. Runtime Walkthrough● Android managed Services register with Service Manager:
  • 102. Runtime Walkthrough
  • 103. Runtime WalkthroughAfter system server loads all services, the system isready…
  • 104. Runtime WalkthroughAfter system server loads all services, the system isready…
  • 105. Runtime WalkthroughAfter system server loads all services, the system isready…
  • 106. Runtime WalkthroughEach subsequent application is launched in its ownprocess
  • 107. Agenda● Linux Kernel● Native Libraries● Android Runtime● Application Framework● Inside The System Connectivity(Bluetooth,WiFi...) Power Management Display & Multimedia (Surfaceflinger, Audioflinger,Camera/Video) Telephony (Radio Interface Layer)● Android Boot sequence● Layer Interaction
  • 108. Layer InteractionThere are 3 main flavors of Android layer cake: ○ App Runtime Service lib ○ App Runtime Service Native Service lib ○ App Runtime Service Native Daemon lib
  • 109. Layer InteractionThere are 3 main flavors of Android layer cake: ○ App Runtime Service lib ○ App Runtime Service Native Service lib ○ App Runtime Service Native Daemon lib
  • 110. Android Runtime Services
  • 111. Android Runtime Services
  • 112. Android Runtime Services
  • 113. Android Runtime Services
  • 114. Example: Location Manager
  • 115. Layer InteractionThere are 3 main flavors of Android layer cake: ○ App Runtime Service lib ○ App Runtime Service Native Service lib ○ App Runtime Service Native Daemon lib
  • 116. Android Native Services
  • 117. Android Native Services
  • 118. Android Native Services
  • 119. Android Native Services
  • 120. Android Native Services
  • 121. Android Native Services
  • 122. Android Native Services
  • 123. Layer InteractionThere are 3 main flavors of Android layer cake: ○ App Runtime Service lib ○ App Runtime Service Native Service lib ○ App Runtime Service Native Daemon lib
  • 124. Daemon Connection
  • 125. Daemon Connection
  • 126. Daemon Connection
  • 127. Daemon Connection
  • 128. Questions