深入浅出Android源代码:基于Android 6.0和实际开发案例剖析

深入浅出Android源代码:基于Android 6.0和实际开发案例剖析 pdf epub mobi txt 电子书 下载 2025

何军 著
图书标签:
  • Android
  • Android源代码
  • Android 6
  • 0
  • 源码分析
  • 深入浅出
  • 技术
  • 开发
  • 移动开发
  • 操作系统
  • 书籍
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121304873
版次:1
商品编码:12066035
包装:平装
开本:16开
出版时间:2017-04-01
用纸:胶版纸
页数:544
字数:745000
正文语种:中文

具体描述

编辑推荐

适读人群 :希望读者通过本书,能对Android有个更全面、更深入的理解。本书面向的读者主要是Framework框架工程师、系统开发工程师、应用开发工程师和ROM开发工程师。

基于Android源代码和实际开发案例分析,让读者在学习过程中进一步吃透源代码。

内容简介

本书基于Android 6.0源代码和实际案例,分析Android系统的框架原理和具体实现。由于Android框架里模块众多,本书只详细分析了框架里的一部分模块,涉及这些模块的原理、架构及代码实现等各个细节,尽量做到让读者知其然,又知其所以然。在Android官方网站,Android分了4层,从高到低分别是应用程序层、应用程序框架层、系统库层和Linux内核层。本书主要涉及应用程序层、应用程序框架层和系统库层。

作者简介

何军,2010年从事Android工作至今,从Android1.6到现在的Android7.0,热爱Android、喜欢钻研、乐于分享。多年的框架开发和应用开发经验,应用商店有多个APP上线作品。热衷于Android源代码的研究,对Android的架构设计和实现原理有深刻的认识和理解。目前就职于某一手机厂商,任职Android Framework框架工程师,负责Framework与APP开发和维护。

目录

第一部分 Android基础篇
第1章 Android简介 2
1.1 Android简介 2
1.2 阅读Android源代码 6
第2章 Android基础类 10
2.1 Android基础类简介 10
2.2 Thread类原理 11
2.3 Mutex与Condition 20
2.3.1 Mutex(AutoMutex)分析 20
2.3.2 Condition代码分析 24
2.4 Android系统智能指针 30
2.4.1 轻量级指针(lp) 30
2.4.2 强指针(sp) 32
第3章 Android上下文环境Context 37
3.1 Context简介 37
3.2 Application运行上下文环境Context的创建过程 40
3.2.1 创建Application Context 41
3.2.2 获得Application Context 47
3.3 Activity运行上下文环境Context的创建过程 48
3.4 Service运行上下文环境Context的创建过程 55
第4章 Android消息机制 59
4.1 Android消息机制原理 59
4.2 创建消息队列和进入消息循环过程 61
4.3 消息的发送过程 70
4.4 消息的处理过程 75
第二部分 Android框架篇
第5章 Android Init进程 78
5.1 Android Init进程简介 78
5.2 klog_init() 函数 83
5.3 process_kernel_cmdline() 函数 85
5.4 signal_handler_init() 函数 86
5.5 property_load_boot_defaults() 函数 89
5.6 属性服务 90
5.6.1 属性服务的初始化与启动 90
5.6.2 属性的设置 91
5.6.3 属性值的获取 95
5.7 解析init.rc配置文件和启动service进程 96
5.7.1 init.rc文件基础介绍 96
5.7.2 解析init.rc文件 100
5.7.3 启动service进程 104
第6章 开机动画bootanimation 108
6.1 开机动画bootanimation原理 108
6.2 开机动画bootanimation的显示过程 111
6.3 开机动画bootanimation的退出过程 127
第7章 Zygote进程 135
7.1 Zygote进程基础介绍 135
7.2 Zygote进程的启动 139
7.2.1 调用startVM() 函数启动虚拟机 143
7.2.2 调用startReg() 函数注册JNI方法 143
7.2.3 调用ZygoteInit类的main() 方法 145
7.3 启动system_server进程 150
7.4 启动APP应用程序进程 155
第8章 SystemServer进程 161
8.1 SystemServer系统服务 161
8.2 SystemServer创建框架核心服务 165
第9章 Android系统的开机与关机 175
9.1 Android系统的开机 175
9.2 Android系统的关机 185
9.3 案例分析 197
9.3.1 Android系统开机时间标志 197
9.3.2 Android系统关机时间标志 198
第10章 Android系统异常问题 199
10.1 addr2line工具 199
10.2 Android Watchdog 207
10.3 Android系统异常问题 217
10.3.1 Android死机 218
10.3.2 Android系统重启 220
10.3.3 Android系统启动异常 233
第11章 ActivityManagerService 236
11.1 ActivityManagerService简介 236
11.2 Activity的启动过程 240
11.2.1 Launcher Activity的onPause() 过程 241
11.2.2 Launcher Activity的onStop() 过程 261
11.2.3 新Activity的onCreate()、onStart()和onResume() 过程 264
11.3 Service的启动过程 273
11.4 Broadcast 280
11.4.1 广播的注册过程 282
11.4.2 广播的发送过程 290
11.4.3 广播的处理过程 295
11.5 进程内存管理 303
11.6 案例分析 320
11.6.1 与Activity有关的例子 320
11.6.2 与BroadCast有关的例子 323
11.6.3 与进程内存有关的例子 329
第12章 Android国际化 331
12.1 CTS与GTS 331
12.2 全球紧急电话策略 337
12.3 Android多语言 345
第三部分 Android ROM UI篇
第13章 Android资源管理系统 354
13.1 资源管理简介 354
13.2 资源初始化过程 361
13.2.1 AssetManager的构造方法 369
13.2.2 AssetManager.java的addAssetPath() 方法 374
13.2.3 Resources的构造方法 375
13.3 资源查找、解析、创建View过程 378
13.3.1 查找资源ID对应的不是文件的过程 380
13.3.2 查找资源ID对应的是文件的过程 382
13.4 主题换肤实现 396
第14章 Android View系统 411
14.1 View系统简介 411
14.2 应用程序Activity的创建 412
14.3 Activity窗口对象PhoneWindow的创建 424
14.4 Activity根视图对象DecorView的创建 432
14.5 ViewRootImpl的创建和添加DecorView对象 440
14.6 View的measure、layout和draw过程 453
14.6.1 View的measure过程 462
14.6.2 View的layout过程 473
14.6.3 View的draw过程 478
14.7 View事件分发 493
14.8 案例分析 503
第15章 Android控件 512
15.1 Android系统控件分析 512
15.1.1 系统控件简介 512
15.1.2 系统控件TextView的属性 514
15.1.3 系统控件TextView的onMeasure() 517
15.1.4 系统控件TextView的onLayout() 523
15.1.5 系统控件TextView的onDraw() 523
15.2 自定义控件 524
15.2.1 定义自定义控件属性 525
15.2.2 实现自定义控件 525
15.2.3 使用自定义控件 527
15.3 Android控件案例分析 527

