What is Android?
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDKprovides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
Android是一个供移动设备使用的软件包,包括操作系统,中间件和关键应用。Android SDK中提供可使用Java编程语言开发Android应用程序所必需的工具和API。
Features
- Application framework enabling reuse and replacement of components
- 应用程序框架
- Dalvik virtual machine optimized for mobile devices
- Dalvik虚拟机
- Integrated browser based on the open source WebKit engine
- 集成浏览器
- Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
- 优化的图形
- SQLite for structured data storage
- SQLite
- Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- 媒体支持
- GSM Telephony (hardware dependent)
- GSM电话
- Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
- 蓝牙,EDGE,3G,和WiFi
- Camera, GPS, compass, and accelerometer (hardware dependent)
- 摄像头,GPS,指南针和加速度计
- Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE
- 富开发环境
Android Architecture
The following diagram shows the major components of the Android operating system. Each section is described in more detail below.
下图展示了Android操作系统的主要组成部分。
Applications
Android will ship with a set of core applications including an email client, SMS program, calendar, maps, browser, contacts, and others. All applications are written using the Java programming language.
Android封装了一系列的核心应用,包括邮件客户端,SMS程序,日历,地图,浏览器,联系人及其他。所有应用均由Java语言编写。
Application Framework
By providing an open development platform, Android offers developers the ability to build extremely rich and innovative applications. Developers are free to take advantage of the device hardware, access location information, run background services, set alarms, add notifications to the status bar, and much, much more.
为了成为一个开放的平台,Android向开发人员提供构建丰富和创新应用的各种能力。开发人员可自由使用设备硬件,获取本地信息,运行后台服务,设定提醒,添加状态栏通知,以及更多。
Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of components; any application can publish its capabilities and any other application may then make use of those capabilities (subject to security constraints enforced by the framework). This same mechanism allows components to be replaced by the user.
开发人员可以完全访问核心应用所使用的同一框架API。应用程序的框架设计简化了组件的重复使用;任何应用都可以发布其功能并使得任何其他应用可以使用这些功能(受制于框架执行的安全限制)。同样的机制允许用户替换组件。
Underlying all applications is a set of services and systems, including:
所有的应用都是一系列的服务的系统,包括:
- A rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser
- 一个丰富的可扩展系列Views,能够用来构建应用程序,包括 lists, grids, text boxes, buttons, 甚至一个可嵌入的Web浏览器。
- Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
- Content Providers 使得应用程序能够访问其他应用程序的数据(例如联系人列表),或者分享其自身数据
- A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
- 一个Resource Manager 提供非代码资源的访问,例如内部字符串,图形和布局文件
- A
Notification Manager
that enables all applications to display custom alerts in the status bar - 一个
Notification Manager
使得所有应用程序能够在状态栏中显示自定义提醒 - An
Activity Manager
that manages the lifecycle of applications and provides a common navigation backstack - 一个
Activity Manager
管理应用程序的生命周期,并提供一个共同的导航用返回存贮栈
For more details and a walkthrough of an application, see the Notepad Tutorial.
Libraries
Android includes a set of C/C++ libraries used by various components of the Android system. These capabilities are exposed to developers through the Android application framework. Some of the core libraries are listed below:
Android包括一系列的C/C++库,用于Android系统的不同组成部分。通过Android应用框架开发人员可以使用其功能。部分核心库内容如下:
- System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
- 系统C库 - 一个标准C系统库(libc)的BSD派生实现,调整嵌入Linux基础设备
- Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
- 媒体库 - 基于PacketVideo的OpenCORE;本库支持回放和储存许多时新的音频和视频格式,以及静态图像文件,包括MPEG4,H.264,MP3,AAC, AMR,JPG和PNG格式
- Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
- 界面管理 - 管理多应用程序的分系统和2D、3D图形界面无缝混合
- LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
- LibWebCore - 一个现代的Web浏览器引擎,支持Android浏览器和嵌入式网页视图
- SGL - the underlying 2D graphics engine
- SGL - 底层2D图形引擎
- 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
- 3D库 - 一个基于OpenGL ES 1.0 APIs的实现;本库可使用硬件3D加速,或包括,高度优化的3D软件光栅加速
- FreeType - bitmap and vector font rendering
- FreeType - 位图及矢量字体渲染
- SQLite - a powerful and lightweight relational database engine available to all applications
- SQLite - 一个所有应用程序可用的功能强大且轻量级的数据库引擎
Android Runtime
Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.
Android包括一系列的核心库,提供大部分Java语言核心库的功能实现。
Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.
每个Android应用程序都运行在自身进程中,在Dalvik虚拟机种有着自己的实例。Dalvik已被编写为支持设备有效运行多个虚拟机。Dalvik虚拟机以Dalvik Executable (.dex)格式执行文件,是被优化为最小的内存占用。这个虚拟机是基于寄存器的,运行由Java语言编译器编译后的class文件,由包括"dx"的工具转换为.dex格式。
The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.
Dalvik依赖于Linux内核作为线程和低内存处理能力的底层实现。
Linux Kernel
Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.
Android依赖Linux 2.6版本实现内核系统服务,比如安全,内存处理,进程处理,网络堆栈和驱动模板。内核也扮演着硬件和其余软件堆栈之间的抽象层。