2010年10月5日 星期二

Android Architecture

Android Architecture (including Patrick Brady's HAL)


Android_Platform

*4 Levels:
  1.Linux Kernel
    See Android Branch
  2. Runtmie Middleware
    1) Dalvik Virtual Machine for JAVA
      -Each application runs in its own porcess with its own instance of VM. Dalvik can handle multiple VMs. 
      -Register-based Architecture (True Java VMs are stack machines.): Less Instructions & Fast Execution
      -Dalvik Executable (.dex) format, Optimizations for memory, not Java bytecode
      - Compilation: .java --> .class --> .dex      -Android 2.2, Dalvik has a just-in-time compiler to speed up execution of bytecode
by compiling some or all of it to native machine code.
     2) Core Libraries (by JAVA) 
     -JAVA APIs: Data Structures, Utilities, File Access, Network Access, Graphics, ... (e.g., new)  
     3) Native Libraries (by C/C++)
       3.1 Bionic libc
          -Google customized C compiler for Android
            *License Issue: Bionic is BSD license to keep GPL out of user-space.
            *Small Size: about 200K, half  of glibc (GNU libc)
            *Fast Speed: small size & fast speed of pthread(POSIX Threads) implementation
            *Built-in support for important Android-specific services such as system properties and logging.
            *Not fully compatible to glib: not support all POSIX features not needed on Android.
[]http://discuz-android.blogspot.com/2008/10/google-android-native-libc-bionic.html
      2.2 Media Framework
         - Based on PacketVideo OpenCore
         -Support: standard video, audio, still-frame formats
         -Support: hardware/software codec plug-ins

ü      3.3 WebKit  web browser
         -Open source
         -Render pages in full (desktop) view
         -Support Full CSS, JavaScript, DOM, AJAX 
         -Support single-column and adaptive view rendering

      3.4 SQLite
ü         -Light-weight relational database management system
         -Popular in many systems         
ü

       3.5 Surface Manager (Surface Flinger)
         -Combine 2D and 3D surfaces from multiple applications to frame buffer device
ü
       -Surfaces passed as buffers via Binder IPC calls
       -Can use OpenGL ES and 2D hardware accelerator for its compositions
       -Double-buffering using page-flip
      3.6 Audio Manager (Audio Flinger): Processing multiple audio streams into PCM audio out paths
      3.7 SGL: 2D graphics engine
    3) HAL (Hardware Abstraction Layer)
      *In user space, Define the standardized interface for hardware drivers
      *Separate Android Platform from Linux Kernel
      *HW Drivers under HAL are not GPL-licensed and not required to be released

  3.Application Framework
    *Define component APIs used by the core applications
    *Developers reuse/replace the same components easily.   

ü
 
Feature
Role
View
System
Components to build appplications (e.g., lists, grids, text boxes, buttons, and embedded web browser)
Content
Provider
Access data from other applications or to share their own data
Resource
Manager
Provide access to non-code resources (e.g., localized string, graphics, and layout files)
Notification Manager
Display customer alerts in the status bar
Activity
Manager
Manage the lifecycle of (window) applications and provide a common navigation backstack
  4. Applications
  -Programming by JAVA
  -Core Applications: üEmail Client, SMS Program, Calendar, Maps, Browser, üContacts

  PS. 2& 3 are middlewares
  Note. Kernel Layer are GPL license; Other layers are Apache License.

Android Products:
 *SmartPhone, SmartBook (netbook), Tablet, Set-top Box, E-book, ...
      3.8 3D Libraries
ü          -Based on OpenGL ES 1.0 APIs
ü          -Can use H/W 3D acceleration oroptimized 3D S/W rasterizer
      3.9 FreeType: Rendering bitmap and vector font

沒有留言:

張貼留言