Android群英传笔记——第一章:Android体系与系统架构
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体系与系统架构的更多相关文章
- Android群英传笔记——第九章:Android系统信息和安全机制
Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个 ...
- Android群英传笔记——第二章:Android开发工具新接触
Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...
- Android群英传笔记——第六章:Android绘图机制与处理技巧
Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...
- Android群英传笔记——第五章:Android Scroll分析
Android群英传笔记--第五章:Android Scroll分析 滑动事件算是Android比较常用的效果了,而且滑动事件他本身也是有许多的知识点,今天,我们就一起来耍耍Scroll吧 一.滑动效 ...
- Android群英传笔记——第七章:Android动画机制和使用技巧
Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中 ...
- Android群英传笔记——第三章:Android控件架构与自定义控件讲解
Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- Android群英传笔记——第四章:ListView使用技巧
Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...
- Android群英传笔记——摘要,概述,新的出发点,温故而知新,可以为师矣!
Android群英传笔记--摘要,概述,新的出发点,温故而知新,可以为师矣! 当工作的越久,就越感到力不从心了,基础和理解才是最重要的,所以买了两本书,医生的<Android群英传>和主席 ...
随机推荐
- 查看4k对齐,激活.net framework 3.5
查看是否4k对齐 Win+R,打开运行窗口,在窗口中输入“msinfo32",组件”--“存储”--“磁盘”.然后可以在右边栏看到“分区起始偏移”,我们图例中有2个数值,分别是:32256字 ...
- C++ 中const作用
一.对const与#define的特点及区别的理解 #define只是用来做文本替换的,#define常量的生命周期止于编译期,它存在于程序的代码段,在实际程序中它只是一个常数,一个命令中的参数,并没 ...
- Effective C++ ——构造/析构/赋值运算符
条款五:了解C++默认编写并调用那些函数 是否存在空的类? 假设定义类为class Empty{}:当C++编译器处理过后会变成如下的形式: class Empty{ Empty(){} ~Empty ...
- Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》
本篇介绍Listview的显示,对于listview有许多的适配器,如ArrayAdapter,BaseAdapter,SimpleAdapter等等.本篇先热身一下,介绍最简单的SimpleAdap ...
- JVM的GC(概念与深入)
深入浅出了解什么是GC: http://my.oschina.net/xianggao/blog/86985 GC策略详解: http://blog.csdn.net/winniepu/article ...
- MySQL聚簇索引的使用介绍
MySQL聚簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建立聚簇索引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只能有一个聚簇索引.因为由存储引擎实现索引,所 ...
- UNIX网络编程——UDP缺乏流量控制(改进版)
现在我们查看无任何流量控制的UDP对数据报传输的影响.首先我们把dg_cli函数修改为发送固定数目的数据报,并不再从标准输入读.如下,它写2000个1400字节大小的UDP数据报给服务器. 客户端程序 ...
- JPA(三)之实体关系一对多(多对一)
1.背景介绍: 对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系. 2.实体bean: Order.java代码 ? 1 2 3 4 5 6 7 ...
- 用 Freemarker 生成 word 文档
阅读目录 添加图片 自定义载入模板 1. 用word写一个需要导出的word模板,然后存为xml格式. 2. 将xml中需要动态修改内容的地方,换成freemarker的 ...
- 【unix网络编程第三版】阅读笔记(二):套接字编程简介
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这 ...