【译】Android系统简介

简介 

本文主要介绍Android的基础知识和体系结构,本文主题:

  • 简介什么是Android,为什么开发者需要关注Android;
  • Android体系结构(如Linux Kernel, Libraries, Android Runtime, Application Framework, Applications)和构建Android应用的主要组件(Activities, Services, Broadcast Receivers, Content Providers);
  • 扩展:Intent和Fragement;

背景

  • 最好对JAVA开发有所了解;
  • Android开发环境;(另一翻译文章)

Android简介

Android是基于linux内核为智能手机和平板设计的操作系统。Android最初是由Andy Robin在二十一世纪初创建,后被Google收购,并在2005年被命名Android。Android被“开放手机联盟”所属,由Google维护。

Android最大的优势是其开源,目前有大量的设备支持Android系统,而且已经构造了Android生态系统。

第一款Android手机G1是由HTC生产,Google的android团队在同期也发布了Android SDK 1.0版本。Android版本历史:

 Android和其他移动平台

下图是Android系统和其他移动平台的简介:

下面是些为什么选择Android的原因(译者没有好的词汇,此处保留原词汇):

  • Multiple devices
  • Screen size
  • Widgets
  • Changeable keyboard
  • Deep cross-app integration
  • Better User Interface
  • Cloud-connected experience
  • Price points
  • Customization
  • Live wallpapers
  • Custom launchers
  • Custom ROMs
  • Speed of improvement

为什么开发者需要关心Android系统或应用的开发?

Android成长的非常迅速,由于Android开源,开发者可以深入了解android相关API的设计和使用,并有机会为android社区做贡献。

同时开发者也可使用开源的工具来构建Android应用程序;当前,Android系统已经广泛应用于手机,平板电脑,电视,手表和汽车等领域;因此,这对于开发者来说,Android有一个宽广的市场。

Android体系结构

 Linux Kernel

Android系统在底层是依赖于Linux 2.6内核来进行安全管理、内存管理、进程管理、网络管理和驱动模型管理。Linux Kernel层由各种驱动组成,如摄像头,WiFi和视频等。

尽管Android底层使用Linux Kernel,但也不是完全使用,Android也针对性的在原有内核基础上进行了一些封装或修改。

Android Libraries

以下是Android Libraries层封装的主要模块:

  • FreeType - 一个高质量的字体引擎,支持位图和向量格式;
  • SGL - 2D图形渲染引擎的核心库;
  • Libc - 基于Linux 嵌入式开发优化过的C标准库;
  • SQLite - 轻量级的关系数据库;
  • SSL - 网络通信的安全协议;
  • OpenGL ES - 3D图形渲染引擎;
  • WebKit - 浏览器内核;

以下是Android设备提供的核心API包:

  • android.view - 包含核心的用户界面接口的视图包(view package);
  • android.widget - 所有的widget都是基于view package进行封装的,提供统一的UI元素如按钮,列表等可供开发者重复使用;
  • android.os - 由操作系统包(operating system package)组成,主要用来调试应用程序、跟踪应用、消息机器、控制设备的电源状态和提供管理系统进程的工具等;
  • android.util - android的工具包(util package)主要由一些基础的工具类组成,如:字符串格式,读写josn数据,XML解析,时间处理和事件日志(event log)的读取等;
  • android.graphics - android图形接口由一些基础的图形类组成,如:canvas, colors, drawing primitives等;
  • android.text - android text包主要包含用来出来文本的工具;
  • android.database - 主要包含一些数据库的工具类;SQLite是android默认使用的数据库,android使用SQLite来存储一些私有数据;此包也包含一些出来content provider的工具类;
  • android.content - android content由一些在设备上读取和发布数据的类组成;同时也提供一些资源管理,content share和包管理(package management)的服务;
  • com.google.android.maps - 提供google maps的控件和API;
  • android.app - 提供读取Application Model;主要包含Activities和Service APIs;
  • android.provider - 提供访问标准content provider,如:日历,媒体和联系人等;可以使用provider package提供的一些类来从conteng provider里添加或移除预定义的数据;
  • android.telephony - Telephony APIs主要提供管理电话通讯的一些API,如:打电话,管理电话状态和发信息等;
  • android.webkit - 提供Web相关的一些APIs。比如WebView 控件可以在activity里面嵌入浏览器和cookie管理;
  • android.security - 处理安全子系统;
  • android.network - 处理网络访问;

Android Runtime

Android应用程序及其Application Framework几乎都是使用JAVA来开发的。不同于JVM虚拟机,Android使用的是另一运行时虚拟机Dalvik。

Dalvik和JVM关键区别在于Dalvik是基于寄存器(register)的,而JVM是基于堆栈(statck)的;Dalvik是为了在小内存和低CPU设备上运行而设计,同时也考虑多个应用程序同时运行时的效率;

(注意: Dalvik使用底层的linux kernel来管理内存和线程)

在Android 4.4中,引入了新的虚拟机ART(android run time),ART在APP安装的时候把APP编译成本地代码(native code)。ART可以大幅的提高程序的运行效率,因为不需要APP在每次运行时JIT做just in time compilation。

(注意: 使用ART在安装的时候耗时比Dalvik要长,但其带来的好处是显而易见的)

ART的主要特色:

  • 提前编译(Ahead of Time (AOT) compilation),新的运行时ART引入了新的编译机制,在程序安装的时候将程序翻译成本地代码,这可以大幅的提高程序的运行效率,因为没有必要在每次APP运行时做Just in Time Compilation;但在安装的时候会很耗时,不过,这也仅此一次;ART使用dex2oat工具在设备上编译应用程序,dex2oat接收.dex作为输入, 编译生成机器可执行的代码。
  • 改进了垃圾回收机制(garbage collection),Dalvik在垃圾回收的时候有两次暂停并且耗时10毫秒;ART有一次暂停并且耗时只需2毫秒;ART中Full GC也是在手机锁屏之后再进行的;ART使用了全新的memory allocator: Rosalloc.

 Application Framework

