书籍作者:中兴通讯终端事业部 | ISBN:9787111726005 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:5969 |
创建日期:2024-04-01 | 发布日期:2024-04-01 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
这是一本针对Android全系统性能优化的著作,面向应用开发、系统框架定制开发、整机性能优化3大场景,系统、深入地讲解Android系统的卡顿优化、稳定性优化、续航优化的策略与方法。本书是中兴通讯官方多年Android系统优化经验的总结,书中用55个实际的性能优化案例,图文并茂、深入浅出地讲解了分析问题的思路和解决问题的过程。
全书内容分为三个部分:
(1)卡顿优化(第1~2章)
围绕应用优化和系统优化全面展开:应用优化方面,首先从应用优化的角度介绍了卡顿的各种常见原因以及相关技术,然后从应用耗时和应用内存两个维度分析了10余个案例;系统优化方面,首先介绍了系统优化的各种策略,然后分析了系统侧卡顿的7个典型案例
(2)稳定性优化(第3~4章)
围绕高通、MTK、展锐三大平台的死机问题和黑屏问题展开,既介绍了出现这两类问题的常见原因和分析问题的方法,又详细分析了20多个各种类型的案例,涵盖应用异常和系统异常的各个方面。
(3)续航优化(第5~6章)
重点讲解了外设异常、应用异常、系统组件异常等引发的续航问题的定位方法和优化策略,包含近20个来自各种应用场景的案例。
中兴通讯有限公司终端事业部
于1998年开始从事手机产品的研发和生产,持续打造以智能手机为核心的“1+2+N”智慧生态,覆盖运动健康、影音娱乐、商务出行、家庭教育4大场景。用户遍布全球160多个国家和地区,手机活跃用户超过1亿,在Android系统的性能优化方面积累了丰富的经验。在全球范围内与3000+渠道合作伙伴开展紧密合作,并与全球50家顶级运营商建立战略合作关系。
中兴手机持续强化“创行力”,即创新力+行动力,不断推进前沿技术落地商用。近两年,坚持从手机显示和影像两个最重要的方面打造特色。作为屏下摄像手机的先驱,持续3代产品行业商用领先。影像方面,Axon率先推出三主摄计算摄影,Nubia创新35mm影像系统。
移动互联产品方面,5G CPE全球市占率第一。拥有个人和家庭数据终端、工业互联终端、车联网终端三大产品解决方案。
(1)作者背景:本书由中兴通讯终端事业部撰写,总结了他们在手机产品研发领域的20余年经验以及Android系统优化领域的10余年经验。
(2)Android全系统优化:既涵盖Android的应用优化、系统优化、整机优化,又包括硬件优化和外设优化,360°全覆盖。
(3)大量策略方法:针对各种场景的典型问题,给出了经验性的性能优化策略,既有分析问题的思路,也有解决问题的方法。
(4)55个典型案例:围绕卡顿优化、稳定性优化、续航优化3个方面,从Android的应用优化、系统优化、整机优化、硬件优化、外设优化方面透彻分析了55个典型的案例。
为何写作本书
市面上关于Android操作系统和Android应用开发等不同方向的书有很多,其中也
有很多关于性能优化方面的著作,但大都偏理论,与实践结合得并不紧密。我们买过很
多系统优化类图书,但在实际应用时,往往需要从不同的书中找不同的内容,比如从一
本书中获取基础知识,然后到案例书中去找应用。如果能有一本书将二者结合起来,对
新入行的读者会非常有用。
自从2010年开始接触Android开发以来,我们在每个阶段都有很多意想不到的困
惑,从一开始写上层应用到现在针对全系统的性能优化,每到一个新的业务领域,都会
遇到无数未知的问题,充满惶恐的同时也在不断解决问题的过程中快速成长。
在应用开发的时期,我们经常会遇到如下问题:程序异常退出;复杂的业务逻辑和
性能之间总是有极大的冲突,优化时间较少;应用上线后稳定性问题突出;要适配不同
的Android操作系统版本,适配不同的屏幕大小;要与各个手机厂家定制系统不断磨合,
集成各种推送,寻找各种能让应用活下来的方法。
在定制系统框架开发的时期,这完全是一个新的领域,遇到的问题就更多,但显而
易见的一点是服务意识要更强烈,向上要兼容好应用,向下要解释好驱动和内核甚至射
频侧传递过来的数据,不能让框架阻塞住。这个时期面临的问题主要表现在以下几个方
面:每一代Android系统升级都会对框架进行很多修改,如对刘海屏、多屏的支持,对
性能的优化等;无数复杂的ROM定制开发需求都会涉及对框架的改造,一旦处理不好,
就会造成严重后果,比如为了使应用更快启动,要对应用启动流程足够熟悉,再如为了
做自动抢红包功能,需要对无障碍功能和底层控件、底层代码足够熟悉,因为这些是系
统中使用频率极高的,一旦异常就会出现严重系统故障;最后是框架层修改、整机续航
以及反应速度之间的冲突。不过随着框架开发的深入,很多问题都可以迎刃而解,更多
的是寻找平衡。
在整机性能优化时期,我们需要考虑的问题就更加系统,甚至有相当一部分精力是
在对硬件进行差异分析。确保硬件无故障后,还需要确保驱动兼容,并改造内核代码。
不仅要实现功能,还要防御上层应用或者框架开发引入的新问题,并能精准找到问题,
帮助其他层的同事找到问题根因。此时就涉及牵头一些系统方案的架构改造,比如多窗
口机制的优化,多设备屏幕共享机制,以及确保游戏手机的稳定高刷帧率。做水桶旗舰
机的时候,又需要充分兼顾发热和游戏帧率,还需要想办法缓解因降低成本选用低配置
机带来的性能下降问题。更严重的时候会遇到整机稳定性问题,比如手机黑屏、手机反
复重启或者卡死无响应等情况,这些都需要深入分析。
总结这三个阶段,解决问题时大都是问题和好奇心驱动,如这个问题的根因是什么。
当然,大多数时候都是不能快速得到答案的,但看透代码以后会非常享受那一瞬间的豁
然开朗。出于经验总结的考虑,我们觉得有必要写一本与快、稳、省优化案例相关的书,
记录过去的同时,也为同行们快速解决问题提供一些可以借鉴的经验,让更多读者少走
弯路。文中很多典型案例可能是业内资深的性能领域系统工程师们也或多或少会遇到的,
希望能通过这种方式与大家交流学习。
书中内容仅代表个人观点,是个人从技术角度对过去工作中的经验教训的总结。但
技术永无止境,个人水平也相对有限,文中难免有错误,还请读者包涵、赐教。
【本书主要内容】
本书包含卡顿优化、稳定性优化、续航优化三个部分,介绍Android系统性能优化
相关技术原理和一些典型的优化案例。
第一部分 卡顿优化
从应用代码实现引发的卡顿和系统优化卡顿的措施两个方面进行介绍。
第1章介绍卡顿的定义、分类,以及应用代码中出现的耗时操作和内存使用不规范
导致的卡顿案例。
第2章介绍系统如何管控应用的各类异常行为来避免卡顿,重点介绍应用自启动管
控策略、消息推送策略、关联启动管控策略等基本概念和典型控制案例。
第二部分 稳定性优化
重点介绍整机死机和黑屏两类现象相关的基础知识与案例。
第3章介绍高通、MTK、展锐三大平台的死机问题分析方法,案例涉及操作系统、
DDR等软硬件结合的领域。
第4章介绍系统本身异常和应用异常引起的手机黑屏问题与处理方法。
第三部分 续航优化
重点介绍外设异常、应用异常引发的续航问题以及系统层为提升续航能力采取的控
制措施。
第5章介绍整机功耗优化的基础知识和基本操作,以及核心部件的电流优化方法。
第6章介绍续航和续航优化的基本概念及相关技术、系统级优化方案、应用异常优
化案例等。
【本书特色】
从技术角度来看,整机性能优化工作对研发人员的能力要求是极高的,在各个大厂
负责这部分的人员通常都是资深的高级工程师,他们是这样一群人:应用开发搞不定的
疑难问题,他们能搞定;框架实现不了的疑难需求,他们能搞定;整机出现的疑难杂症,
他们能搞定。
本书最大的特色在于系统化地介绍了要进入这个群体应该具备哪些高阶知识和能力,
会用哪些工具,按照什么思路来分析快、稳、省问题。本书由浅入深,从Android系统
卡顿顽疾开始,深入到稳定性疑难问题,最后分析整机续航和功耗优化问题。本书并没
有介绍基本应用开发知识,而是将重点放在开发人员需要多年经验才能积累出来的技术
图谱上。有些环节需要大家特别清楚硬件基本原理,本书也会对关键点进行讲解。每个
领域都会用我们从业过程中遇到的真实案例加以介绍,也许在阅读本书的过程中,大家
会发现正在开发或者优化的手机也有相同的问题,但我更希望大家能举一反三,通过案
例去学习代码。更重要的是,也许未来真正意义上的国产终端操作系统里有你我的一行
代码。
【本书读者对象】
本书适合以下读者阅读:
T有一定工作经验的Android应用开发者,对应用性能优化有一定的认识;
T有一定工作经验的Android性能、功耗、续航优化方向的系统工程师;
T对Android系统快、稳、省优化感兴趣的读者。
【如何阅读本书】
不同的读者可根据自身领域和水平选读不同的章节。
对于有一定应用开发经验的读者,建议重点阅读卡顿优化部分,了解人们容易忽
略的一些引发卡顿的编码习惯,熟悉一些内存优化、内存问题分析的方法。阅读第2章
可以了解系统会对三方应用采取哪些管控措施,这对分析应用自身的性能问题有较大的
帮助。
对于从事稳定性、功耗、续航优化相关工作的读者,建议通读全书,了解系统优化
过程中如何对应用、核心外设、Android框架和内核等进行优化。
对于从事硬件兼容性或者DDR驱动相关工作的读者,建议阅读稳定性部分,了解硬
件对整机功耗以及稳定性的影响。
前言
第一部分 卡顿优化
第1章 应用优化案例 ·······················3
1.1 卡顿基本概念 ······························3
1.1.1 卡顿的定义与分类 ···············3
1.1.2 卡顿原因汇总 ·····················6
1.2 卡顿优化涉及的相关技术 ············14
1.2.1 CPU ·······························14
1.2.2 SoC平台 ·························17
1.2.3 CGroup ···························19
1.2.4 cpuset配置 ······················21
1.2.5 UFS与eMMC ··················23
1.2.6 LCD与屏幕刷新率·············24
1.3 应用耗时操作案例 ······················29
1.3.1 案例1:平台能力有限与
布局过于复杂 ···················29
1.3.2 案例2:关键路径频繁I/O
操作 ······························31
1.3.3 案例3:核心函数费时操作···35
1.3.4 案例4:关键路径频繁数据库
操作 ······························35
1.3.5 案例5:Binder风暴 ···········38
1.3.6 案例6:UI线程非绘制任务阻
塞绘制 ····························43
1.3.7 案例7:非UI线程上绘制操作
引发阻塞 ·························44
1.4 应用内存案例 ····························46
1.4.1 案例1:联系人应用内存
泄漏 ······························47
1.4.2 案例2:SystemUI进程Binder
内存泄漏 ·························48
1.4.3 案例3:system内存告警
问题 ······························51
1.4.4 案例4:应用句柄泄漏 ········56
1.4.5 案例5:adj优先级不当引发后
台应用无法被及时回收 ········59
第2章 系统优化策略与案例分析 ···63
2.1 系统优化策略 ····························63
2.1.1 自启动管控策略 ················63
2.1.2 消息推送策略 ···················64
2.1.3 关联启动管控策略 ·············65
2.1.4 系统侧进程启动管控策略 ·····66
2.1.5 内存融合技术 ···················68
2.1.6 低内存查杀 ······················72
2.2 系统侧卡顿优化案例 ··················74
2.2.1 自启动控制案例 ················74
2.2.2 关联启动控制案例 ·············76
2.2.3 线程调度优化案例 ·············80
2.2.4 应用启动卡顿案例 ·············81
2.2.5 VSync不均匀案例 ·············86
2.2.6 CPU调频优化案例 ·············89
2.2.7 I/O卡顿案例 ····················92
第二部分 稳定性优化
第3章 死机重启问题优化策略与
案例分析 ····························97
3.1 死机重启问题相关概念 ···············97
3.1.1 死机重启问题的定义 ··········97
3.1.2 死机问题跟踪与定位 ··········98
3.1.3 重启问题跟踪与定位 ·········101
3.2 死机问题案例分析 ·····················104
3.2.1 DDR位翻转案例 ··············105
3.2.2 DDR上电时序不稳定案例 ···109
3.2.3 eMMC长时间无响应导致
冻屏死机案例 ··················111
3.2.4 系统运行内存耗尽案例 ·······114
3.2.5 内存踩踏案例 ··················118
3.2.6 硬件中断风暴踩内存案例 ····123
3.2.7 其他案例 ························127
3.3 重启问题案例分析 ·····················128
3.3.1 SurfaceFlinger内存高占
案例 ·····························128
3.3.2 system_server 句柄耗尽
案例 ·····························131
3.3.3 PID重复使用案例 ·············132
3.3.4 预置应用共享系统进程UID
案例 ·····························134
3.3.5 system_server线程泄漏
案例 ·····························137
3.3.6 内核代码浮点运算内存踩踏
案例 ·····························139
第4章 黑屏问题优化策略与案例
分析 ··································143
4.1 黑屏问题定义和可能的原因 ·······143
4.2 黑屏案例 ··································144
4.2.1 开机流程异常案例 ············144
4.2.2 界面切换黑屏案例 ············147
4.2.3 抖音卡顿黑屏案例 ············150
4.2.4 应用逻辑异常导致黑屏
案例 ·····························152
4.2.5 锁屏黑屏案例 ··················153
第三部分 续航优化
第5章 外设功耗优化策略与案例
分析 ··································157
5.1 功耗基础 ··································157
5.1.1 基础电流分类 ··················158
5.1.2 系统软件与功耗的关系 ·······158
5.1.3 国家3C发热标准解读 ·······160
5.2 外设功耗问题优化策略 ··············161
5.3 外设功耗优化案例 ·····················162
5.3.1 底电流优化案例 ···············162
5.3.2 LCD电流优化案例············167
5.3.3 TP引脚配置优化案例 ········172
5.3.4 音频参数优化案例 ············172
5.3.5 海运模式电流优化案例 ·······174
第6章 系统优化策略与案例分析 ····176
6.1 续航问题的定义与分类 ··············176
6.2 续航优化涉及的相关技术 ···········177
6.2.1 CPU调度机制 ·················178
6.2.2 Alarm和JobScheduler
机制 ······························181
6.2.3 Doze模式 ·······················183
6.2.4 App Standby机制 ·············186
6.2.5 Bucket机制 ····················188
6.3 系统级优化方案 ························189
6.3.1 温控方案优化案例 ············190
6.3.2 媒体扫描优化案例 ············197
6.3.3 GMS应用功耗优化案例 ·····200
6.3.4 5G网络参数优化案例 ········201
6.4 应用异常优化案例 ·····················204
6.4.1 后台应用CPU高占优化
案例 ·····························204
6.4.2 后台应用频繁唤醒优化
案例 ·····························207
6.4.3 后台应用频繁联网优化
案例 ·····························209
6.4.4 后台应用蓝牙扫描优化
案例 ·····························212
6.4.5 后台应用频繁定位优化
案例 ·····························214
6.4.6 应用异常持有亮屏锁优化
案例 ·····························219
后 记 ············································220