前言/序言

  说 明
  1.本书涉及C、C++和Java语言,阅读本书最好会这三种编程语言,同时本书还会涉及少量Linux,如果懂Linux更佳。
  2.本书使用两种格式来对代码进行解释。
  第一种,举例如下。
  class Condition {
  public:
  enum {
  PRIVATE = 0,
  SHARED = 1
  };
  //定义两种枚举类型:PRIVATE表示本进程内部使用,SHARED表示用于跨进程共
  //享,如果使用Condition时没有指定具体类型,则默认是PRIVATE类型。
  ……
  }
  这种方式是在代码段内部解释代码,原因是有些类和方法比较复杂,代码非常长,贴完代码之后,可能已经几页纸了,如果这时候在代码段的最后面去解释代码,读者还需要往前翻看需要解释的代码,十分不便。
  第二种,举例如下。
  public final boolean sendMessage(Message msg)
  {
  return sendMessageDelayed(msg, 0);
  }
  代码解释:这里的sendMessage() 方法会调用sendMessageDelayed() 方法,参数msg是具体的Message,而参数0表示这个消息不要延时处理。
  由于这种方式的代码量比较少,可以边看代码边看解释,不用翻页,所以采用这种方式比较方便。
  3.本书是基于Android源代码和实际开发案例分析的,所以阅读本书一定要结合源代码。
  4.大家都知道代码块在Java里叫方法,在C里叫函数,笔者尽量在C、C++中使用“函数”这个叫法,在Java中使用“方法”这个叫法,但也有可能出现混淆。
  5.本书使用了Visio、Edraw和StarUML这3个工具来画图,由于排版的问题,图也许会有不清楚的地方,如果发现这类问题,请发邮件至813126419@qq.com,我会尽快回复。
  6.本书是我个人对Android的理解,难免会有错误,恳请大家指正。



