Android is a software stack for mobile devices that has des an operating system, middleware and key applications. the android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
Android is a software stack for mobile devices. Android includes an operating system, middleware, and a series of key applications. The android SDK uses JavaProgramming LanguageTools and APIs required for application development on the Android platform.
Features features
-
- Application FrameworkEnabling reuse and replacement of components
Application Framework: reusable and replaceable Components
-
- Dalvik Virtual MachineOptimized for mobile devices
Dalvik Virtual Machine: optimized for mobile devices
-
- Integrated BrowserBased on the open source WebKit Engine
Integrated Browser: based on open-source WebKit engine.
- Optimized graphicsPowered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
Optimized graphics: Custom 2D graphics library; 3D graphics based on OpenGL ES 1.0 specifications (optional hardware acceleration)
-
- SQLiteFor Structured Data Storage
SQLite: Structured Data Storage
-
- Media SupportFor common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, Amr, JPG, PNG, GIF)
Media Support: general audio, video, and image formats (MPEG4, H.264, MP3, AAC, Amr, JPG, PNG, GIF)
-
- GSM telephony(Hardware dependent)
GSM: (hardware-dependent)
-
- Bluetooth, edge, 3G, and WiFi(Hardware dependent)
-
- Camera, GPS, compass, and accelerometer(Hardware dependent)
Camera, GPS, compass, and accelerometer: (dependent on hardware)
- Rich Development EnvironmentIncluding a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE
Rich Development Environment: includes a device simulator, debugging tool, storage and performance introduction, and an Eclipse IDE plug-in.
Android Architecture
Android Architecture
The following dimo-shows the major components of the Android operating system. Each section is described in more detail below.
Shows the main components of the Android operating system. Each component is described in more detail below.
========================================================== ==========
ApplicationProgram
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 has a series of core applications, including email clients, SMS programs, calendars, maps, browsers, phone books, and others. All applications are written in Java programming language.
========================================================== ==========
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 configurications to the status bar, and much, much more.
By providing an open development platform, Android provides developers with the ability to build extremely rich and innovative applications. Developers are free to enjoy the advantages of hardware devices, access local information, run background services, set alerts, add notifications to the status bar, and more ......
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 mechanic allows components to be replaced by the user.
Developers can fully access the same framework APIs as the core application. The application architecture is designed to simplify Component Reuse. Any application can publish its functions, and other applications can also use these functions (security restrictions are enhanced by the Framework ). The same mechanism allows users to replace components.
Underlying all applications is a set of services and systems, including:
Under all applications, there are a series 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
A wide range of scalable views that can be used to create applications, including lists, grids, text boxs, buttons, and an embedded web browser.
- content providers that enable applications to access data from other applications (such as contacts), or to share their own data
content provider, enable applications to access data of other applications (such as phone books) or share their own data.
- A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
resource manager, provides the ability to access non- Code resources, such as localized strings, graphics, and layout files.
- A
notification manager
that enables all applications to display custom alerts in the status bar
notification manager, enables all applications to display custom notifications in the status bar.
- An
activity manager
that manages the lifecycle of applications and provides a common navigation backstack
the activity Manager manages the lifecycle of an application, and provides a general navigation background.
For more details and a walkthrough of an application, see the notepad tutorial.
For more details, and an application drill, please refer to the "Notepad tutorial ".
========================================================== ==========
Libraries library
Android uplodes a set of C/C ++ libraries used by varous 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 includes a collection of C/C ++ libraries, which are used by many components of the Android system. These functions are open to developers through the Android Application Framework. Some of the core libraries are as follows:
-
- System C library-A bsd-derived implementation of the standard C system library (libc), tuned for Embedded Linux-based devices
System C library-a standard C system implementation (libc) inherited from BSD, which is adjusted to a Linux-based embedded device.
- Media Libraries-Based on packetvideo's opencore; the libraries support playback and recording of audio popular audio and video formats, as well as static image files, including MPEG4, H. 264, MP3, AAC, Amr, JPG, and PNG
Media Library-Based on packetvideo's opencore; this library supports recording and playback of many popular audios/videos, and also supports static image files, including
MPEG4, H.264, MP3, AAC, Amr, JPG, and PNG
-
- Surface Manager-Manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
Surface Manager-manages the display subsystem and seamlessly combines 2D and 3D image layers of multiple applications.
-
- Libwebcore-A modern Web browser engine which powers both the android browser and an embeddable Web View
Libwebcore is a popular Web browser engine that supports both Android browsers and embedded web views.
-
- SGL-The underlying 2D graphics engine
SGL-underlying 2D image Engine
- 3D Libraries-An implementation based on OpenGL ES 1.0 APIS; the libraries use either hardware 3D acceleration (where available) or the specified ded, highly optimized 3D software Rasterizer
3D Libraries-- Based on an implementation of OpenGL ES 1.0 APIs, this library uses hardware 3D acceleration, or built-in highly optimized 3D software grating.
-
- FreeType-Bitmap and vector font rendering
FreeType-- Bitmap and vector font rendering
-
- SQLite-A powerful and lightweight relational database engine available to all applications
SQLite-- A powerful and lightweight relational database engine available to all applications.
========================================================== ========
Android runtime Runtime
Android codecdes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.
Android includes a collection of core libraries, which provide the vast majority of functions in the core library of the Java programming language.
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. dex format by the specified ded "dx" tool.
Every android application runs in her own process, which also belongs to an instance of a Dalvik virtual machine. Dalvik is designed to allow devices to run multiple virtual machines efficiently. The Dalvik virtual machine executes the Dalvik Executable File Format ending with. Dex, Which is optimized to the minimum memory usage. Virtual machines are register-based and run classes compiled by the Java programming language. These classes are converted to. Dex format by the built-in DX tool.
The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.
The Dalvik Virtual Machine relies on the Linux kernel to provide underlying functions, such as thread and low-level memory management.
========================================================== ========
Linux Kernel
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 alternative action layer between the hardware and the rest of the software stack.
Android relies on Linux 2.6 to provide core system services, such as security, storage management, process management, network stack, and driver models. The kernel also acts as an abstraction layer between the rest of the hardware and software stacks.
(Coming soon: Framework topic: Application basics)