深入了解Android系统

0 次阅读  0 条讨论  发布日期:一 10, 2012   文章位于: 学习提高  
  

    作为一个玩Android的极客,要深入了解Android,这样你才能真正看懂Android。
    怎么看到Android
    提要:Git,是打开Android心扉的钥匙
    要看懂Android的“心”(源代码),首先要知道怎么获取Android源代码。你必须搭建一个基于Linux核心的开发环境,本人推荐Ubuntu,它拥有完整的中文语言库和图形界面,能快速上手。
    然后,你要学会使用Git,通过Git,你就可以很获取任意一套Android的源代码,包括最新的4.0版。由于需要连接至国外服务器,且源代码文件很大,Git所需时间较长,请耐心等待。
    小提示
    Git 是用于 Linux 内核开发的版本控制工具。因为Android 是由Kernel、Dalvik、Bionic、prebuilt、build等多个Git项目组成,所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单。


    读懂Android的心语
    提要:Android依靠调用一个又一个模块完成一项又一项任务
Android的主要模块有很多,下面我来一一给大家展示一下它们的作用:
·Makefile        (全局的Makefile)
·bionic          (Bionic含义为仿生,这里面是一些基础库的C源代)
·bootloader      (引导加载器相关源代码)
·build           (系统编译规则以及generic等基础开发包配置)
·dalvik          (Dalvik JAVA虚拟机)
·development     (程序开发所需要的模板和工具)
·external        (目标机器使用的一些库)
·frameworks      (核心框架——JAVA以及C++语言)
·hardware        (部分硬件厂商的开源硬件适配层源代码)
·kernel          (Linux2.6的源代码)
·packages        (Android的各种应用程序)
·prebuilt        (Android在各种架构下<x86 & arm>编译的预置脚本)
·recovery        (与目标的恢复功能相关)
·system          (Android的底层文件系统库、应用以及组件)

    看着头疼?没关系,我们以Android的启动过程为例,简单谈谈模块的用途:
