Android群英传笔记——第一章:Android体系与系统架构


图片都是摘抄自网络

今天确实挺忙的,不过把第一章的笔记做一下还是可以的,嘿嘿

1.1 Google的生态圈

还是得从Android的起源说起,Android是一个以Linux为基础的开源移动设备操作系统,主要用于智能手机和平板电脑,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发中。Android已发布的最新版本为Android 6.0.1(M)。

Android系统最初由安迪·鲁宾(Andy Rubin)等人开发制作 ,最初开发这个系统的目的是创建一个数码相机的先进操作系统;但是后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统。於2005年8月被美国科技企业Google收购。2007年11月,Google与84家制造商、开发商及电信营运商成立开放手持设备联盟来共同研发改良Android系统,随後,Google以Apache免费开放原始码许可证的授权方式,发布了Android的原码,让生产商推出搭载Android的智能手机,Android後来更逐渐拓展到平板电脑及其他领域上。我们来看看Android的成长史;

大概就是一个这样子的情况了

1.2 Android系统架构

看到Android的系统架构,确实是很多人都会想到这样的一张图片

确实很形象的把Android的架构一览无余

Android分四层

  • Linux底层
  • 库和运行时
  • Framework层
  • 应用层

1.2.1 Linux

linux层,主要是一些驱动什么的,看图片(红色部分)就可以看出,什么相机驱动,蓝牙驱动什么的,这些事Android最底层最核心的部分,我们打开关于手机就可以看到内核版本,这就是我们使用的Linux内核版本,包含了Android的整个核心服务,驱动等。

1.2.2 Dalvik和ART

这两种都是运行环境的虚拟机,Dalvik是以前的,ART是Android 4.4(好像是)的时候发布的,因为Dalvik是应用运行的时候进行编译,而ART是全部编译完了再运行,效率要高很多

1.2.3 Framework

说起这Framework,那绝对是高端词汇了,你可以看上图的Android系统构架方面,Framework后基本上去统治者所有的管理器之类的啥啥啥,书中没有详细赘述,这里也就一笔带过了

1.2.4 Standard libraries

看Android的架构,libraries层中是一些标准的开发库

1.2.5 Application

Application可以说是一个大环境,他就是整个项目的意思,管理所有的东西,以后再说。

1.3Android App组件架构

这个也是面试中经常问到的四大金刚,Android中的四大组件,Activity,Service,BroadCastReceiver,Contentprovider,这些也是组成一个APP最基本的东西

1.3.1 Android四大组建是如何协同工作

主要还是看应用场景,但是也是各自都是相互有些许联系的,Activity负责界面,展示数据,数据的来源可以通过资源获取,Contentprovider也可以获取其他应用的信息,还有一个不需要用户看到的操作可以用Service来处理,而且Android系统在执行某种特定的操作的时候回发出一个广播出来,我们可以用BroadCastReceiver去接收,他们之间的信息联动靠的是Intent这个信使,是一样四大组件的运行即是独立也有紧密的联系

1.3.2 应用运行上下文对象

上下文我们经常接触到,具体的也可以去看一下郭霖的Android Context完全解析,你所不知道的Context的各种细节,其实就是这个运行环境的意思,activity,service,application都是继承context,不难发现,当我们程序第一次运行并且创建application的时候,同时也创建了一个application context,他就掌握着全局的动向,而现在创建activity和service的时候,我们就已经实例了context对象,这就意味着可以直接使用this了,而在非context运行环境下,就需要xxxx.this了

1.4 Android系统源代码目录

Android的源代码包含了许多东西,大牛也都是直接看源码分析原理的,我们今天先来看下源代码的结构

1.4.1 Android系统源代码目录

想要看懂Android的源代码其实还是有些费劲的,因为应用层用的是JAV,而底层还是用C,你还要懂脚本,还要动软硬交互,而且源代码很多,实在是多,你要慢慢看,慢慢看,但是我们其实只要知道哪些在什么结构就行,什么地方有问题我们可以找到并且说出个所以然来就差不多了,这里也提供了一个查看源代码的网站:

Android源代码:http://androidxref.com/

具体的有时间的同学可以慢慢研究,但是要注意,这个目录结构也只有给予AOSP的Android项目才是,其他厂商,比如MTK就不是,而Android作为手机操作系统,我们需要把他编译后才能使用,这里我们就不能使用AS,Eclipse之类的开发IDE了,这里它使用的是一种Mackfile机制

