Android Anatomy


Published on

An Introduction to Google Android

Published in: Technology
1 Comment
  • Slide 11:Built on 2.6.24 -- this is not one has 2.6.29
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • 03/06/10
  • IBM Confidential Instructor notes: Include an opportunity for participants to ask questions after presentation of key concepts, examples, and exercises.
  • Android Anatomy

    1. 1. Mobile Platform - Android - The Anatomy - IBM INDIA Bhavya Siddappa Android Evangelist
    2. 2. Agenda <ul><li>Mobile Eco-system </li></ul><ul><li>Entertainment </li></ul><ul><li>Android Overview </li></ul><ul><li>Challenges & Opportunities </li></ul><ul><li>What's for me ? </li></ul>
    3. 3. Mobile Eco-System
    4. 4. Smart Phone Market share
    5. 5. What is Android ? <ul><li>Fully customizable </li></ul><ul><li>On Linux kernel. </li></ul><ul><li>Set of software for mobile devices: </li></ul><ul><ul><li>An operating system </li></ul></ul><ul><ul><li>Middleware & </li></ul></ul><ul><ul><li>Key mobile applications. </li></ul></ul><ul><li>Rich set of APIs </li></ul><ul><li>Open source. </li></ul><ul><li>By Google and OHA </li></ul>
    6. 6. Android Events <ul><li>5 th November, 2007 - Open Handset Alliance announced </li></ul><ul><li>21 st October , 2008 - Android has been available as Open Source. </li></ul><ul><li>22 nd October , 2008 - T Mobile G1 launched in USA. </li></ul><ul><li>5 th January, 2010 – Nexus One Launched </li></ul>
    7. 8. What is OPEN? <ul><li>Industry - </li></ul><ul><li>Open sourced under Apache 2.0 license </li></ul><ul><li>Source available after first handsets ship </li></ul><ul><li>Anyone will be able to build a system image </li></ul><ul><li>Developers - </li></ul><ul><li>No permission to ship an application </li></ul><ul><li>No hidden or privileged framework APIs </li></ul><ul><li>Can integrate, extend, and replace existing components </li></ul><ul><li>Users - </li></ul><ul><li>Control of their experience </li></ul><ul><li>Control what gets installed </li></ul><ul><li>Choose the defaults </li></ul>
    8. 9. Android Features <ul><li>Application framework - Reuse and replacement of components </li></ul><ul><li>Dalvik virtual machine - Optimized VM </li></ul><ul><li>Integrated browser - Open source WebKit </li></ul><ul><li>Optimized graphics - 2D graphics library; 3D graphics </li></ul><ul><li>SQLite - S tructured data storage </li></ul><ul><li>Media support - Audio, Video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) </li></ul><ul><li>GSM Telephony - (hardware dependent) </li></ul><ul><li>Bluetooth, 3G, and WiFi - (hardware dependent) </li></ul><ul><li>Camera, GPS, compass, and accelerometer - (hardware dependent) </li></ul><ul><li>Rich development environment - Emulator, tools for debugging, memory and performance profiling, and a plug-in for the Eclipse IDE </li></ul>
    9. 10. Android Architecture Overview
    10. 11. Android Kernel- Linux <ul><li>Android is build on Linux 2.6.24 kernel </li></ul><ul><li>It has a core capability like </li></ul><ul><ul><li>Security </li></ul></ul><ul><ul><li>Memory management </li></ul></ul><ul><ul><li>Process management </li></ul></ul><ul><ul><li>Network stack </li></ul></ul><ul><ul><li>Driver model </li></ul></ul><ul><li>Does not include the full set of standard Linux utilities </li></ul><ul><ul><li>Display Driver </li></ul></ul><ul><ul><li>Camera Driver </li></ul></ul><ul><ul><li>Bluetooth Driver </li></ul></ul><ul><ul><li>Flash Memory Driver </li></ul></ul><ul><ul><li>USB Driver </li></ul></ul><ul><ul><li>Keypad Driver </li></ul></ul><ul><ul><li>WiFi Driver </li></ul></ul><ul><ul><li>Audio Driver </li></ul></ul><ul><ul><li>Power Management </li></ul></ul>
    11. 12. Android Kernel – Binder (IPC) Driver <ul><ul><li>Inter process Communication. </li></ul></ul><ul><ul><li>Every Applications and Services runs as a process. </li></ul></ul><ul><ul><li>Separate processes must communicate and share data. </li></ul></ul><ul><ul><li>Driver to facilitated inter-process communication (IPC) </li></ul></ul><ul><ul><li>Shared Memory Approach for IPC-High performance </li></ul></ul><ul><ul><li>Per-process thread pool for processing requests </li></ul></ul><ul><ul><li>Reference counting, and mapping of object references across processes. </li></ul></ul><ul><ul><li>Synchronous calls between processes </li></ul></ul>
    12. 13. Libraries <ul><li>Native libraries. </li></ul><ul><li>Written in C/C++ internally </li></ul><ul><li>Called through Java interfaces. </li></ul><ul><li>Layer contains </li></ul><ul><ul><li>Surface Manager (for compositing windows), </li></ul></ul><ul><ul><li>2D and 3D graphics, </li></ul></ul><ul><ul><li>Media codecs (MPEG-4, H.264, MP3, etc.), </li></ul></ul><ul><ul><li>SQL database (SQLite) and </li></ul></ul><ul><ul><li>A native web browser engine (WebKit). </li></ul></ul>
    13. 14. Function Libraries- WebKit <ul><li>Open source WebKit browser: </li></ul><ul><li>Renders pages in full (desktop) view </li></ul><ul><li>Full CSS, Javascript, DOM, AJAX support </li></ul>
    14. 15. SQLite <ul><li>Serverless, zero-configuration, transactional SQL database engine. </li></ul><ul><li>Most widely deployed SQL database engine in the world. </li></ul><ul><li>Light-weight transactional data store </li></ul><ul><li>Back end for most platform data storage </li></ul><ul><li>Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures. </li></ul><ul><li>Zero-configuration - no setup or administration needed. </li></ul><ul><li>A complete database is stored in a single cross-platform disk file. </li></ul><ul><li>Cross-platform: Unix (Linux and Mac OS X), OS/2, and Windows (Win32 and WinCE) supported. </li></ul>
    15. 16. Dalvik Virtual Machine <ul><li>Highly optimized VM, compiled byte is optimized for mobile devices </li></ul><ul><li>Register based NOT Stack based </li></ul><ul><li>NOT a JVM </li></ul><ul><li>End result is NOT the same byte code as Java, </li></ul><ul><li>dx in the sdk takes compiled Java class files and converts them into .dex </li></ul><ul><li>No JIT </li></ul><ul><li>Built with security and performances (battery life) in mind </li></ul>
    16. 17. Core Libraries
    17. 18. Application Framework <ul><li>Provided by Google </li></ul><ul><li>Other parts are extensions or services that you write. </li></ul><ul><li>UI components - Lists, grids, text boxes, buttons, and even an embeddable web browser </li></ul><ul><li>Content Providers – access, store and share application data </li></ul><ul><li>Resource Manager - access to strings, graphics, and layout files </li></ul><ul><li>Notification Manager - Display custom alerts in the status bar </li></ul><ul><li>Activity Manager - Manages the lifecycle of applications </li></ul>
    18. 19. Applications Layer <ul><li>Top layer </li></ul><ul><li>Code will live here </li></ul><ul><li>Built-in applications such as the Phone and Web Browser. </li></ul><ul><li>Applications Google writes have to go through the same public API that you use. </li></ul><ul><li>You can even tell Android to make your application replace the standard applications, if you like. </li></ul>IBM Internal Use | March 6, 2010
    19. 20. Android SDK <ul><li>15 tools for developing,, </li></ul><ul><ul><li>Debugging, </li></ul></ul><ul><ul><li>Packaging </li></ul></ul><ul><ul><li>Installing applications on the emulator </li></ul></ul><ul><li>Android Development Tools ADT plug-in for Eclipse </li></ul><ul><li>Android Emulator </li></ul><ul><li>Write application code & designing an application UI. </li></ul><ul><li>Documentation. </li></ul>
    20. 21. Eclipse ADT Plugin
    21. 22. Installed Application in Emulator IBM Internal Use | March 6, 2010
    22. 23. Android Project Structure in Eclipse:
    23. 24. Android Runtime <ul><li>Android application == a process </li></ul><ul><li>A process == a instance of the Dalvik virtual machine. </li></ul><ul><li>Dalvik can run multiple VMs efficiently. </li></ul><ul><li>Executes classes compiled by a Java language compiler that have been transformed into the .dex format. </li></ul><ul><li>DVM executes files in the Dalvik Executable (.dex) format which is optimized. </li></ul>
    24. 25. Application Building Blocks - Activity <ul><li>Activity - UI component </li></ul><ul><li>One screen. </li></ul><ul><li>For example: </li></ul><ul><ul><li>List of menu items users can choose. </li></ul></ul><ul><ul><li>Text messaging application </li></ul></ul><ul><ul><li>List of contacts to send messages </li></ul></ul><ul><li>Each activity is independent of the others. </li></ul><ul><li>Each one is implemented as a subclass of the Activity base class. </li></ul>
    25. 26. Application Building Blocks - Intent <ul><li>IntentReceiver </li></ul><ul><li>Set and respond to notifications or status changes. </li></ul><ul><li>Can wake up your app. </li></ul><ul><li>Wakes up a predefined action through the external event. </li></ul><ul><li>For example: </li></ul><ul><ul><li>Alarm notification, when the user receives email. </li></ul></ul>
    26. 27. Application Building Blocks - Service <ul><li>Faceless task that runs in the background. </li></ul><ul><li>No visual user interface </li></ul><ul><li>Runs in the background </li></ul><ul><li>Certain period of time </li></ul><ul><li>For example: </li></ul><ul><li>Background music </li></ul><ul><li>Each service extends the Service base class. </li></ul>
    27. 28. Application Building Blocks – Content Providers <ul><li>Enable applications to share data. </li></ul><ul><li>Makes a specific set of the application's data available to other applications. </li></ul><ul><li>Date stored in the file system, in an SQLite database </li></ul><ul><li>Extends the ContentProvider base class </li></ul><ul><li>Enable other applications to retrieve and store data of the type it controls. </li></ul>
    28. 29. What’s in an App ? (APK) Drawable Layouts Values Assets Android Manifest Default Activity Intents Content Providers Service Libraries Other Activities
    29. 30. Get Started <ul><li>SDK  </li></ul><ul><ul><li> </li></ul></ul><ul><li>Eclipse </li></ul><ul><ul><li>> 3.5 Galileo </li></ul></ul><ul><li>Eclipse Plug-in </li></ul><ul><ul><li>> XP, Vista, Linux, x86 Mac 10.4.8 or later </li></ul></ul><ul><li>Leave the emulator running! </li></ul>
    30. 31. References <ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul>
    31. 32. Questions and Answers IBM Internal Use | March 6, 2010
    32. 33. IBMer [email_address] Android Evangelist Blogger Tweeter LinkedIn Thank You !