第一步:Bootloader初始化,显示开机第一屏画面。初始化成功后,挂载系统。
第二步:运行AndroidRuntime,并启动JAVA虚拟机Dalvik VM。JAVA虚拟机启动成功后,开始系统初始化,并显示系统启动画面。
第三步:启动ServerThread进程,它会启动各种系统服务,例如Activity Manager等,启动之之后就可以进入系统了。


 
 Android架构图

  
    一个吃货
    提要:谷歌在Android的开发中贯穿这样的设计理念:取悦用户,简化生活,与众不同。
    熟悉谷歌的人应该知道谷歌有一个不成文的规矩:10米之内必有食物!这是Google文化的一个特点。而Android的版本号演进,也同样体现了谷歌的这一公司文化:对吃情有独钟。从Android1.5版本开始,Google启用了甜点作为Android系统各版本的代号,并按照26个字母的顺序依次命名。


     
     Android版本进化图

 

    其中,2009年4月,Android 1.5版本的发布,使Android真正成为一个成熟可用的OS,并逐渐为大众所认知和接受,而Android的国际化进程,也是起始于1.5版本。相较于Android 1.1仅支持英语和德语,Android 1.5支持包括中文在内的十几种语言。
    另一次重大更新,则是2010年5月Android 2.1至2.2的升级。Android2.2版本最为人知的一个更新:新增了对Flash的支持,这使得人们在手机之上在线观看各种视频、以及玩某些小游戏成为了可能,要知道,当时的HTML5标准的支持远没有如今的好,而风靡一时的社交Flash游戏,更使得当时推出的这项更新令广大Android用户欢呼不已。
    最近的一次重大更新,则是2011年10月Android 4.0的发布。4.0同时支持智能手机与平板电脑,终结了Android系统在手机和平板上的分道扬镳,完成了系统格局的大一统。从4.0的源代码来看,谷歌加强了对系统的权限认证以增强安全性,例如从4.0开始,应用接收启动信息需要声明权限,这个小小的改变,让某些恶意自启动拖慢系统开机进程的恶意软件无处遁形。
    另一个小细节也不容忽视,Android从发布到现在,一直使用了最为成熟稳定的Linux 2.6.xx Kernel,加上上文提到的Dalvik虚拟机机制,Android从一开始,就为一个操作系统最基本的稳定性,打下了牢牢的基础。
    开源成就了刷机包
    提要:刷机包是由反编译工具制作出来的
    由于Android的开源策略,反编译工具的开发变得非常容易,从而有了apktool、smali等一系列的反编译利器,最终成就了Android刷机包遍地开花的结局(大部分制作第三方ROM(刷机包)的方式,都是基于官方系统的逆向工程修改,也就是通常所说的反编译)。正因如此,当购入一部Android手机之后,刷机成了一个极大的乐趣。各种美化资源,以及个性化的第三方ROM,使你的手机变得与众不同。
    比如我拿到一部全新上市的三星Android手机,如果没有中文,我可以使用apktool反汇编每个系统APK,并在原有的语言库中加入中文字符串并再次进行编译,这样,我就完成了整个系统的汉化工作。
    而要在官方ROM的基础上实现某些功能的加强和改动,我可以使用smali来得到程序和框架的Dalvik汇编源码,按照自己的构想对代码进行修改之后,生成新的程序和框架。所有的修改完毕之后,最后一步如何生成刷机包便成了关键。由于三星一直以来对第三方ROM都持支持态度,所以刷机在三星的Android设备上,再简单不过。
    换言之,制作刷机包,也是再简单不过。只需在Ubuntu下把修改完成的/system生成对应格式的img镜像,再用tar命令无压缩打包上Kernel以及基带,如此,一个完整的三星手机刷机包变制作完成。
    

    开源系统中 Android为何一枝独秀
    提要: Android的成功跟移动互联网的发展密不可分
    面对Android开源的成功,很多人会充满了疑问。为什么之前的Linux开源系统,全都是那么小众,而Android,却如此成功的在短时内赢取了大量的市场份额,并成功击退塞班,稳坐智能机系统市占率第一的宝座?其实经过简单分析,不难明白个中缘由。
    Android之外,Linux其余各发行版本都主打桌面市场,而桌面系统早就由Windows在90年代一统江湖,用户的操作习惯和积淀难以更改,市场惯性让Windows越做越大而Linux桌面系统却越来越小众而不被人认知。另外,Windows背后有强大的微软,Linux各发行版本的背后,却只是一个个开源开发小组在支撑,力量对比悬殊,Linux想要赢得桌面战场的胜利,其可谓蚍蜉撼大树也。
    而Android,成功的抓到了新兴市场的机会。彼时3G互联网开始大兴其道,Symbian在iOS的冲击下已是廉颇老矣,用户纷纷开始抱怨Symbian单调的界面,无聊的操作,而面对iPhone高高在上的价格却不得不望而却步,这时,横空出世的Android无疑让用户眼前一亮。
    更为重要的是,Android倚靠着谷歌这颗大树,便有了强有力的技术支撑,版本升级更新迅速,新功能新特性层出不穷,而Google推行的免费开源政策,使广大手机厂商纷纷加入了Android的行列之中。
    在Android的生态系统中,领头羊谷歌却聪明的选择了只做软件,把做硬件的机会完全的留给了手机厂商,面对完全免费的Android和需要授权使用费的Symbian以及WM/WP,众多手机厂商明智了选择了Android。而Android自身的三明治型架构,又决定了其适用于任一硬件平台,基于JAVA语言的应用程序开发,大大降低了应用开发的门槛,不用重新再学一门语言,受到了开发者的热烈欢迎。
    最后我想说的是,Android一直在成长、一直在慢慢成熟,从诞生之初,它便一刻未停止它前进的步伐,3年8个大版本的更新以及无数小版本的升级,无不显示着它快速成长的身影, Android的未来会更好。

来源:电脑报。

发表评论

(例如:http://www.gdiia.org)

更多»个人会员名录

更多»企业会员名录

| 关于我们 | 友情链接| 网站导航| 广告合作|