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. 用类模拟C风格的赋值+返回值

    这个方法比较好: class DataHolder: def __init__(self, value=None): self.value = value def set(self, value): ...

  2. 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

    Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法    获取Class类实例的方法:   类名.class   实例名.getClass()   Class.forNam ...

  3. Android 读取清单文件<meta-data>元素的数据

    添加属性 <application -- > <meta-data android:value="Channel_0" android:name="UM ...

  4. antlr v4 使用指南连载5——如何编写词法定义

    如何编写词法定义        继上一篇文章,相信大家都明了编写词法规则的两个基本原则.那么接下来就可以开始编写词法文件了.对于计算机科学来说,很多词法规则是一致的.如标识符.数字等,它们都可以重复在 ...

  5. python在windows下使用setuptools安装egg文件

    最近和同学做个东西,需要安装python的第三方函数库,看了网上的介绍,很是麻烦,这是我实践总结出来的,希望对大家有用. 以安装第三方库networkx 为例,其余函数库都是一个套路,看完就会滴. 1 ...

  6. 【一天一道LeetCode】#374. Guess Number Higher or Lower

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 We are ...

  7. iOS中 最新微信支付/最全的微信支付教程详解 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 亲们, 首先让我们来看一下微信支付的流程吧. 1. 注册微信开放平台,创建应用获取appid,appSecret, ...

  8. 深入剖析Tomcat类加载机制

    1JVM类加载机制 JVM的ClassLoader通过Parent属性定义父子关系,可以形成树状结构.其中引导类.扩展类.系统类三个加载器是JVM内置的. 它们的作用分别是: 1)引导类加载器:使用n ...

  9. 程序员高效Windows环境配置

            个人比较追求高效.效率.以下是我常用的windows配置希望对大家有帮助.(身为程序员,我特别喜欢mac pro的retina屏,在那编程简直是一种享受.等我买了mac pro在发一篇 ...

  10. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(五)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了暂时不影响原来的cat移动方法,我们在CatSprite.m ...