Application Framework提供了各种开发Android App的APIs。这一层有很多文档可以去了解,而且推荐开发者去深入了解,这样,才容易创建出很多有创新性的和很好的应用。

Android提供了一个开发的开发环境,开发者可以免费使用这些APIs,比如后台运行服务,通知,读取位置信息等。

  • Activity Manager - 是一个非常重要的组件,用来管理应用程序的生命周期;
  • Content Provider - 管理不同应用间的数据共享;
  • Location Manager - 管理位置信息,GPS和手机基站;
  • Package Manager - 持续跟踪已安装的应用程序;
  • Telephony Manager - 管理设备上的手机通讯服务;
  • Resource Manager - 管理应用程序使用各种资源;
  • Notification Manager - 管理在状态栏上显示自定义的提示信息;

Applications

Applications是android体系结构最顶层的一层,我们所开发的应用程序大都是在这一层,而且是使用JAVA开发;下面是这层默认有的一些层序:

  • Web Browser
  • SMS Client
  • Dialer
  • Contact Manager

PS:花了大半天的时间,断断续续才翻译了这么多。原文实在是有点长,这里先到此为止,后面再续一篇。

备注: 

1. 本文在翻译过程中有所删减;

2. 关键词汇没有翻译,一面混淆理解;

3. 原文:http://www.codeproject.com/Articles/802449/Article

本文版本历史:

初始版  2014.08.31

时间: 2024-08-28 18:53:33

【译】Android系统简介的相关文章

【译】Android系统简介—— Activity

续上一篇,继续介绍Android系统.上一篇: [译]Android系统简介 本文主要介绍构建Android应用的一些主要概念: Activity Activity是应用程序中一个单独的有UI的页面(screen),例如:在email应用中,会有一个activity用来显示email的列表,还有activity用来显示具体的email.通常来说,只要有用户交互的应用,就会包含至少一个activity. 一个应用可以包含多个activity,每个activity之间可通过intent进行交互,关于

Android系统简介(上):历史渊源

上个月,看到微信的一系列文章,讲到Linux的鼻祖-李纳斯的传记<Just for Fun>, 其人神乎其能, 其人生过程非常有趣,值得每个程序员细细品味. 而实际上,对我而已,虽然做软件开发很多年,但是对Linux非常不熟悉,仅仅听过几个名词而已. 没有用过Linux? 几乎不可能,全球智能手机中80%运行的是Android系统,只要你用过Android手机,则已经间接用过了Linux了,因为他们有很深的渊源和故事.下面分3篇对Android历史.架构.原理做简述,以供大家餐食. Andro

Android系统简介(中):系统架构

Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries  & Android Runtime.Linux  Kernel.每层提供不同的Service功能以供上层调用. 一:Linux Kernel(Linux 内核): 位于Android系统架构栈的底部,整个Android系统基于该层,最新的Android Kitkat 4.4基于Linux Kernel 3.8构建的.它提供的硬件设备抽象接口,以供其他架构层

Android系统简介

今天看到了一个介绍android的很不错的文章 ,转载到我的博客园里. 原文地址 http://www.cnblogs.com/cr330326/p/4229026.html 这篇的主题是”什么是Android“,关于Android的内容,从以下几点来介绍: Android系统架构 Andorid已发布的版本 Android应用特色 Android开发环境 Android程序结构 Logcat工具 Hello World 1,Android系统架构 有图有真相: 这是Android系统架构图,够

&quot;浅谈Android&quot;第一篇:Android系统简介

近来,看了一本书,名字叫做<第一行代码>,是CSDN一名博主写的,一本Android入门级的书,比较适合新手.看了书之后,有感而发,想来进行Android开发已经有一年多了,但欠缺系统化的学习,知识杂乱无章,没有条理和总结.因此,想想我是否可以尝试的写些文章,来对自己之前学过的知识和工作经验进行归纳和整理,整理出自己的知识体系呢.所以,就有这篇文章的诞生,如果其中理解不到位的地方,望园里的兄弟姐妹给予指出错误,我们共同讨论,一起进步.我一直相信一句话,好东西要分享,不断地分享,直至温暖整个世界

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

【Android 系统开发】 Android 系统启动流程简介

Android 系统启动总结 : Android 系统启动分底层 Linux 内核启动 和 应用系统启动; -- 底层系统启动 : 系统上电, bootloader 启动, linux kernel 启动, init 进程启动; -- 应用系统启动 : init 进程启动关键的进程如 Zygote 进程 和 System Server 等系统服务, 之后进入 Home 界面; 一. Android 底层系统启动流程(Bootloader Kernel init) 1. 系统上电 执行 ROM 引

Android的基本世界观——系统简介,组件逻辑及其他

前言 作为一个有半年余Android Developing折腾经验的Android Developer(为什么不说"开发经验"呢?因为我仔细想了想,我还没有独立地做出一个完善美观且有使用价值的应用.),要系统地学习安卓平台的基本开发技能,那么第一步,了解并熟识Android的基本世界观,应该就是十分必要的了.以前这方面的知识体系不成系统,比较破碎零散,故借此文稍作整理. 我认为在进入任何一个比较复杂的知识技能体系之前,都需要先用基本世界观来热热身.对于高中物理而言,初中数学物理知识就形

Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)

目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本来看其中主要涉及的语法. 1.assert(condition):如果condition参数的计算结果为False,则停止脚本执行,否则继续执行脚本. 2.show_progress(frac,sec):frac表示进度完成的数值,sec表示整个过程的总秒数.主要用与显示UI上的进度条. 3.for