视差网站,个人做网站设计,深圳网站搭建价格,夫妻找做伙食饭工作哪个网站好--Android内核剖析 柯元旦 编著ISBN 978-7-121-14398-4 2011年9月出版定价#xff1a;79.90元16开616页内容简介#xff1a;本书内容分别从基础、内核、系统、编译以及硬件驱动几个方面对Android内核相关知识进行深入剖析#xff0c;详细分析了Android内核的内部机制#… --Android内核剖析 柯元旦 编著ISBN 978-7-121-14398-4 2011年9月出版定价79.90元16开616页内容简介本书内容分别从基础、内核、系统、编译以及硬件驱动几个方面对Android内核相关知识进行深入剖析详细分析了Android内核的内部机制包括窗口管理系统、Activity管理系统、输入法框架、编译系统等为Android内核定制以及高级应用程序开发提供技术参考。本书适合于所有Android相关的工程师以及产品经理。前 言“内核剖析”乍一听起来挺吓唬人的但这个词语存在两个问题第一个是什么才能称为内核另一个是“谁”才有能力或者有机会写一本“内核剖析”的书本书之所以在前言中提出这个问题就是为了不吓唬大家并给大家一种信心相信自己有能力理解本书的内容。首先来回答第一个问题什么才能称为内核大家都知道Linux内核的本质包含了线程调度、内存管理及输入/输出管理那么请问Windows操作系统的内核是什么呢我们常说苹果的操作系统Mac OS X的内核是基于UNIX的那么可以说Mac OS的内核是UNIX吗如果仅从线程调度、内存管理以及输入/输出的角度来区分Windows和Mac OS系统的话能很明显地感觉到缺少点什么那就是图形用户接口GUIAndroid、Windows、Mac OS三者的操作方式完全不同因此对于图形操作系统而言本人倾向于将GUI也划归到内核的范畴这也就是为什么本书使用“内核”作为标题的原因。本书所谓的“内核剖析”的核心也正在于Android所设计的GUI框架的内部原理。Android操作系统是基于Linux实现的本书并不是去剖析Linux。下面再来回答第二个问题即“谁”才有能力或者有机会写一本“内核剖析”的书如果有人告诉你一个非微软公司的技术人员写了一本Windows操作系统内核剖析的书你信吗反正我不信原因是没有阅读过Windows内核源码的人是不可能写出这样的书的幸运的是Android的源码是开放的。可是源码开放就一定能写这样一本书吗在本书截稿时我未曾见过一本真正分析Android内核的书大多数书籍都是关于Android SDK应用开发的。在过去的工作经历中常常遇到一些同事由于对Android内核不了解导致在应用程序开发时遇到一些无法解决的问题。遗憾的是IT类优秀书籍本来就很少中文原创的更少Android领域的几乎没有本人之前也写过一本《Android程序设计》坦白地讲当我对Android内核彻底剖析后觉得那本书有“误人子弟”的成分。因此我才决定要将自己对Android的理解分享给更多的读者。那么我有可能写出一本真正的“内核剖析”的书吗我2003年毕业于西安电子科技大学通信工程学院毕业后与两名同学一起创业当时我们的目标是做一个“心情播放器”其本质是一个彩屏多媒体掌上设备当初想把它做成一个能够根据人的心情自动播放音乐的设备不谈产品仅从技术的角度来讲我们基于美国德州仪器TI公司的一款DSP处理器完成了“心情播放器”的设计包括软件和硬件该软件系统包括支持最多16个线程的多线程管理、内存管理、FAT16文件系统、GUI子系统以及一套标准应用程序开发框架、桌面程序等在这里要再次感谢同宿舍的陈静军同学他是我到目前为止见过的写代码最优秀的人在这个项目中静军设计了这个操作系统的内核及GUI子系统而我设计了硬件主板、驱动、系统开发框架等说到这里如果静军来写一本内核剖析的书肯定会比我写得更好在当初设计操作系统前由于静军还没有加入到我们团队我才花时间研究了嵌入式操作系统并设计了一些简单的接口而当静军加入后这些工作就由他完成了因此从严格意义上讲我并没有实际编写过操作系统内核代码只不过从硬件、驱动、系统等不同层面设计了一个系统框架而已。在这个项目中一切只是从一颗处理器入手没有基于任何代码所有底层代码都是我们编写的包括汇编和C语言程序设计因此在这个过程中我彻底了解了C语言如何被编译成汇编代码以及特定处理器如何影响上层的C程序。当然这个故事是以失败而告终的后来我继续从事嵌入式产品设计包括使用TI高性能DSP处理器、x86处理器ARM处理器等不过仅过了两年时间又去从事互联网产品的设计并开始使用Java、C、PHP、JavaScript、Erlang等不同语言进行软件开发在使用各种语言时我常常思考这些语言与底层系统的关系并从编译原理的角度来理解每一种语言从而能够理解不同语言的运行环境和操作系统的关系。直到Android的诞生我当时对Android的描述是这是一个把嵌入式系统和互联网应用集合在一起的一个技术。幸运的是这些我都还算熟悉因此就开始了Android的开发最开始的时候仅仅是应用程序的开发虽然也常常考虑Android底层的问题但由于没有源码所以也就没有仔细研究后来发现这也是一件好事因为如果不熟悉上层的开发接口则很难理解内核的一些概念。后来应用层积累得差不多了源码也开放了于是我就迫不及待地开始了内核之旅所有的分析都是基于源码的阅读和测试中间的过程的确是辛苦的包括在Ubuntu及Mac OS上建立编译环境、思考Android中的异步调度架构、平衡工作和学习的时间等早上坐地铁也常常看Google groups中关于Android的各种问答。不过每当你明白一个大的架构的关键之处时也是一件很开心的事情。谈及以上履历的目的在于启发正在读大学的朋友一名电子工程师一定要理论、硬件、软件及梦想同时具备不要把自己区分为“硬件工程师”、“软件工程师”我们可以称自己为电子工程师或者“梦想家”。另外学习一定要循序渐进如果你还不了解微机原理那么就不要学习C语言如果你还不了解数字电路那么就不要学习微机原理上层的软件开发需要对底层基础知识的理解只有这样才能成为一名创造者并设计出卓越的产品。多么希望我们中国的大学生在不久的将来也能创造出像Google、Microsoft、Facebook这样著名的企业。内容介绍本书内容分为五大部分分别如下第1部分基础篇。因为Android内核研究必须基于Unix-Like的主机系统上常见的有Ubuntu和Mac OS X因此该部分介绍Linux的一些基础知识以及在Linux上管理源码的工具git。第2部分内核篇。Android内核的核心就是一套GUI系统。该部分主要包含视图的内部工作机制及视图管理器Window Manager Service和Activity管理器Activity Manager Service的内部工作机制。第3部分系统篇。内核不等于操作系统Android是一个操作系统因此除了内核之外还必须定义一套系统架构比如应用程序的格式定义以及应用程序如何被安装和卸载、输入法框架等有时候这部分内容也叫做外壳Shell。第4部分编译篇。Android相关的源码据说超过1000万行这套源码由众多的子项目组成因此联合编译这些子项目就是一个复杂的问题。Android源码中定义了一套编译框架该框架可以方便地编译不同类型的子项目比如一个动态链接库项目、Jar包项目等。了解该套编译架构后就可以自由地在源码中添加需要的子项目并控制系统中已有子项目的编译过程。第5部分硬件驱动篇。Android目前最成功的产品当然就是智能手机但同时由于Android开源的特点也就可以应用于其他一些特定的产品比如玩具、学习机、税控机、门禁系统等因此该部分介绍了一款硬件开源的Android开发板卡。本来该部分内容还包括OpenGL框架、多媒体框架及Android硬件抽象层HAL三方面内容但由于出版时间原因暂未包含本书下一版将包含这些内容。读者对象本书适合于五类读者。第一类开发过Android应用程序的工程师。如果你刚开始接触Android那么这本书可能会很难理解建议去Android官方网站用两周的时间学习基本的Android应用程序开发或者去看本人早期创作的《Android程序设计》一书但要带着怀疑的态度去读。第二类Android技术相关的产品经理。对于产品经理而言了解项目的技术难度及技术可行性将有助于制定产品开发时间表。虽然产品经理不需要详细了解技术如何实现但起码应该知道产品技术的复杂度。第三类有扎实的开发经验却未曾接触过Android的开发人员。系统框架的表面尽管各有千秋但其内涵却不会差别太大对于有扎实开发经验的朋友而言只需要重新了解一下Android中的新概念就能快速地将这些新概念与已有的知识融合起来这样便可以节省大量的时间。第四类正在基于iOS开发的工程师。本人最近正在研究iOS的开发令人惊讶的是iOS和Android开发框架是如此相似。Object-C语言和Java语言的语法虽然差别较大但其思想却很相似包括单继承、动态性、内存回收机制等。iOS和Android的Framework也惊人相似比如都使用sqlite进行数据存储也使用Preference进行参数存储视图系统的API接口也类似的地方都可以使用OpengGL进行界面绘制。当然iOS和Android视图系统还是有一定的差别比如iOS中每一个View对象都有两个Layer从而可以方便地使用OpenGL绘制任何一个View对象而Android却只有一个所以Android的动画效果没有iOS那样灵活。遗憾的是iOS不是开源的因此我们没有机会去了解iOS内部的详细机制不过既然iOS和Android有这么多相似的地方那么就可以通过了解Android的内核机制去思考iOS的一些特性。第五类想要编写一个GUI子系统的学生。Android虽然更多地用于手机产品但其内部的GUI子系统的实现却是一种通用的思路因此可以完全抛开Android的系统特性而仅仅去研究其GUI子系统的实现思路有了这种思路就可以使用各种语言设计自己想要的GUI子系统。欢迎朋友们与我进行进一步的交流我的E-mail是yuandankegmail.com。 作 者
转载于:https://www.cnblogs.com/broadview/archive/2011/09/23/2186439.html