本书对最近几个版本(5.0 ~ 8.0)的主要新增功能进行整理和解析,本书的重点不仅仅是讲解这些新增功能特性的外部行为,而是在结合AOSP的源码基础上,解析这些功能特性的内部实现。
任何已有的功能都是固定的,随着行业的发展,Android系统在未来可能加入的功能是不确定的,只有掌握了阅读和分析AOSP源码的能力,才能应对不确定的变化,并具备今后能够自行研究Android系统的能力。
深入分析Android系统新特性,掌握独立阅读Android系统源码的能力
前言
本书介绍
本书的书名是《深入剖析Android新特性》。“新”和“旧”是相对的,这样的词是有时效性的,今天新的东西,很快就不新了,本书介绍的是Android系统5.0至8.0的新增特性。
Android作为一个跨越了多种设备的软件平台,由于各家厂商对于设备支持的速度不一,市场上的碎片化现象很严重。在Android 7.0、8.0推出的时候,很多用户可能还在使用4.4甚至更早的版本。而Android的新版本从推出到最终真正普及,需要一个较长的过渡时期。
这个现象对开发来说既有好处也有坏处。好处是开发者有足够多的时间为新版本的功能和特性做准备,坏处是开发者在开发应用时需要兼顾太多的版本。
本书在Android 8.0推出不久后上市,就是希望能给开发者们对近几年Android的新特性做一个梳理。因为笔者觉得,随着时间的推移,以及Android新版本的逐步普及,这些内容是开发者在最近几年正好需要的。
另外,这不是一本仅仅告诉读者Android SDK中的API如何使用的书。在本书中,我们会花更多的精力在这些特性的内部实现上,通过解析AOSP的源码,让读者不仅知其然,也知其所以然。
Android是一个开源的操作系统,任何人都可以获取和阅读其源码。笔者认为,阅读Android源码有如下好处:
? 加深对Android系统的理解;
? 对Android SDK提供的API有更深入的理解;
? 提升自己的设计和架构水平;
? 在应对一些Android定制版本上的特有问题时,能够明白背后可能发生了什么。
合适的读者
本书适合以下读者群:
? Android应用程序开发者;
? Android系统工程师;
? 对Android系统内部实现感兴趣的读者;
? 对Android系统最新功能感兴趣的读者。
本书会包含什么
本书会在AOSP源码的基础上讲解Android系统的新增特性,主要集中在5.0~8.0版本。本书首先会对Android系统做一个整体的介绍,并对最关键的知识做一些说明。之后,会将大部分精力集中在讲解Android系统5.0至8.0的新增特性上。
在讲解这些特性的时候,我们会结合AOSP的源码,尽可能深入到系统的内部实现中,让读者不仅知其然,也知其所以然。
任何一本书的内容都凝聚了很多人的经验,本书在写作过程中也参考了很多的资料,为了对这些资料的原作者表示尊重,也为了让读者可以在更大的范围内去进行探索和学习,在每个章节的结尾,都尽可能会包含“参考资料与推荐读物”,这些内容是笔者在写作过程中参考的资料,或者是笔者认为对读者有帮助的信息。
任何操作系统的实现都是一个极其庞大的工程,Android系统尤其如此。因此,任何一本书都不可能穷其所有细节,本书自然也不例外。就连5.0至8.0的新增功能中,我们也只能介绍其凤毛麟角。
但本书最大的目的在于:希望通过对新增功能的解析,让读者掌握Android的系统架构模型,以及阅读AOSP源码的能力,并最终具有能够自行研究Android系统的能力。
“授人以鱼不如授人以渔”,任何已有的功能都是固定的,随着行业的发展,Android系统在未来可能加入的功能是不确定的,只有掌握了自己阅读和分析Android源码的能力,才能应对不确定的变化。
本书不会包含什么
下面这些内容,由于它们本身都是非常大的话题,可以单独写成一本书(甚至几本书),因此这些内容在本书中不会讲解。
? 任何编程语言方面的知识;
? Linux/UNIX系统开发知识;
? Linux内核开发知识;
? 浏览器内核开发知识(Webkit、Chromium);
? Android App基础开发知识。
阅读本书,你不必懂Linux内核、浏览器的相关知识。但本书期待读者拥有C/C++、Java语言代码的阅读能力,熟悉Linux环境,并有基本的Android App开发知识。否则,你可能要选择其他书来做一些准备了。
为什么要写这本书
是的,市面上已经有太多的Android书籍了,为什么还需要这一本呢?在我决定写这本书之前,我也这样问自己。
本书的编辑陈晓猛先生最初与我联系的时候,是因为看到了我的个人博客。这是在我的博客上线仅仅三个月不到的时候。
说实话,因为我本身工作很忙,写博客都要使劲才能挤出时间,所以就更加没有时间去推广。我写博客的目的仅仅是为了自己积累一些东西。当然也希望我所记录下来的东西,能对别人有帮助。
在陈晓猛先生与我联系之前,我并没有想过自己会出一本书。但在看到他的留言之后,我便在想,如果我整理出来的知识能够让更多的人看到,能够对更多的人产生帮助,那不是很好吗?于是我便尝试给他回了邮件。
出于以下理由,让我决定写这本书:
? Android平台拥有非常多的开发者,开发者们需要更多的资料;
? AOSP的源码是完全开放的,但却缺少内部实现的设计文档和说明资料;
? 目前已有的书籍大部分是针对Android 4.4前后的版本,需要有一本书针对新版本做一些整理;
? 每个人看问题和分析问题的方式不一样,给更多的人分享自己的经验是很有意义的;
? 作为一个操作系统工程师,对于同行的分析和研究也是我的工作内容之一。
“术业有专攻,闻道有先后”,做技术的过程本身就是一个互相学习和互相交流的过程。
由于笔者水平有限,文中若有错漏之处,也希望读者不吝赐教。
我的邮箱:paulquei@gmail.com。
我的个人主页:http://qiangbo.space。
本书的主要结构
本书包含的章节及每一章的内容介绍如下。
? 第1章:介绍Android系统的整体架构,并讲解如何获取AOSP源码,以及自己动手编译出可以运行的Android系统。
? 第2章:讲解Android系统中的进程管理,包括进程的创建、优先级管理,以及系统对于内存的管理。
? 第3章:讲解Android系统中的虚拟机,包括Dalvik虚拟机、ART虚拟机。
? 第4章:讲解Android系统上用户界面的改进,包括多窗口功能和App Shortcts。
? 第5章:讲解Android系统上的SystemUI改进,包括System Bar、Notification,以及Quick Settings。
? 第6章:讲解Android系统上功耗方面的改进,包括Project Volta、Doze模式与App StandBy。
? 第7章:讲解Android系统上设备管理方面的改进,包括对于多用户的支持和面向企业环境的Android。
? 第8章:讲解Android系统安全方面的改进。
? 第9章:讲解Android系统在图形方面的改进,包括整个架构、主要组件,以及Project Butter等知识。
? 第10章:讲解Android O系统架构的改进—Project Treble。
致谢
这本书得以出版,我第一个要感谢的是南京富士通南大软件技术有限公司的朱清森部长。他曾是我的领导,正是他的引导,我才第一次尝试写作并投稿给IBM DeveloperWorks站点(https://www.ibm.com/developerworks/cn/java/j-lo-asm/),之后才有了我写的其他文章,以及我的个人博客,当然还有这本书。
第二个要感谢的是博文视点的编辑陈晓猛先生,是他的鼓励和辛苦编辑才使本书得以面世。最后要感谢的是我在AliOS的同事和领导,从这群优秀的工程师身上我学到太多太多。在我写作本书的期间内,也得到了他们的很多帮助。
强波
2018年3月于杭州
在92页,中2.3.4 Activity与进程创建
这里贴的代码有误,将startActivity贴成startService
contenntProvider改为 ContentProvider