课(ke)程咨(zi)询: 400-996-5531 / 投诉(su)建议: 400-111-8989
认真做教(jiao)育 专心促就业
提及“设计,android架构(gou)图(tu)”,先从谷歌公开的体系(xi)结构(gou)图(tu)上开始吧,本(ben)着(zhe)拿来(lai)主义的原则(ze),直接(jie)贴图(tu)。开始就从了解体系(xi)架构(gou)入手吧。
从(cong)图上可以看出一共有四层结构,从(cong)下(xia)到上分(fen)别为:
1-----Linux 内核层
2-----中间件层
3-----应用(yong)程(cheng)序框架层
4-----应用程(cheng)序(xu)层
谷歌公开的体系结(jie)构图
下面咱们依次分层细谈吧(ba)(ba),先把(ba)模块打散,然(ran)后再组装吧(ba)(ba),自(zi)己(ji)画的,虽然(ran)丑点吧(ba)(ba),毕竟是(shi)自(zi)己(ji)的,ok,就这(zhei)(zhei)样了,这(zhei)(zhei)玩意(yi)也(ye)没有必要,也(ye)不(bu)必过(guo)下美图(tu)秀秀。
一、系统分层架构图,简化版的
二、Linux内(nei)核(he)层
1--------------------
从下到(dao)上(shang)(shang)来吧,Android 核(he)(he)心内核(he)(he)使用(yong)(yong)了Linux 2.6的(de)内核(he)(he),为了便于商用(yong)(yong),那帮家伙将Linux中的(de)GUN协议(yi)部分进行取代。里面集成了调用(yong)(yong)实体设备的(de)驱动程序,用(yong)(yong)来驱动真实实体设备。并暴漏接口调用(yong)(yong)给上(shang)(shang)一(yi)层,即中间件层。
三、中间件层
2--------------------
中间件层(ceng)--从体系架(jia)构图中可(ke)以(yi)看出(chu),该层(ceng)主要的功能(neng)分成了两(liang)块:运行库和运行时。并封(feng)装(zhuang)了相应的接(jie)口调用给应用程(cheng)序框架(jia)层(ceng)
=================运(yun)行库
系统(tong)运行库层:当我们(men)使(shi)用Android应用框架时(shi),Android系统(tong)会通过一些(xie)C/C++库,来支持对我们(men)使(shi)用的各个组件,使(shi)其能更好滴为开发者服务,比(bi)如里面(mian)列(lie)举一些(xie)主要的库:
①---Bionic系(xi)统C库-----C语言标(biao)准库,系(xi)统最底层的库,C库通过Linux系(xi)统来调用;
②---多(duo)媒体库(ku)(ku)(MedioFrameword)-----Android系统多(duo)媒体库(ku)(ku),基于(yu)PacketVideo OpenCORE,该库(ku)(ku)支持(chi)多(duo)种常用(yong)的音频(pin)、视频(pin)格(ge)式的回(hui)放和录制以(yi)及(ji)一些图(tu)片,比如:MPEG4、MP3、AAC、AMR、JPG、PNG等(deng)
③---SGL-----2D图形(xing)引擎库
④---SSL-----位于(yu)TVP/IP协议与各种应用(yong)层协议之间,为数(shu)据通(tong)讯提供支持。
⑤---OpenGL | ES -----3D效果(guo)的支持
⑥---ite-----轻(qing)量级关系型数据库
⑦---Webkit-----Web浏(liu)览器引擎
⑧---FreeType-----位图(Bitmap) 及(ji) 矢量(Vector)
===============运行时
运行时里面最重(zhong)要的(de)(de)应该算是虚(xu)拟机(ji)吧。Dalvik是google自己设(she)计(ji)的(de)(de)用于Android平台的(de)(de)虚(xu)拟机(ji)(.dex格式是专(zhuan)为(wei)Dalvik设(she)计(ji)的(de)(de)一种压缩格式,适合(he)内存和处理器速度有限的(de)(de)系统(tong))这是在android4.4之(zhi)前的(de)(de)版(ban)本了(le)。android 4.4及(ji)以后的(de)(de)版(ban)本,谷歌直接祭出了(le)ART(Android Runtime),用来取(qu)代Dalvik,运行模(mo)式确实提高了(le)不(bu)少(shao),优化了(le)性能(neng)和流畅性。
比(bi)较(jiao)一下二者的不同吧(ba):
------Dalvik:应(ying)用每次运行的(de)时候,字节码都需要通过(guo)即时编译器(qi)转换为机器(qi)码,这会(hui)拖累(lei)应(ying)用的(de)运行效率(lv)。
------ART:应用(yong)在第一次安(an)装的时候,字(zi)节码就会预先编译(yi)成(cheng)机(ji)器码,使其成(cheng)为(wei)真正(zheng)的本地应用(yong)(这(zhei)个(ge)过程叫做预编译(yi)[AOT,Ahead-Of-Time]),这(zhei)样的话,应用(yong)的启动(首次)和执行都(dou)会变得更加(jia)快速。
反正就是ART比(bi)Dalvik强就是了。
四、应用框架层
3--------------------
应用程序框架(jia)层---封装了(le)开发(fa)应用所需(xu)要的(de)(de)核心API框架(jia),提(ti)供(gong)(gong)了(le)丰(feng)富多彩的(de)(de)组件,这样简化了(le)程序开发(fa)的(de)(de)架(jia)构设计,但(dan)也必须遵守其框架(jia)的(de)(de)开发(fa)原(yuan)则,开发(fa)自主性上被限(xian)制住(zhu)了(le)。该层封装了(le)SDK,提(ti)供(gong)(gong)了(le)API给上一层调用使用。
SDK中(zhong)内置(zhi)了一些对象(xiang),其(qi)中(zhong)最重要的(de)组(zu)件有四个:Activities、Intents、Services以及(ji)Content Providers。
1--------------
Activities 活动:
一(yi)个(ge)(ge)活动就(jiu)是一(yi)个(ge)(ge)用(yong)户界(jie)面。一(yi)个(ge)(ge)应(ying)用(yong)程序可以定(ding)义一(yi)个(ge)(ge)或者多(duo)个(ge)(ge)活动,每(mei)个(ge)(ge)活动都能够(gou)保存和(he)恢(hui)复自(zi)身的(de)状(zhuang)态。
2--------------
Intents 意向:
Intent是描述一个特定(ding)活动的(de)一种机(ji)制(zhi),比如“选取(qu)照片”、“拨打电话”等具体的(de)动作。在Android机(ji)制(zhi)中(zhong)所有的(de)东西都是通(tong)过Intents完成的(de),这样开发者有机(ji)会替(ti)代或重用大量的(de)组件。
比如有一个(ge)(ge)“发(fa)(fa)送邮(you)件(jian)”的(de)Intent,当你应用程(cheng)序需要发(fa)(fa)送邮(you)件(jian)时可(ke)以(yi)(yi)激活这(zhei)个(ge)(ge)Intent。开(kai)发(fa)(fa)者甚至可(ke)以(yi)(yi)重新(xin)编写一个(ge)(ge)新(xin)的(de)邮(you)件(jian)应用程(cheng)序,并(bing)注册为活动以(yi)(yi)处理这(zhei)个(ge)(ge)Intent代替标准的(de)邮(you)件(jian)应用程(cheng)序。
那么,其他的(de)应用程(cheng)序(xu)就可以使用新编写应用程(cheng)序(xu)来发送邮件了。
3--------------
Services 服务:
一个服务(wu)(wu)Service就是运行在后(hou)台,没有用(yong)户直接交互(hu)的任务(wu)(wu)(与Unix daemon类(lei)似)。
比如要(yao)做一个(ge)音(yin)乐(le)(le)播放(fang)器(qi)(qi),可(ke)能会被另(ling)一个(ge)活动激活,但音(yin)乐(le)(le)是需要(yao)作为背(bei)景音(yin)乐(le)(le)播放(fang),那么这种程序就可(ke)以考虑作为一种服务(wu)Service。然后别的活动可(ke)以来操(cao)作这个(ge)播放(fang)器(qi)(qi)。Android中内置了(le)很(hen)多(duo)服务(wu),可(ke)以方便滴使(shi)用API进行访问。
4--------------
Content Providers 内容提供(gong)者:
一个(ge)内(nei)容(rong)提供者content provider就是(shi)(shi)由自定(ding)义的(de)(de)API封(feng)装读写操作的(de)(de)一套数(shu)据(ju)。Content Provider是(shi)(shi)不同应用程(cheng)序之间共享全(quan)局数(shu)据(ju)最好(hao)的(de)(de)方(fang)式。比如(ru),Google提供了联(lian)(lian)系人的(de)(de)Content Provider,包括姓(xing)名(ming)、地(di)址、电(dian)话(hua)等所有信(xin)息在内(nei)的(de)(de)联(lian)(lian)系方(fang)式能够被所有应用程(cheng)序使用。
五、应用程序
4--------------------
应用程(cheng)序层,开发丰富多彩的应用程(cheng)序。
先总(zong)结成这(zhei)个样子吧,自己也是初(chu)学,慢慢加深理解吧!
【免责声明】本文(wen)部分系(xi)转(zhuan)载(zai),转(zhuan)载(zai)目的(de)在(zai)(zai)于传递更(geng)多(duo)信息,并(bing)不代表本网赞同其观点和对其真实(shi)性负(fu)责。如(ru)涉及作品(pin)(pin)内容、版权和其它(ta)问题,请在(zai)(zai)30日内与联系(xi)我们,我们会予以更(geng)改或删除亂伦xxxx乱女(nv)在(zai)(zai)线播放,韩国床戏巜(gui)老师(shi)的(de)滋味,大荫蒂女(nv)人毛多(duo)高潮,成(cheng)人做受黄(huang)大片,国产精品(pin)(pin)搬运相(xiang)关的(de)文(wen)章,以保(bao)证您的(de)权益!