*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++)
-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.
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
3.6 Audio Manager (Audio Flinger): Processing multiple audio streams into PCM audio out pathsü
-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.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.
-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) 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
-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
沒有留言:
張貼留言