Android presentation
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Android presentation

  • 1,742 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,742
On Slideshare
1,741
From Embeds
1
Number of Embeds
1

Actions

Shares
Downloads
101
Comments
0
Likes
4

Embeds 1

https://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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