Android 深度探索:从源码解析到实战应用 在移动互联网浪潮席卷全球的今天,Android 操作系统凭借其开放性、灵活性以及庞大的生态系统,已然成为智能设备领域无可争议的霸主。对于每一位渴望深入理解 Android 核心机制,掌握其精髓的开发者而言,阅读源码是必由之路。本书正是应运而生,旨在为读者提供一条清晰、透彻的 Android 源码探索之旅。我们不局限于某一特定版本,而是着眼于 Android 核心架构的演进与不变,结合当下广泛应用的开发模式,通过深入浅出的方式,揭示 Android 的内在运作逻辑。 核心理念:理解而非记忆 我们深知,死记硬背 API 终究难以触及 Android 的本质。因此,本书的核心理念在于“理解”。我们将带领读者循序渐进地剖析 Android 的关键模块,从系统框架、核心服务到关键组件,力求让读者不仅了解“是什么”,更明白“为什么”以及“如何做到”。通过源码级别的分析,我们能看到那些隐藏在 API 背后的设计思想,理解各种决策的权衡,从而培养出真正具备解决复杂问题能力的开发者。 技术深度:源码的温度,原理的光辉 本书将以 Android 开放源代码项目(AOSP)为基础,带领读者深入到 C/C++ 和 Java/Kotlin 的代码海洋中。我们不会罗列冗长的代码片段,而是精选那些最能代表核心机制、最富于启发性的代码段落,进行详细的解读。 系统启动流程: 从 Power On 到第一个 App 启动,整个过程充满了玄机。我们将详细解析 Bootloader、Kernel、Init 进程、Zygote 进程等关键环节,理解它们在系统初始化中的角色和协同工作方式。 Binder 跨进程通信: Android 系统中,进程间的通信至关重要。Binder 作为 Android 最核心的 IPC 机制,其高效、低延迟的特性是无数系统服务的基石。我们将从 Binder Driver、Binder Kernel Driver、Binder IPC 框架以及客户端/服务端的代理类等多个维度,深入理解 Binder 的工作原理,包括服务注册、代理对象的生成、方法调用以及结果回传的全过程。 Activity 和 Fragment 生命周期: 这是 Android 应用开发的基础,但其背后却隐藏着复杂的系统调用和状态管理。我们将结合源码,理解 ActivityManagerService (AMS)、WindowManagerService (WMS) 等系统服务的协同,以及 Activity/Fragment 状态的保存与恢复机制。 View 绘制与事件分发: 每一个像素的呈现,每一次触摸的响应,都离不开 View 系统的精妙设计。我们将深入 View 的 measure、layout、draw 流程,理解 ViewRootImpl、DecorView、ViewGroup、View 等组件的职责,以及事件分发的层层传递与处理机制。 内存管理与垃圾回收: Android 设备的资源有限,高效的内存管理是保证应用流畅运行的关键。我们将探讨 Dalvik/ART 虚拟机中的内存布局、对象分配,以及垃圾回收(GC)算法的原理与优化,帮助读者写出更节省内存的代码。 四大组件深度解析: Activity、Service、BroadcastReceiver、ContentProvider 是 Android 应用的四大基石。我们将逐一深入它们的实现原理,理解它们与系统服务之间的交互,以及它们在组件化开发中的作用。 系统服务剖析: Android 系统由一系列强大的服务构成,如 LocationManagerService, NotificationManagerService, PackageManagerService 等。我们将精选部分关键系统服务,剖析其对外暴露的 API 如何与底层 C/C++ 实现相结合,以及它们如何为上层应用提供服务。 技术广度:连接理论与实践的桥梁 源码解析固然重要,但脱离实际开发场景的源码理解,终究是空中楼阁。本书同样注重将源码的深度与实际开发中的常见问题、最佳实践相结合。 性能优化: 理解源码能够让我们更精准地定位性能瓶颈。我们将结合源码分析,讲解如何通过优化 UI 绘制、减少内存占用、合理使用线程池、避免不必要的 Binder 调用等方式,显著提升应用性能。 内存泄漏排查: 内存泄漏是 Android 开发中的“顽疾”。通过对内存分配、对象生命周期以及 GC 机制的深入理解,本书将指导读者如何利用各种工具(如 LeakCanary, Android Studio Profiler)结合源码原理,有效地发现和解决内存泄漏问题。 多线程与并发: Android 应用的响应式设计离不开多线程。我们将深入 Android 的线程模型,讲解 Thread, Handler, Looper, MessageQueue 的协同工作原理,以及 AsyncTask、ThreadPoolExecutor 等并发工具的使用,确保读者能编写出安全、高效的多线程代码。 异步处理与回调机制: 在网络请求、文件 I/O 等耗时操作中,异步处理是必不可少的。我们将深入理解 RxJava/RxAndroid、Kotlin Coroutines 等现代异步编程模型,并将其与 Android 底层异步机制联系起来,帮助读者构建更加优雅和可维护的异步代码。 组件化与模块化: 随着项目规模的增大,组件化和模块化开发成为主流。本书将结合源码中的 Binder、ContentProvider 等机制,讲解如何设计和实现可复用、高内聚的组件,以及如何有效地管理组件间的依赖。 自定义 View 的艺术: 掌握了 View 的绘制与事件分发机制,就如同掌握了绘制 UI 的魔法。我们将从简单的自定义 View 开始,逐步引导读者实现复杂、炫酷的自定义控件,并深入讲解其背后的事件处理逻辑。 理解 Android SDK 的设计哲学: 通过阅读源码,我们不仅能了解 API 的实现,更能体会到 Google 设计者们在 API 设计、抽象层次、接口规范等方面的深思熟虑。这种理解,将有助于我们写出更符合 Android 规范、更易于维护的代码。 学习路径:循序渐进,步步为营 本书的学习路径经过精心设计,力求让不同基础的读者都能从中受益。 1. 基础入门: 从 Android 的整体架构、开发环境搭建开始,为读者打下坚实的理论基础。 2. 核心框架: 逐步深入 Binder、Activity/Fragment 生命周期、View 系统等 Android 最核心的模块,建立起对系统运作方式的宏观认识。 3. 组件与服务: 详细剖析四大组件的原理,并进一步探索常用的系统服务,理解它们在实际应用中的调用方式。 4. 高级主题与实战: 结合性能优化、内存管理、异步处理、组件化等实际开发中的挑战,将源码知识转化为解决实际问题的能力。 5. 深入研究: 为有志于更深层次探索的读者,提供进一步研究的方向和思路。 目标读者: 希望深入理解 Android 系统底层机制的开发者。 遇到性能瓶颈或内存泄漏等疑难杂症,寻求根本解决方案的开发者。 有志于从事 Android Framework 层开发或底层优化的工程师。 希望构建更健壮、可维护、高性能 Android 应用的团队。 对 Android 操作系统原理充满好奇心的技术爱好者。 结语: Android 的世界广阔而深邃,源码正是打开这扇大门的最直接钥匙。本书不仅仅是一本技术书籍,更是一次与 Android 灵魂对话的旅程。我们相信,通过跟随本书的引导,您将不仅仅是掌握了 Android 的技术,更能领悟到其背后精妙的设计思想,从而蜕变为一名更优秀的 Android 工程师。让我们一起,在代码的海洋中,点亮原理之光,铸就卓越应用!

