深入解析ANDROID虚拟机
深入解析ANDROID虚拟机深入理解 Android虚拟机张子言编著清华大学出版社北京内容简介本书循序渐进地讲解了 Android虚拟机技术的基本知识,内容新颖、知识全面、讲解详细。全书分为13个章节,分别讲解了 Android系统的基础知识、 Android系统的结构和核心框架、Java虚拟机和 Dalvik虚拟机的知识、实现程序编译和调试、 Dalvik的运作流程、DEⅩ优化和安全管理、 Android虚拟机生命周期管理和内存分配策略、虚拟机垃圾收集和线程管理、JNI的基本原理、JI编译的基本过程和具体方法,以及虚拟机中的异常管理机制方面的知识。本书定位于 Android的初、中级用户,既可以作为初学者的参考书,也可以作为有一定基础的读者的拔高书。本书封面贴有清华大学出版社防伪标签,无标签者不得销售版权所有,侵权必究。侵权举报电话:010-6278298913701121933图书在版编目(C|P)数据深入理解 android虚拟机/张子言编著.--北京:清华大学出版社,2014ISBN978-7-302-34408-7Ⅰ.①深…I.①张…Ⅲ.①移动终端一应用程序一程序设计ⅣV.①TN929.53中国版本图书馆CIP数据核字(2013)第262524号责任编辑:魏莹装帧设计:杨玉兰责任校对:王晖责任印制:王静怡出版发行:清华大学出版社pate:http://www.tup.comcn,http://www.wqbook.com地址:北京清华大学学研大厦A座邮编:100084社总机:010-62770175邮购:010-62786544投稿与读者服务:010-62776969,Service@tup.tsinghua.edu.cn质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn课件下载http://www.tup.comcn,010-62791865印刷者:清华大学印刷厂装订者:三河市溧源装订厂经销:全国新华书店开本:190mm×260mm印张:27.5字数:666千字版次:2014年1月第1版印次:2014年1月第1次印刷印数:1~3000定价:49.50元产品编号:049308-01Android前进入21世纪以来,整个社会已经逐渐变得陌生了!生活和工作的快节奏令我们目不暇接,各种各样的信息充斥着我们的视野、撞击着我们的思维。追忆过去, Windows操作系统的诞生成就了微软公司的霸主地位,也造就了PC时代的繁荣。然而,以 Android和 iPhone手机为代表的智能移动设备的发明却敲响了PC时代的丧钟!移动互联网时代已经来临,谁会成为这些移动设备上的主宰?毫无疑问,它就是 Android--PC时代的 Windows!3G的璀璨绚丽随着3G的到来,无线带宽越来越高,使更多内容丰富的应用程序布置在手机上成为可能,如视频通话、视频点播、移动互联网冲浪、在线看书/听歌、内容分享等。为了承载这些数据应用及快速部署,手机的功能将会越来越智能,越来越开放,为了实现这些需求,义须有一个良好的开发平台来支持,在此由 Google公司发起的OHA联盟走在了业界的前列,2007年11月推出了开放的 Android平台,任何公司及个人都可以免费获取到源代码及开发SDK。由于其开放性和优异性, Android平合得到了业界广泛的支持,其中包括各大手机厂商和著名的移动运营商等。继2008年9月第一款基于 Android平台的手机G1发布后,预计三星、摩托罗拉、索爱、LG、华为等公司都将推出Gng~ Android平台的手机,中国移动也将联合各手机厂商共同推出基于 Android平合的 OPhone。按目前的发展态勢,我们有理由相信, Android平台能够在短时间内跻身智能手机开发平台的前列。自从公元2009年3G牌照在国内发放后,3G、 Android、 iPhone、Goge、苹果、手机软件、移动开发等词越来越充斥于耳。随着3G网络的大规模建设和智能手机的迅速普及,移动互联网时代已经微笑着迎面而来。作为以创新的搜索引擎技术而一跃成为互联网巨头的 Google公司,无线搜索成为其进军移动互联网的一块基石。 android操作系统是Goge公司最具杀伤力的武器之一。苹果公司以其天才的创新,使得 iPhone在全球迅速拥有了数百万忠实“粉丝”,而 Android作为第一个完整、开放、免费的手机平台,使开发者在为其开发程序时拥有更大的自由。与Windows mobile、 Symbian等厂商不同的是, Android操作系统免费向开发人员提供,这样可节省近三成成本,得到了众多厂商与开发者的拥护。自从进入2011年后, Android就一直是市场占有率最高的智能手机系统。并且 Android的成功也造就了使用 Android系统的手深入理解 Android虚拟机机制造商,现在三星借助 Android这个东风,已经成为世界上发货量最大的手机制造商巨大的优势从技术角庋而言, Android与 iPhone相似,采用 WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查收电子邮件、搜索网址和观看视频节目等。Android手机比 iphoneε等其他手机更强调搜索功能,界面更强大,可以说是一种融入了全部web应用的开发平台。 Android的版本包括 Android1.1、 Android1.5、 Android1.6、 Android2.0…当前的最新版本是 Android4.2。随着版本的更新,从最初的触屏到现在的多点触摸,从普通的联系人到现在的数据同步,从简单的 Google Map到现在的导航系统,从基本的网页浏览到现在的HTML5,这都说明 Android已经逐渐稳定,而且功能越来越强大。此外, Android平台不仅支持Java、C、C++等主流的编程语言,还支持Ruby、 Python等脚本语言,甚至Goge公司专为 Android的应用开发推出了 Simple语言,这使得 Android有着非常广泛的开发群体本书的内容本书循序渐进地详细讲解了 Android虛拟机技术的基本知识,为容新颖、知识全面、讲解详细,全书共分13章。 Android虚拟机技术博大精深,需要程序员具备极高的水准和开发经验。笔者从事 Android开发也是短短数载,也不可能完全掌握 Android优化技术。本书尽可能地将Δ droid虛拟机技术的核心内容展现给读者,本书主要讲解了如下所示的核心Android系统框架结构。Java虚拟机和 Dalvik虚拟机原理。程序编译和调试Dalvik的运作流程和核心机制。DEⅩ优化技术。安全管理的基本知识。Android虛拟机生命周期管理●虚拟机内存分配策略。虚拟机的垃圾收集机制●线程管理机制和框架。JNI层的原理和核心理念IT编译的基本过程科学的学习方法不要认为学习 Android技术是一件很困难的事情,不断寻找规律,学习新知识和新技能,积累经验,这几乎是毎一个电脑高手的成长之路。中国有句古话:“授人以鱼,不如授人以渔”,说的是传授给人既有知识,不如传授给人学习知识的方法。通过本书,我们将告诉读者学习的方法,并介绍一条比较清晰的学习之路(1)积极的心态无论是知识还是技能,智者之所以能够更好更快地掌握这些知识和技能,在很大程度》前言上得益于良好的学习方法。人们常说:兴趣是最好的老师,压力是前进的动力,要想获得个积极的心态,最好能对学习对象保持浓厚的兴趣。如果暂时提不起兴趣,那么就重视来自工作或生活的压力,把它们转为化为学习的动力(2)注重实践读者在学习本书的过程中,建议学完理论后,进行实际操作。首先学习书中的理论,再动手调试本书中的实例,然后用模拟器运行书中的例子,只有这样才能做到印象深刻,才能真正理解 Android网络的基本知识。这样当在实际应用中遇到其他类似问题时,才能做到熟能生巧、触类旁通(3)善用资源,学以致用对于计算机网络技术,除了少部分专业人士外,大部分人学习网络的目的是为了应用,通过网络解决工作中的问题并提高工作效率。“解决问题”常常是促使人学习的一大动机,带着问题学习,不但进步快,而且很容易对网络产生更大的兴趣,从而获得持续的进步。本书特色本书的内容相当丰富,内容覆盖全面,满足了 Android虚拟机技术人员成长道路上的方方面面。我们的目标是通过一本图书,提供多本图书的价值,读者可以根据自己的需要有选择地阅读,以完善本人的知识和技能结构。在内容的编写上,本书具有以下特色(1)结构合理从用户的实际需要出发,科学安排知识结构,内容由浅入深,叙述清楚,并附有相应的总结和练习,具有很强的知识性和实用性,反映了当前 Android虛拟机技术的发展和应用水平。同时全书精心筛选的最具代表性、读者最关心的知识点,几乎包括 Android虚拟机技术的所有方面。(2)易学易懂本书条理清晰、语言简洁,可帮助读者快速掌握毎个知识点;毎个部分呒相互连贯又自成体系,使读者既可以按照本书编排的章节顺序进行学习,也可以根据自己的需求对某章节进行有针对性的学习。(3)实用性强本书彻底摒弃枯燥的理论和简单的操作,注重实用性和可操作性,本书将 Android虚拟机技术的理论融合到实际的操作环境中,使用户掌握相关的操作技能的同时,还能学习到相应的开发知识。本书的读者对象本书在内容安排上由浅入深,在写作上运用剥洋葱式的分解,非常适合于入门 Android开发技术的初学者,同时也适合于具有一定 Android开发基础,想对 Android开发技术进步了解和掌握的中级学者。如果你是以下类型的学者,此书会带领你迅速进入 Android的开发领域。有一定 Android开发经验的读者。●从事 Android开发的研究人员和工作人员。有一定 Android开发基础,想快速学会 Android高级技术的读者有一定 Android开发开发基础,需要加深对 Android技术核心进一步了解和掌握深入理解 Android虚拟机灬的程序员高等院校相关专业的学生,或需要编写论文的学生企业和公司在职人员、需要提高学习或工作需要的程序员从事 Android移动网络开发等相关工作的技术人员。在本书的写作过程中得到了清华大学出版社工作人员的大力支持,在此特意感谢各位编辑老师们的指点和付出的汗水。另外,笔者毕竟水平有限,书中纰漏和不尽如人意之处在所难免,诚请读者提出意见或建议,以便修订并使之更臻完善。编者目录第1章 Android系统介绍…··24简析 Android源码.……3724.1获取并编译 Android源码371.1 Android是一款智能手机….24.2 Android对 Linux的改造381.1.1什么是智能手机…1243为 Android构建 Linux的11.2当前主流的智能手机系统操作系统391.2 Android的巨大优势3244分析 Android源码结构.1391.3在电脑上启动 Android虚拟机24.5编译 Android源码.…441.3.1安装 Android SDK24.6运行 Android源码··“““1.3.2安装JDK、 Eclipse、2.5实践演练—演示两种编译 AndroidAndroid SDK.........5程序的方法…1.3.3设定 Android sdK home…12251编译 Native C的 helloworld1.4 Android模拟器…13模块..4614.1 Android模拟器简介142.52手工编译C模块1.4.2模拟器和仿真机究竞有何区别….144143创建 Android虚拟设备(AVD)…14第3章虚拟机概述………51144模拟器的总结.163.1虚拟机的作用..515搭建环境过程中的常见问题……183.2Java虚拟机511.5.1不能在线更新832.1理解Java虚拟机.511.5.2显示“ Project name must be3.2.2Java虚拟机的数据类型….52d”提示20323Java虚拟机的体系结构31.53 Target列表中没有 Target选项…2l324Java虚拟机的生命周期第2章 Android系统的结构33 Android虚拟机— DalvikⅥM33.1 Dalvik架构.5921 Android安装文件简介…233.32和Java虚拟机的差异…2.1.1 Android SDK目录结构.23333 DalvikⅥM的主要特征21.2 android jar及内部结构124334 DalvikⅥM的代码结构2.1.3SDK帮助文档2534Dalv控制VM详解632.14解析 Android sdK实例.2635 Dalvik vn架构.6622分析 Android的系统架构.…263.5.1 Dalvik的进程管理………6722.1 Android体系结构介绍273.5,2 Android的初始化流程672.2.2 Android工程文件结构.…….…922,3应用程序的生命周期32第4章编译和调试6823简析 Android内核…144. Windows环境编译 Dalvik…2.3.1 Android继承于 Linux……1344,2GDB调试 Dalvik.7123,2 Android内核和 Linux内核的42.1准备工作,……71区别.35深入理解 Android虚拟机4.2.2GDB调试C程序.53启动 zygote.104.2.3GDB调试 Dalvik…7453.1在 Init. rc中配置 zygote启动使用Ipexam参数1114.3. I dexdump的反编译功能….1755.3.2启动 Socket服务端口.…111432使用dexdump查看ja文件…76533加载 preload- -classes.11344 Dalvik虚拟机编译脚本,80534加载 preload- resources..1444.1 Android.mk文件53.5使用fok启动新进程1154.4.2 Reconfigure Dvm. mk文件.8154启动 System Server进程11644.3 dvm. mk文件54.1启动各种系统服务线程…174.5 Android40.l源码下载、模拟器编译和54.2启动第一个 Activity19运行……8555cass类文什的加载19第5章Da|Vik虛拟机的运作流程.88551 Dex File在内存中的映身1195.52 Classobject- class在加载后51 Dalvik虚拟机相关的可执行程序.….8的表现形式…1215.1.1 dalvikvm5.5.3 findclassnoinit-加载 Class5.1.2dVz…89并生成相应 Classobject的5. 1.3 app process函数.12252 Dalvik虚拟机的初始化.925.54加载基本类库文件52.1开始虚拟机的准备工作92555加载用户类文件..1245.2.2初始化跟踪显示系统.56解释执行类…5.2.3初始化垃圾回收器…56.1 Dalvik虚拟机字节码和52.4初始化线程列表和主线稈环境丿VM字节码的区别124参数9356.2 Davik虚拟机的解释器优化∴….12552.5分配内部操作方法的表格内存..9552.6初始化虚拟机的指令码相关的第6章dex的优化和安全管理127内容6.1 Android dex文件优化简介12752.7分配指令奇存器状态的内存6.2dex文件的格式…128528分配指令寄存器状态的内存……966,2,1 map list……….…,12952.9初始化虚拟机最基本用的6.2.2 string id it131966.2.3 type id _item.... 13552.10进一步使用的Java类库624 proto id_item……136线程类6.2.5 field id item.....w...1375211初始化虚拟机使用的异常62.6 method id item.………137Java类库……6.2.7 class def.1385.2.12释放字符串哈希表……10063dex文件结构…14152.13初始化本地方法库的表………1016.3.1文件头( File Header)..142524初始化内部本地方法……10163,2魔数字段…1435215初始化JI调用表101633检验码字段……14352.16缓存Java类库里的反射类.…104634SHA-1签名字段1455217最后的工作63.5map_off!字段146
用户评论