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. SpriteKit游戏开发 Challenge 2: An invincible zombie 问题的另一种解决方法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 该挑战的目的是僵尸碰到敌人时,将其设置为无敌模式,具体要求如下 ...

  2. 在电脑上安装Linux操作系统

    1硬件需求 A 一台电脑 B 一个优盘 2软件需求 A制作优盘启动盘的软件PowerISO BLinux操作系统的镜像文件 3安装PowerISO,并使用PowerISO A安装PowerISO B插 ...

  3. 第一个lucene程序,把一个信息写入到索引库中、根据关键词把对象从索引库中提取出来、lucene读写过程分析

    新建一个Java Project :LuceneTest 准备lucene的jar包,要加入的jar包至少有: 1)lucene-core-3.1.0.jar     (核心包) 2) lucene- ...

  4. 20 ViewPager Demo4自动轮播

    MainActivity.java 思想:才用非常大的数 让其看起来可以循环轮播图片并且用户可以从尽头滑到首图的特点 . package com.qf.day20_viewpager_demo4; i ...

  5. Swift基础之init方法,实例方法,类方法(静态方法)的使用(多标签Demo)

    Xcode更新过后,有些方法都进行了改变,Demo中有变化的都进行了简单的标记,具体以后遇见再说 创建一个UIView类,用init方法创建两种类型,显示多标签,创建静态方法进行调用,创建类方法进行调 ...

  6. 从二进制数据流中构造GDAL可以读取的图像数据(C#)

    在上一篇博客中,讲了一下使用GDAL从文件流中构造一个GDAL可以识别的数据来进行处理.原以为这个接口在C#中没有,仔细看了下GDAL库中源码,发现C#版本也有类似的函数,下面是GDAL库中的一个C# ...

  7. [django]添加自定义template filter标签

    看文档templatetag 直接放在app下的templatetag 文件夹下就好,这里想放到一个公共的目录下,然后写下简单的自定义tag的模板. django1.6 创建 在项目目录下建立如下的文 ...

  8. Java进阶(四十)Java类、变量、方法修饰符讲解

    Java进阶(四十)Java类.变量.方法修饰符讲解 Java类修饰符 abstract: 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final: 将一个类生命为最终(即非继承类) ...

  9. Oracle使用游标为所有用户表添加主键语句

    应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在I ...

  10. (一一〇)正则表达式的基本使用与RegexKitLite的使用

    正则表达式常常用于匹配关键字,下面先介绍基本语法. [基本语法] ①中括号表示满足其中之一即可,例如[abc],则这个位置可以是a.b.c中任意一个. ②在中括号中,可以通过-连接范围,例如a-z:多 ...