用户评价

评分

这本书的封面设计就足够吸引我了,那种简洁而又富有深度的视觉风格,让人一眼就能感受到作者在内容上的用心。我翻阅了一下目录,感觉作者对Android的理解非常透彻,从基础的架构到核心的组件,再到具体的应用场景,几乎涵盖了Android开发的全貌。特别是看到“基于Android 6.0”这个字样,我的兴趣更是被提了起来。Android 6.0(Marshmallow)是一个非常重要的里程碑版本,它引入了许多影响深远的新特性,比如运行时权限、Doze模式、Now on Tap等等。很多市面上同类书籍可能只停留在更早的版本,或者只是浅尝辄止地介绍新特性,而这本书承诺要“深入浅出”,这让我对它能够对6.0版本进行系统性的、深入的剖析充满了期待。而且,它还强调“实际开发案例剖析”,这对于像我这样希望将理论知识转化为实践技能的读者来说,是至关重要的。理论学习固然重要,但没有实际案例的支撑,很容易流于空谈。我非常期待书中能提供一些贴合实际开发中会遇到的问题,并且能够通过剖析源码来讲解如何解决这些问题,而不是简单地给出API的使用方法。如果这本书真的能做到这一点,那么它将是我Android开发道路上的一位得力助手。

评分

我是一位对Android底层技术一直充满好奇的开发者,平时在工作中也经常会遇到一些难以解释的现象,比如某个系统服务为什么会这样工作,或者某个UI绘制的流程到底是如何实现的。市面上有很多Android开发的书籍,但很多都侧重于应用层的API讲解,对于源码的剖析相对较少,或者即使有,也往往停留在比较表面的层次。而这本书的标题——“深入浅出Android源代码”,恰恰触碰到了我的痛点。我特别希望它能够带领我一步步地揭开Android系统的神秘面纱,理解其核心组件的运作机制,比如ActivityManagerService、WindowManagerService、PackageManagerService等等。如果书中能够像剥洋葱一样,一层层地深入分析这些服务的源码,并且用清晰易懂的语言来解释复杂的逻辑,那简直就是我梦寐以求的学习材料。而且,我注意到它还提到了“基于Android 6.0”,这让我很兴奋,因为6.0引入了许多新的系统级特性,如果这本书能深入剖析这些新特性背后的源码实现,比如运行时权限的分配机制、Doze模式的节能原理等,那将是极具价值的学习内容。我希望这本书能够让我从“知其然”到“知其所以然”,真正理解Android的“内功心法”。

