作 者:林学森 著 定 价:158 出 版 社:人民邮电出版社 出版日期:2017年07月01日 页 数:996 装 帧:平装 ISBN:9787115452634 ●《深入理解Android内核设计思想:上册》
●第1篇Android编译篇
●第1篇Android编译篇
●第1章Android系统简介
●1.1Android系统发展历程
●1.2Android系统特点
●1.3Android系统框架
●第2章Android源码下载及编译
●2.1Android源码下载指南
●2.1.1基于Repo和Git的版本管理
●2.1.2Android源码下载流程
●2.2原生Android系统编译指南
●2.2.1建立编译环境
●2.2.2编译流程
●2.3定制产品的编译与烧录
●2.3.1定制新产品
●2.3.2Linux内核编译
●2.3.3烧录/升级系统
●2.4AndroidMultilibBuild
●2.5Android系统映像文件
●部分目录
内容简介
全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统、虚拟机等核心技术在Android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者“知其然,更知其所以然”。本书分为编译篇、系统原理篇、应用原理篇、系统工具篇,共4篇25章,基本涵盖了参与Android开发所需具备的知识,并通过大量图片与实例来引导读者学习,以求尽量在源码分析外为读者提供更易于理解的思维方式。
本书既适合Android系统工程师,也适合于应用开发工程师来阅读,从而提升Android开发能力。读者可以在本书潜移默化的学习过程中更深刻地理解Android系统,并将所学知识自然地应用到实际开发难题的解决中。 林学森 著 林学森,香港中文大学计算机硕士,曾于多家跨国企业担任研发和管理工作,并已在靠前外会议、杂志上发表多篇文章,获得多项发明专利。现为某世界500强科技公司不错专家、资历架构师。有丰富的技术研发与项目管理经验,擅长操作系统架构设计与内核分析。
《Android系统架构与源码解析:精进之道》 内容简介 本书旨在为Android开发者,特别是那些渴望深入理解Android系统底层机制、精进自身开发技艺的资深从业者,提供一条清晰而富有洞察力的学习路径。我们不满足于仅仅停留在API层面的应用开发,而是将目光投向Android系统的心脏地带,探究其设计理念、核心组件的运作原理以及各个模块间的协同机制。通过系统性的剖析和源码级别的梳理,本书将帮助读者建立起对Android系统全景的深刻认知,为开发更稳定、高效、可扩展的Android应用奠定坚实的基础。 第一部分:Android系统基石——从Linux到ART 在深入Android的应用层和框架层之前,理解其赖以生存的底层基石至关重要。本部分将从Linux内核出发,逐层剖析Android系统的构建过程。 Linux内核与Android:共生关系探秘 Android并非一个独立的操作系统,而是构建在强大的Linux内核之上。我们将详细讲解Linux内核在Android系统中的关键角色,包括进程管理、内存管理、电源管理、硬件驱动接口(如HAL - Hardware Abstraction Layer)等方面。 重点解析Android如何利用Linux内核的特性,例如Binder IPC机制(虽然Binder在用户空间有其独立实现,但底层依赖Linux内核的驱动)、Ashmem(匿名共享内存)等,来实现系统的高效通信和资源共享。 探讨Android特有的内核补丁和优化,以及这些修改如何适应移动设备的资源限制和特性需求。 Dalvik到ART:Java虚拟机演进之路 Android的应用程序运行在虚拟机之上。本书将详细回顾Dalvik虚拟机的设计和局限性,并重点深入剖析ART(Android Runtime)的实现。 ART如何通过AOT(Ahead-of-Time)编译优化应用启动速度和运行时性能。我们将解析ART的编译过程、Dex文件格式、方法调用机制、垃圾回收(GC)策略等。 深入理解ART的内存模型、线程模型以及与Java GC的交互,为开发者提供优化应用内存占用的理论指导。 探讨ART在JIT(Just-in-Time)编译方面的最新进展,以及AOT和JIT协同工作带来的性能优势。 第二部分:Android框架核心——构建坚固的软件大厦 Android框架是连接底层系统和服务与上层应用的关键桥梁。本部分将逐一解构核心框架组件,揭示其内部运作机制。 Binder IPC:高性能进程间通信的奥秘 Binder是Android系统中最核心的IPC(Inter-Process Communication)机制,支撑着绝大多数系统服务之间的通信。我们将从Binder驱动(内核空间)到Binder代理(用户空间)进行深度解析。 详细讲解Binder的Binder驱动(`drivers/android/binder.c`)、Binder服务(`BinderService`)、Binder客户端(`BinderClient`)的交互流程。 通过源码级别分析Binder的内存管理、线程池、Binder对象的注册与查找(ServiceManager)等关键细节,帮助读者理解其高效、稳定、安全的设计哲学。 探讨Binder在Android系统中的实际应用,如ActivityManagerService, PackageManagerService等系统服务的通信方式。 ActivityManagerService (AMS) 与WindowManagerService (WMS):应用生命周期与窗口管理的双子星 AMS是Android系统中最重要的系统服务之一,负责管理应用程序的生命周期、进程、任务栈、广播接收器等。我们将深入剖析AMS的源码实现,理解其如何启动和管理Activity、Service、BroadcastReceiver,以及如何处理进程的创建、销毁、空闲回收等。 WMS则负责管理应用程序窗口的绘制、显示、动画、布局等。本书将解析WMS如何与SurfaceFlinger协作,实现窗口的合成和渲染,以及窗口的生命周期管理(如窗口的创建、销毁、焦点切换)。 重点讲解AMS和WMS之间的交互,以及它们如何协同工作,共同构建起Android的应用运行环境。 PackageManagerService (PMS):应用安装、卸载与权限管理的守护者 PMS负责管理系统中所有已安装应用程序的信息,包括APK的解析、安装、卸载、权限的授予与撤销、软件包的更新等。 我们将深入剖析PMS如何解析`AndroidManifest.xml`,如何管理应用的数据目录,以及如何处理应用的签名验证和权限检查。 理解PMS如何与ActivityManagerService协作,为应用提供运行环境。 SurfaceFlinger与Hardware Composer (HWC):图形渲染与合成的底层 SurfaceFlinger是Android系统的图形合成器,负责将各个应用窗口的SurfaceBuffer合成为最终显示到屏幕上的图像。我们将深入解析SurfaceFlinger的渲染流程,包括BufferQueue、BufferQueueProducer、BufferQueueConsumer的工作原理。 重点介绍Hardware Composer (HWC) 的作用,以及SurfaceFlinger如何利用HWC进行硬件叠加(Hardware Overlay),从而大幅提升图形渲染效率,降低CPU和GPU的功耗。 理解Hardware Composer HAL接口的设计,以及OEM厂商如何实现HWC以适应不同的硬件平台。 第三部分:Android核心组件源码剖析——深度探索 在掌握了系统框架的核心组件后,本部分将进一步深入到更底层的核心组件,以源码为导向,理解其设计细节和实现逻辑。 Intent与ContentProvider:数据共享与通信的基石 Intent是Android中实现组件间通信的核心机制,用于传递消息、启动组件。我们将解析Intent的传递过程,包括隐式Intent的匹配机制,以及Intent Filter的设计。 ContentProvider是Android中实现跨应用数据共享的标准方式。我们将详细讲解ContentProvider的生命周期、ContentResolver的工作原理、Cursor的封装以及CRUD(Create, Read, Update, Delete)操作的实现。 通过分析ContactsProvider、MediaStore等系统ContentProvider的实现,帮助读者理解如何设计和使用ContentProvider。 Handler、Looper、MessageQueue:Android的线程模型与消息机制 Android的UI线程(主线程)不能执行耗时操作,而Handler、Looper、MessageQueue构成了Android异步消息处理机制的核心。我们将深入剖析这三者的工作原理,包括Message的创建、传递、处理流程。 理解ThreadLocal在Looper中的作用,以及如何创建和管理自定义的HandlerThread。 掌握如何安全地在子线程向主线程发送消息,以及如何在子线程处理耗时任务而不阻塞UI。 Context:应用运行的上下文环境 Context在Android开发中无处不在,它代表了应用程序的运行环境。我们将深入解析Context的继承体系(Application Context, Activity Context, Service Context),以及它们在生命周期和资源访问上的区别。 理解Context如何提供对系统服务、资源文件、数据库等访问的接口。 View系统与自定义View:UI绘制的深入 Android的UI是通过View和ViewGroup组成的视图层级来绘制的。我们将深入剖析View的绘制流程(measure, layout, draw),以及View的事件分发、处理机制。 讲解如何创建自定义View,如何重写onMeasure, onLayout, onDraw方法,以及如何处理用户交互。 探讨View的动画机制,以及View的性能优化技巧。 第四部分:Android进阶主题与性能优化——精益求精 掌握了核心源码后,本部分将探讨一些进阶主题和性能优化策略,帮助开发者写出更健壮、高效的Android应用。 内存管理与垃圾回收优化 深入理解ART虚拟机的内存分配、内存泄漏的检测与规避。 讲解Android内存泄漏的常见原因,如静态持有Context、注册监听器未解注册、Bitmap未及时释放等。 介绍Android Studio的Memory Profiler工具的使用,以及如何通过分析Heap Dump来定位内存问题。 讲解GC(Garbage Collection)的工作原理,以及如何通过优化代码来减少GC的压力,提高应用响应速度。 多线程与并发编程 除了Handler机制,我们将介绍Android中其他的并发编程方式,如Thread, ExecutorService, AsyncTask(已被废弃但仍需理解其演变)等。 讲解线程同步、锁机制(synchronized, ReentrantLock)在Android开发中的应用,以及如何避免死锁和线程安全问题。 探讨Coroutines(协程)在Android中的应用,以及如何利用协程简化异步编程。 性能剖析与优化 掌握Android Studio的CPU Profiler、Network Profiler、Energy Profiler等工具的使用,全面监控应用性能。 讲解UI渲染优化(如避免过度绘制、使用ConstraintLayout、ViewStub等)、网络请求优化、存储优化(数据库、文件I/O)等。 介绍ART的Profile工具,以及如何利用Profile信息优化JIT编译。 Android安全与加固 探讨Android应用程序的安全基础,包括权限管理、数据加密、代码混淆等。 介绍Android的安全机制,如SELinux(Security-Enhanced Linux)在Android中的作用。 讲解应用加固的基本原理和常见技术,以及如何保护应用的知识产权。 适用人群: 具备一定Android应用开发经验,希望深入理解系统底层原理的开发者。 对Android系统架构、组件交互有强烈探索欲望的技术爱好者。 正在为提升应用性能、稳定性、安全性而寻求系统性解决方案的工程师。 对Android Framework源码有浓厚兴趣,希望能够阅读、理解甚至贡献源码的开发者。 本书的价值: 通过对《Android系统架构与源码解析:精进之道》的学习,您将能够: 建立系统观: 从宏观到微观,全面理解Android操作系统的设计理念和架构。 源码驱动: 以源码为依据,而非止步于API文档,真正理解技术的实现细节。 解决疑难: 具备独立分析和解决复杂系统问题、性能瓶颈的能力。 提升技能: 编写更健壮、高效、安全的Android应用,成为更出色的Android开发者。 本书不仅仅是一本技术书籍,更是一场探索Android技术深度与广度的旅程。让我们一起踏上这段精进之道,解锁Android系统的更多可能。
坦白说,技术书籍很容易写得枯燥乏味,尤其是涉及到操作系统底层这种高深莫测的主题,如果作者的笔触不够生动,读者很快就会产生畏难情绪而放弃。这本书的行文风格有一种奇特的魅力,它既保持了技术论述的严谨性,又在关键的概念过渡处,使用了恰到好处的比喻和类比,让人会心一笑之余,瞬间打通了那些晦涩难懂的知识点。比如在解释调度策略的优先级反转问题时,它没有堆砌复杂的数学公式,而是描绘了一个高优先级任务被一个低优先级“看门人”卡住的生动场景,使得抽象的锁竞争问题瞬间可视化了。这种将复杂概念“去魅”的能力,对于非科班出身、但希望系统学习底层原理的工程师来说,简直是福音。它让你在提升技术深度的同时,阅读体验也得到了极大的保障,不会让人觉得学习过程是一种煎熬。