【新手入门】一.Android架构简单了解

Android架构简单分为如下几个层:

1.Linux内核 
   提供各种驱动程序(显示器、照相机、键盘、WIFI等)
2.Libraries (库)
   包含一些C/C++库,这些库能被android系统中不同的组件使用。它们通过android应用程序框架为开发者提供服务。
3.Android运行时环境
   核心包、Dalvik虚拟机(对应于Java当中的JVM)
4.应用程序框架
   提供了手机开发的最基本的API
5.应用程序


如下图所示:



从上面的简单介绍中我们可以了解到什么?


1.架构分为了5个层面,这样保证了高内聚,低耦合。上层的开发者无需开发下一层,只需去使用已有的接口就可以。

例如,在汽车制造业中的流水线,下一个流水线的工人未必懂得上一个流水线工人所必备的技能,但是在上一个流水线完成了流程,汽车被送入下一个流水线中,下一个流水线的工人可以直接做自己应该做的活。

而在开发过程中,这样的分层解耦是非常常见的。这样可以达到什么样的效果呢?

上层开发如果出现了问题,并不会影响到下一层,可以保证下一层的正常运转,为别的需求提供服务。并且下一层可以一次开发,多处使用。在新的需求开发时,只要使用原来已有的下一层就可以,不需要重新开发。这样节约了开发成本,提高了效率。这当然是开发者乐意去看到的。


2.android是基于linux内核(kernel)开发的。linux内核中包括了各种硬件驱动,电源管理等。作为android系统中负责和硬件去打交道的角色。对linux有兴趣的可以自行查找资料~


3.libraries(库)中提供了由c/c++编写的,供上层开发使用,库中包含了android中核心的一些东西的库。例如:webkit浏览器,sqlite轻量级关系型数据库等。

关于浏览器,相信大家一定大多用过支付宝之类的一些列应用。很多人可能会觉得支付宝和浏览器有人什么关系呢?其实在支付宝中用到了一个组件叫做webview,就是一个嵌套在应用中的浏览器。

支付宝用浏览器做什么呢?大家所看到的支付宝界面,是由原生和web两个东西去构成的。原生就是用android自带的view视图去做出来的界面,而web是像一个我们平常所使用的网页一样,用网页的形式去让用户使用。

可是这跟平常所使用的网页有什么区别呢?正常的网页访问是需要等待网页加载的,这跟网络的情况有很大的关系,而且大家一定经常会碰到三五秒才能打开一个网页的情况。而做这样的web界面(基于html5)是基本不能有这样的卡顿情况发生的。

为什么呢?这涉及到了一个用户体验的问题。应用开发并不是让开发者去学习,或者玩的,而是给用户去使用的。我觉得,开发者开发过程中应该首先想到的就是用户。开发一个应用,肯定是要给用户使用,用户觉得好才会使用,觉得不好就可能黏住用户。没有了用户肯定所开发的应用不会实现开发者和应用本身的价值。当然,这也意味着赚不到钱。虽然说开发,学习都是高尚的东西,但我觉得说到底都会涉及到金钱和利益。

所以,哪怕是为了崇高的利益,我们也不必须让用户用着舒服的前提下去实现自己的东西。web界面正是这样,需要在用户觉得与原生没什么太大的差别的前提下才能使用。这其中的技术因为我现在依然是个彩笔,还没有涉及,以后尽量会研究并发博客上来。包括bootsrap框架在内有一些专门用来做android web界面开发的知识,有兴趣的同学可以自行查找~

那么,既然web是有明显不足的,相较于原生有什么优点呢?web的特性就是开发一次,多处使用。只要有浏览器就可以访问。大家应该知道android手机厂商众多,机型和硬件上大多不同,这为开发者带来了麻烦。需要针对不同的硬件,去适配。例如最典型的屏幕适配。如果有了自适应的web界面,只需浏览器就无需其他就可以访问。相信这也是未来的方向,不过距离实现应该还有一段距离。(由谷歌推出的ChromeOS有兴趣同学可以了解一下)


4.rutime(运行时)里面提供了dalvik虚拟机(dvm)和核心类库。如果熟悉java的同学一定知道jvm。android应用开发虽然主要使用java,但是区别于jvm,使用了dvm。二者用什么区别呢?jvm是基于栈的,dvm基于寄存器的。jvm编译后的文件后缀名是.class,dvm编译后的文件后缀名是.dex。二者的指令集也有所不同。对于这两个虚拟机有兴趣的同学可以自行查找~这里只做简单的介绍(其实我会的也很少。。)。不过建议在学习到一定程度时,对虚拟机要有一定的了解,很有趣,也对自身的开发很有帮助~当然了,作为新手入门了解下就好,学习了一段时间以后再深接触。


5.framework(框架层)中提供了android开发中所用到的一系列的api(我们通常说的源码),是提供给开发过程中最直接的接口。在应用层熟悉后,了解框架层我觉得是进阶必备的。


6.应用层中包括了谷歌所提供的地图,短信在内的一些列应用,我们主要开发就是在应用层当中开发。



--------------------------------割掉自己-------------------------------

第一次写博文,说了很多废话。。不过希望对新手有所帮助,能让新手对android开发产生兴趣。。我自己水平有限,现在也还处于学习当中,写博客将自己会的皮毛都尽量分享出来。。如果有错误,欢迎指正,误人子弟的事坚决不能干。。互相学习~么么哒~




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值