评分

最近我在尝试开发一些比较复杂的Android应用,在遇到一些性能瓶颈或者内存泄漏的问题时,总是感觉力不从心。虽然我可以通过搜索引擎找到一些解决问题的零散方法,但总觉得治标不治本,缺乏对问题根源的深刻理解。这本书的名字,《深入浅出Android源代码:基于Android 6.0和实际开发案例剖析》,听起来就非常契合我的需求。我尤其看重“实际开发案例剖析”这个部分,因为这直接关系到我能否将学到的知识应用到实际工作中。我希望书中能够提供一些典型场景下的开发案例,比如如何优化启动速度、如何处理图片加载、如何进行网络请求的性能优化等等,并且详细地讲解在这些案例中,Android系统内部是如何运作的,哪些源码是值得我们关注的,以及我们可以在哪些地方进行干预来提升应用性能。如果作者能够结合Android 6.0的一些新特性,来讲解这些优化技巧,那效果会更好。比如,Android 6.0的Doze模式对应用耗电有很大影响,如果书中能分析Doze模式的源码,并给出相应的适配建议,那将非常有价值。我非常期待这本书能够成为我解决实际开发难题的“秘籍”。

评分

我对Android系统的设计理念和演进历程一直很感兴趣。每次更新Android版本,总会引入一些新的架构调整或者核心组件的改进。这本书提到“基于Android 6.0”,让我对它如何剖析6.0这个版本的独特之处充满好奇。6.0版本在许多方面都进行了重大的更新,比如它对应用的权限管理方式进行了颠覆性的改变,不再是安装时一次性授予,而是运行时按需申请。这种改变背后必然涉及大量系统层面的源码调整。我希望这本书能够深入分析这些源码,让我理解权限管理背后的逻辑,以及开发者应该如何正确地适配这种新的权限模型。此外,6.0的Doze模式和App Standby也对应用的后台行为产生了深远影响,如果书中能够详细剖析这些特性的源码实现,揭示它们是如何工作的,以及开发者如何与之协同,那将是非常宝贵的知识。我不仅仅是想知道API怎么用,更想知道API背后是怎么实现的,为什么会这样设计。这本书如果能做到这一点,那它在我心中的价值将远超一般的技术书籍。

评分

我一直在寻找一本能够真正帮助我理解Android系统“骨架”的书籍,而不是仅仅停留在API的表面。市面上很多Android开发书籍,要么过于浅显,要么过于晦涩。这本书的标题,《深入浅出Android源代码:基于Android 6.0和实际开发案例剖析》,听起来找到了一个很好的平衡点。“深入浅出”是关键,我希望它能够将复杂的源码内容用清晰易懂的方式讲解出来,就像一个经验丰富的导师,能够循循善诱地引导读者理解Android的精髓。同时,“基于Android 6.0”这个定位也非常有吸引力,因为6.0是一个承前启后的重要版本,理解它的源码有助于我更好地理解后续版本的变化。更重要的是,“实际开发案例剖析”这一点,我非常看重。我希望它能提供一些真实项目开发中会遇到的问题,并且通过剖析相关的Android源代码来给出解决方案,而不是简单地罗列一些技巧。例如,如何通过源码理解View的绘制流程,如何分析Activity的生命周期,或者如何追踪一个Intent的传递过程等等,这些都是我非常想深入了解的。这本书如果能在这方面做得出色,那它将是我Android学习旅程中不可或缺的伙伴。

评分

沟沟壑壑会更加符合和规范图发给基金会共同

评分

一直想买。。。

评分

很喜欢,东西不错,支持京东

评分

之前看的书都是4.0的,换6.0的看看,一般。

评分

书的内容不错,还算是很新的了

评分

还没来得及细看,应该不错~

评分

很好的书书书

评分

太贵了,很薄的一本,模块太少,讲的还可以

评分

太贵了,很薄的一本,模块太少,讲的还可以

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.qciss.net All Rights Reserved. 图书大百科 版权所有