zoukankan      html  css  js  c++  java
  • 《Android Dev Guide》系列教程1:什么是Android?

    Android是一个移动设备的软件集,他包括一个操作系统、中间件,和一些重要的应用程序。AndroidSDK提供了Android开发平台的必要的工具和APIs,他使用Java编程语言。

    特点:

    应用程序框架:支持组件的重用和替换。

    Dalvik虚拟机:转为移动设备优化的虚拟机。

    集成的浏览器:基于开源浏览器WebKit引擎。

    优化的图形图像处理:采用定制的2D图形库,基于OpenGL ES1.0规范,可选的硬件加速。

    SQLite:结构化的数据存储。

    媒体支持:支持厂家爱呢的音频视频,如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF。

    GSM技术:硬件依赖。

    蓝牙、EDGE网络、3G、WIFI:硬件依赖。

    拍照、导航、指南针、加速度计:硬件依赖。

    丰富的开发环境:包括一个虚拟器、调试工具、内存和性能分析、Eclipse插件。

    Android 系统结构:

    下面那张图表显示了Android操作系统的主要部件,每一部分将会详细讲解

    应用程序

    Android 将会有一些核心的应用,比如邮件客户端、SMS程序、计算器、地图、浏览器、联系人等等。所有的应用程序都用Java语言开发。

    应用层

    通过提供一个开源的平台,Android可以让开发者自由的开发丰富、创新的应用程序。开发者可以免费利用设备的硬件,访问本地信息、启动后台服务、设置闹铃、给状态栏增加提醒功能,等等灰常多的应用。

    开发人员通过核心应用程序,可以完全访问同一框架的APIs。(?)[开发者对于框架APIs的访问有与核心程序同样的权限(楼下whyou指正,表示感谢)]结构化的应用框架为了提高组件的客服用性而设计。任何程序都可以公布他的功能让其他程序来调用(在框架许可的前提下)。相同的机制允许用户替换掉某些功能。

    和所有程序相关的是一些服务和系统,包括:

    一些丰富的可扩展视图:可以用来构造应用程序,包括列表、表格、输入框、按钮、可以写内置的浏览器。

    内容提供:可以让程序访问其他程序的数据,例如联系人列表,或者共享自己的数据。

    资源管理器:提供访问非代码的资源的方法,例如本地化的一些字符串、图像、布局文件。

    一个提示管理器:可以让程序在状态栏显示自定义的提示信息。

    一个Activity管理器:管理activity的生命周期并且提供一个公共的导航功能。

    更多详细信息可以通过一个例子来学习:参考 Noteoad Tutorial。

    Libraries:

    Android包含了一些系统各个部分使用到的C/C++库,通过Android应用程序程序框架,这些功能对于开发者来说是公开的,部分核心库如下:

    系统C库:一个继承自BSD的标准C系统库,专门为了嵌入式Linux设为。

    多媒体库:基于 PacketVideo's OpenCORE库,支持播放和录制一些主流的音频视频格式,像静态图片文件,包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG格式。

    Surface Manager(图形管理器):管理显示子系统,在多个应用程序里无缝综合2D和3D图层。

    LibWebCore:一个流行的web浏览器引擎,供Android浏览器和内置的浏览view使用。

    SGL:一个底层的2D图像引擎。

    3D库:基于OpenGL ES 1.0 的3D图像引擎。包括硬件加速和优化过的3D软件加速。

    FreeType:位图和矢量字体的渲染(rendering)。

    SQLite:一个强大的轻量级的数据库引擎对所有程序提供使用。

    Android 运行时库:

    Android包含了Java语言的大部分的核心库。

    每一个Android应用程序运行在自己的线程里,有自己的dalvik虚拟机实例,Dalvik虚拟机被重写用来支持在一个移动设备上支持多个虚拟机。Dalvik虚拟机执行文件(.dex)被优化的内存占用很小。VM是基于寄存器,并且通过Java语言编译器运行由class文件转换的.dex文件,通过内置的dx工具。

    Dalvik虚拟机依赖Linux核心,来管理线程和底层的内存管理。

    Linux kernel:

    Android 依赖Linux2.6内核作为核心系统服务,像安全、内存管理、进程管理、网络堆、驱动模型。Kernel扮演者一个软硬件之间的抽象层的角色。

    码在最后:

    终于磕磕绊绊的翻译了一篇,太晦涩了,lazybone对不住各位看客。

  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/lancidie/p/3112976.html
Copyright © 2011-2022 走看看