Mackfile解析:一个像Android这样大的工程,源码肯定是有很多的,而且种类更是繁多,这些文件都是由一个叫做Mackfile的文件来管理的,他有自己的规则来归类这些信息,比如编译规则,打包规则,所以Mackfile就像一个shell脚本,不仅可以使用自己的语法,而且可以调用操作系统的命令

Mackfile确实很强大,最大的好处是这货还能自动化编译,所以机制形成了,编译也就有条不紊 的进行着了

做过framework层开发的应该知道,要是没有Mackfile机制,你的电脑配置再好,都要花费很长的时间去编译源码

1.4.2 Android系统目录

Android的手机和其他手机的目录也是不同的,在

system/app里放着的使我们系统的应用

system/bin放着Linux自带的一些组件

system/build.prop 清单文件,记录着各种各样的信息

system/fonts 字体

system/framework 系统的核心文件,框架层

system/lib 存放一些共享库

system/media 铃声之类的声音文件

system/usr 保存用户的数据

data/app 用户安装的app

data/data 应用数据

data/system 各项手机信息

data/misc 保存着wifi vpn等信息

已经连接的wifi密码也是在这里看到的

1.4.3 Android APP文件目录

我们可以新建一个程序看看我们的Android程序目录是什么样的

这里就不再描述每个文件具体的含义了,相信大家都知道!

笔记下载:链接:http://pan.baidu.com/s/1c0U7k2W 密码:9v0g

Android群英传笔记——第一章:Android体系与系统架构的更多相关文章

  1. Android群英传笔记——第九章:Android系统信息和安全机制

    Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个 ...

  2. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

  3. Android群英传笔记——第六章:Android绘图机制与处理技巧

    Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...

  4. Android群英传笔记——第五章:Android Scroll分析

    Android群英传笔记--第五章:Android Scroll分析 滑动事件算是Android比较常用的效果了,而且滑动事件他本身也是有许多的知识点,今天,我们就一起来耍耍Scroll吧 一.滑动效 ...

  5. Android群英传笔记——第七章:Android动画机制和使用技巧

    Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中 ...

  6. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

  7. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  8. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...

  9. Android群英传笔记——摘要,概述,新的出发点,温故而知新,可以为师矣!

    Android群英传笔记--摘要,概述,新的出发点,温故而知新,可以为师矣! 当工作的越久,就越感到力不从心了,基础和理解才是最重要的,所以买了两本书,医生的<Android群英传>和主席 ...

随机推荐

  1. TortoiseSVN使用

    TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费. TortoiseSVN是 Subversion 的 Windows 扩展.它使你避免接触 Subv ...

  2. 使用jQuery AJAX读取二进制数据

    READING BINARY DATA USING JQUERY AJAX http://www.henryalgus.com/reading-binary-files-using-jquery-aj ...

  3. Dynamics CRM2013/2015 检索实体属性的两种方式

    昨天有朋友问起如何查询一个字段属性是否存在于某个实体中,一般这个问题我们会采取最直观的查询方式即MetadataBrowser,该工具是一个zip解决方案包在SDK中的如下目录内"\SDK\ ...

  4. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 package com.xsf.SordF ...

  5. 剑指Offer——银行网申内容模版

    剑指Offer--银行网申内容模版 年获得"优秀共青团员"称号 2013.12 科技标兵 2013.10 三好学生 2013.10 "三下乡"优秀学生 2013 ...

  6. 13常用sql语句

    创建语句 CREATE table if not exists b(id INTEGER PRIMARY KEY AUTOINCREMENT,waijian int ,FOREIGN KEY (wai ...

  7. [ExtJS5学习笔记]第二十一节 Extjs5中使用config配置给ext.widget或者create方法传递参数

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39252805 官方例子:http://docs.sencha.com/extjs/5. ...

  8. Linux2.6--Linus电梯

          内核为了处理来自IO层的请求,需要进行相应的优化,因为当请求很多时,且请求的块又都几种在一块,那么如果按照顺序处理这些请求无疑是很大的时间开销,所以,我们需要寻求方法来处理这种情况(当然, ...

  9. 剑指Offer——二叉树

    剑指Offer--二叉树 前言 数据结构通常是编程面试中考察的重点.在参加面试之前,应聘者需要熟练掌握链表.树.栈.队列和哈希表等数据结构,以及它们的操作.本片博文主要讲解二叉树操作的相关知识,主要包 ...

  10. 控制成本,控制成本知识点,挣值和实际成本、EAC,ETC.TCPI解析表