写此本文是为了对Android系统框架有一个整体的认识和了解,对于开发和测试人员脑子里要有整体认识以便对工作有所帮助。

进入正题

首先Android系统架构采用了分层架构的思想,共分为四层由上到下分:应用程序程序层、应用框架层、系统库和Android运行时、Linux内核

便于大家了解如图所示及分层说明

每层功能简要说明

一、APPLACTIONS应用程序层

该层提供了一些核心应用程序包,用来存放应用程序,主界面、联系人、电话、浏览器、日历等

二、APPLANCTION FRAMEWORK应用程序框架层

用来支持应用层中的程序的运行,包括 Activity Manager活动管理、Window Manager窗口管理、Content Providers内容提供者、View System视图系统、Notification Manager通知管理、Package Manager包管理、Telephony Manager电话管理、Resource Manager 资源管理、Location Manager位置管理器、XMPP Services XMPP服务一共十个部分

XMPP((Extensible Messaging and Presence Protocol,前称Jabber)是一种以XML为基础的开放式实时通信协议,XMPP网络是基于服务器的(即客户端之间彼此不直接交谈),但是也是分散式的。不像AOL实时通或MSN Messenger等服务,XMPP没有中央官方服务器。Jabber.org的公众服务器上有大量的用户,所以有些人误解了,以为它是官方服务器,不过事实上任何人都可以在自己的域名上运行XMPP服务器。

Jabber识别符(JID)是用户登录时所使用的账号,看起来通常像一个电子邮件地址,如someone@example.com;前半部分为用户名,后半部分为XMPP服务器域名,两个字段以@符号区隔。

假设朱丽叶(juliet@capulet.com)想和罗密欧(romeo@montague.net)通话,他们两人的账号分别在Capulet.com及Montague.net的服务器上。当朱丽叶输入信息并按下发送钮之后,一连串的事件就发生了:

  1. 朱丽叶的XMPP客户端将她的信息发送到Capulet.com XMPP服务器。
  2. Capulet.com XMPP服务器打开与Montague.net XMPP服务器的连接。
  3. Montague.net XMPP服务器将信息寄送给罗密欧。如果他目前不在在线,那么存储信息以待稍后寄送。

三、

(1)LABRARIES系统库

系统库包括九个子系统,分别是Surface Manager图层管理、Media Manager媒体管理、SQLite小型数据库、OpenGLESate开放图形库用来支持3D效果、FreeType位图和矢量、WebKit浏览器内核、SGL 2D图形引擎库、SSL为数据通信提供支持、libc C语言的函数库

(2)ANDROID RUNTIME安卓运行环境

core Labraries安卓开发核心库、DaLvik Virtual Machine Dalvik虚拟机

前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.net、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。--SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中;OpenGL-开放图形库(英语:Open Graphics Library,缩写为 OpenGL)是个定义了一个跨编程语言、跨平台的应用程序接口(API)的规范,它用于生成二维、三维图像。

四、Linux Kernel 内核

提供各种驱动程序 Display Driver 显示驱动、Camra Driver 相机驱动、Bluetooth Driver 蓝牙驱动、Flash Memory Driver 内存驱动、Binder (pc)Driver 进程驱动、USB Driver、Audio Driver 音频驱动、Power Managemnet 电源管理、WIFI Driver 无线驱动、Keypad Driver 键盘驱动

总结:

1.     应用层:应用是用java语言编写的运行在虚拟机上的程序,比如Email客户端,SMS短消息程序,日历等。

2.     应用框架层:这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的结构设计,但是必须要遵守其框架的开发原则。

3.     系统运行库(C/C++库以及Android运行库)层:当使用Android应用框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件,使其更好的为我们服务,比如其中的SQLite(关系数据库),Webkit(Web浏览器引擎)。

4.     Linux内核层:Android的核心系统服务给予Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核,比如Binder IPC(Internet Process Connection进程间通信)驱动,android的一个特殊驱动程序,具有单独的设备节点,提供进程间通信的功能。

Android的系统架构采用分层架构的思想,架构清晰,层次分明,协同工作

Android的系统架构不仅从宏观上认识了Android系统,同时,也给我们的学习与实践指明了方向。若是从事Android应用开发,那应该研究Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事Android驱动开发,那应该研究Android的Linux内核。总之,找准切入点,实践出真知  

Android系统框架构的更多相关文章

  1. Android系统四层架构分享

    Android系统四层架构 个人网站:http://www.51pansou.com Android视频下载:Android视频 Android源码下载:Android源码 如果把Android系统看 ...

  2. Android系统的架构

    android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 1.应用程序 Andr ...

  3. 【安卓面试题】简述一下Android系统的架构?

    安卓系统的架构分为四层:应用程序层,应用框架层,系统框架层和内核层. 应用程序层:开发者编写的供用户使用的应用 应用框架层:开发者构建应用程序可能用到的API, 例如ActivityManager 系 ...

  4. Android系统架构及内核简介

    (来源于ThinkPHP) Android是Google公司开发的基于Linux平台的开源手机操作系统,它包括操作系统.中间件.用户界面和应用程序,而且不存在任何以往阻碍移 动产业创新的专利权障碍,并 ...

  5. 【译】Android系统架构

    让我们来快速预览一下整个android系统的架构.从下面的图中我们可以发现,这个架构分为几个不同的层,底层为上一层提供服务.  Linux Kernel android系统建立在一个坚固的基石上:Li ...

  6. 【转】Android系统概览

    这篇文章其实原文叫 <老罗的Android之旅>导读PPT 是罗升阳的博客,我觉得用“Android系统概览”作为标题更贴切些,对于在应用层已经开发了一段时间的人来说,读完之后会有很多体会 ...

  7. Android接口与架构(驱动开发)翻译官方文档

    Android接口与架构 Android在设备的规格与驱动方面给了你很大的自由来实现.HAL层提供了一个标准的方式来打通Android系统层与硬件层.Android系统是开源的,所以你能够在接口和性能 ...

  8. Android系统源码学习步骤

    Android系统是基于Linux内核来开发的,在分析它在运行时库层的源代码时,我们会经常碰到诸如管道(pipe).套接字(socket)和虚拟文件系统(VFS)等知识. 此外,Android系统还在 ...

  9. Android系统源代码学习步骤

    目前,互联网行业正在朝着移动互联网方向强劲地发展,而移动互联网的发展离不开背后的移动平台的支撑.众所周知,如今在移动平台市场上,苹果的iOS.谷歌的Android和微软的Windows Phone系统 ...

随机推荐

  1. Linux开发环境工具收集

    zsh & oh-my-zsh 配置oh-my-zsh之前要先安装Git sudo apt-get install zsh sudo apt-get install git wget http ...

  2. POJ1331 Multiply(strtol函数练习)

    题目链接:http://poj.org/problem?id=1331 主要介绍strtol函数: long int strtol(const char *nptr,char **endptr,int ...

  3. LeetCode-4. 两个排序数组的中位数(详解)

    链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/description/ 有两个大小为 m 和 n 的排序数组 nums ...

  4. Python开发简单爬虫(二)---爬取百度百科页面数据

    一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格 ...

  5. C语言博客作业--一二维数组。

    一.PTA实验作业 题目1:7-1 将数组中的数逆序存放 1. 本题PTA提交列表 2. 设计思路 定义三个整型变量n用来存放整数个数i,j是循环数 scanf("%d",& ...

  6. 一些琐碎的C/C++知识点

    1. C++ 数组作为函数参数 在C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针.(在32位系统中,对任意指针求sizeof结果为4) 2. C++ 中const的用法总结 ...

  7. Python2.x的编码问题

    1. 计算机编码历史 ASCII Python的默认编码,其是一种单字节的编码.刚开始计算机世界里只有英文,而单字节可以表示256个不同的字符.最开始ASCII只定义了128个字符编码,包括96个文字 ...

  8. Beta敏捷冲刺每日报告——Day3

    1.情况简述 Beta阶段Scrum Meeting 敏捷开发起止时间 2017.11.4 00:00 -- 2017.11.5 00:00 讨论时间地点 2017.11.4 晚9:30,电话会议会议 ...

  9. Python打包分发工具setuptools

    作为Python标准的打包及分发工具,setuptools可以说相当地简单易用.它会随着Python一起安装在你的机器上.你只需写一个简短的setup.py安装文件,就可以将你的Python应用打包 ...

  10. 从PRISM开始学WPF(四)Prism-Module?

    从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WPF(三)Prism-Region? 从PRISM开始学WPF(四)Prism-Module? ...