当前位置:主页 > 书籍配套资源 > Android配套资源
《深入理解Android内核设计思想(第2版)(上下册)》配套彩图

《深入理解Android内核设计思想(第2版)(上下册)》配套彩图

  • 更新:2022-06-21
  • 大小:10.09 MB
  • 类别:Android
  • 作者:林学森
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

编辑推荐

基于Android SDK zui新版本 全面剖析了进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心知识在Android中的实现原理 Android安全机制 虚拟 内存优化 性能优化通过大量图片与实例来引导读者学习,以求尽量在源码分析外,为读者提供更易于理解的思维路径 由浅入深,由总体框架再到细节实现,让读者尽快了解Android内核的设计思想

内容简介

全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统、虚拟机等核心技术在Android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者“知其然,更知其所以然”。本书分为编译篇、系统原理篇、应用原理篇、系统工具篇,共4篇25章,基本涵盖了参与Android开发所需具备的知识,并通过大量图片与实例来引导读者学习,以求尽量在源码分析外为读者提供更易于理解的思维方式。本书既适合Android系统工程师,也适合于应用开发工程师来阅读,从而提升Android开发能力。读者可以在本书潜移默化的学习过程中更深刻地理解Android系统,并将所学知识自然地应用到实际开发难题的解决中。

作者简介

林学森,作者曾于多家跨国企业担任研发和管理工作,并已在国内外会议、杂志上发表多篇一作文章,获得多个发明专利。现为某世界500强科技公司高级专家、资深架构师,在业界也比较有影响力。

目录

  • 第1篇Android编译篇
  • 第1章Android系统简介2
  • 1.1Android系统发展历程2
  • 1.2Android系统特点4
  • 1.3Android系统框架8
  • 第2章Android源码下载及编译11
  • 2.1Android源码下载指南11
  • 2.1.1基于Repo和Git的版本管理11
  • 2.1.2Android源码下载流程12
  • 2.2原生Android系统编译指南16
  • 2.2.1建立编译环境16
  • 2.2.2编译流程19
  • 2.3定制产品的编译与烧录22
  • 2.3.1定制新产品22
  • 2.3.2Linux内核编译26
  • 2.3.3烧录/升级系统27
  • 2.4AndroidMultilibBuild28
  • 2.5Android系统映像文件31
  • 2.5.1boot.img32
  • 2.5.2ramdisk.img34
  • 2.5.3system.img35
  • 2.5.4VerifiedBoot35
  • 2.6ODEX流程37
  • 2.7OTA系统升级39
  • 2.7.1生成升级包39
  • 2.7.2获取升级包40
  • 2.7.3OTA升级—Recovery模式41
  • 2.8Android反编译44
  • 2.9NDKBuild46
  • 2.10第三方ROM的移植48
  • 第3章Android编译系统50
  • 3.1Makefile入门50
  • 3.2Android编译系统52
  • 3.2.1Makefile依赖树的概念53
  • 3.2.2Android编译系统抽象模型53
  • 3.2.3树根节点droid54
  • 3.2.4main.mk解析55
  • 3.2.5droidcore节点59
  • 3.2.6dist_files61
  • 3.2.7Android.mk的编写规则61
  • 3.3JackToolchain64
  • 3.4SDK的编译过程68
  • 3.4.1envsetup.sh68
  • 3.4.2lunchsdk-eng70
  • 3.4.3makesdk75
  • 3.5Android系统GDB调试85
  • 第2篇Android原理篇
  • 第4章操作系统基础90
  • 4.1计算机体系结构(ComputerArchitecture)90
  • 4.1.1冯?诺依曼结构90
  • 4.1.2哈佛结构90
  • 4.2什么是操作系统91
  • 4.3进程间通信的经典实现93
  • 4.3.1共享内存(SharedMemory)94
  • 4.3.2管道(Pipe)95
  • 4.3.3UNIXDomainSocket97
  • 4.3.4RPC(RemoteProcedureCalls)99
  • 4.4同步机制的经典实现100
  • 4.4.1信号量(Semaphore)100
  • 4.4.2Mutex101
  • 4.4.3管程(Monitor)101
  • 4.4.4LinuxFutex102
  • 4.4.5同步范例103
  • 4.5Android中的同步机制104
  • 4.5.1进程间同步——Mutex104
  • 4.5.2条件判断——Condition105
  • 4.5.3“栅栏、障碍”——Barrier107
  • 4.5.4加解锁的自动化操作——Autolock108
  • 4.5.5读写锁——ReaderWriterMutex109
  • 4.6操作系统内存管理基础110
  • 4.6.1虚拟内存(VirtualMemory)110
  • 4.6.2内存保护(MemoryProtection)113
  • 4.6.3内存分配与回收113
  • 4.6.4进程间通信——mmap114
  • 4.6.5写时拷贝技术(CopyonWrite)115
  • 4.7Android中的LowMemoryKiller115
  • 4.8Android匿名共享内存(AnonymousSharedMemory)118
  • 4.8.1Ashmem设备118
  • 4.8.2Ashmem应用实例122
  • 4.9JNI127
  • 4.9.1Java函数的本地实现127
  • 4.9.2本地代码访问JVM130
  • 4.10Java中的反射机制132
  • 4.11学习Android系统的两条线索133
  • 第5章Android进程/线程和程序内存优化134
  • 5.1Android进程和线程134
  • 5.2Handler,MessageQueue,Runnable与Looper140
  • 5.3UI主线程——ActivityThread147
  • 5.4Thread类150
  • 5.4.1Thread类的内部原理150
  • 5.4.2Thread休眠和唤醒151
  • 5.4.3Thread实例155
  • 5.5Android应用程序如何利用CPU的多核处理能力157
  • 5.6Android应用程序的典型启动流程157
  • 5.7Android程序的内存管理与优化159
  • 5.7.1Android系统对内存使用的限制159
  • 5.7.2Android中的内存泄露与内存监测160
  • 第6章进程间通信—Binder166
  • 6.1智能指针169
  • 6.1.1智能指针的设计理念169
  • 6.1.2强指针sp172
  • 6.1.3弱指针wp173
  • 6.2进程间的数据传递载体——Parcel179
  • 6.3Binder驱动与协议187
  • 6.3.1打开Binder驱动——binder_open188
  • 6.3.2binder_mmap189
  • 6.3.3binder_ioctl192
  • 6.4“DNS”服务器——ServiceManager(BinderServer)193
  • 6.4.1ServiceManager的启动193
  • 6.4.2ServiceManager的构建194
  • 6.4.3获取ServiceManager服务—设计思考199
  • 6.4.4ServiceManagerProxy203
  • 6.4.5IBinder和BpBinder205
  • 6.4.6ProcessState和IPCThreadState207
  • 6.5Binder客户端——BinderClient237
  • 6.6Android接口描述语言——AIDL242
  • 6.7匿名BinderServer254
  • 第7章Android启动过程257
  • 7.1第一个系统进程(init)257
  • 7.1.1init.rc语法257
  • 7.1.2init.rc实例分析260
  • 7.2系统关键服务的启动简析261
  • 7.2.1Android的“DNS服务器”——ServiceManager261
  • 7.2.2“孕育”新的线程和进程——Zygote261
  • 7.2.3Android的“系统服务”——SystemServer274
  • 7.2.4Vold和ExternalStorage存储设备276
  • 7.3多用户管理282
  • 第8章管理Activity和组件运行状态的系统进程——ActivityManagerService(AMS)284
  • 8.1AMS功能概述284
  • 8.2管理当前系统中Activity状态——ActivityStack286
  • 8.3startActivity流程288
  • 8.4完成同一任务的“集合”——ActivityTask296
  • 8.4.1“后进先出”——LastIn,FirstOut297
  • 8.4.2管理ActivityTask298
  • 8.5Instrumentation机制300
  • 第9章GUI系统—SurfaceFlinger305
  • 9.1OpenGLES与EGL305
  • 9.2Android的硬件接口——HAL307
  • 9.3Android终端显示设备的“化身”——Gralloc与Framebuffer309
  • 9.4Android中的本地窗口313
  • 9.4.1FramebufferNativeWindow315
  • 9.4.2应用程序端的本地窗口——Surface321
  • 9.5BufferQueue详解325
  • 9.5.1BufferQueue的内部原理325
  • 9.5.2BufferQueue中的缓冲区分配328
  • 9.5.3应用程序的典型绘图流程333
  • 9.5.4应用程序与BufferQueue的关系339
  • 9.6SurfaceFlinger343
  • 9.6.1“黄油计划”——ProjectButter343
  • 9.6.2SurfaceFlinger的启动347
  • 9.6.3接口的服务端——Client351
  • 9.7VSync的产生和处理355
  • 9.7.1VSync信号的产生和分发355
  • 9.7.2VSync信号的处理361
  • 9.7.3handleMessageTransaction363
  • 9.7.4“界面已经过时/无效,需要重新绘制”——handleMessageInvalidate367
  • 9.7.5合成前的准备工作——preComposition369
  • 9.7.6可见区域——rebuildLayerStacks371
  • 9.7.7为“Composition”搭建环境——setUpHWComposer375
  • 9.7.8doDebugFlashRegions377
  • 9.7.9doComposition377
  • 第10章GUI系统之“窗口管理员”—WMS385
  • 10.1“窗口管理员”——WMS综述386
  • 10.1.1WMS的启动388
  • 10.1.2WMS的基础功能388
  • 10.1.3WMS的工作方式389
  • 10.1.4WMS,AMS与Activity间的联系390
  • 10.2窗口属性392
  • 10.2.1窗口类型与层级392
  • 10.2.2窗口策略(WindowPolicy)396
  • 10.2.3窗口属性(LayoutParams)398
  • 10.3窗口的添加过程400
  • 10.3.1系统窗口的添加过程400
  • 10.3.2Activity窗口的添加过程409
  • 10.3.3窗口添加实例412
  • 10.4Surface管理416
  • 10.4.1Surface申请流程(relayout)416
  • 10.4.2Surface的跨进程传递420
  • 10.4.3Surface的业务操作422
  • 10.5performLayoutAndPlaceSurfacesLockedInner423
  • 10.6窗口大小的计算过程424
  • 10.7启动窗口的添加与销毁433
  • 10.7.1启动窗口的添加433
  • 10.7.2启动窗口的销毁437
  • 10.8窗口动画438
  • 10.8.1窗口动画类型439
  • 10.8.2动画流程跟踪——WindowStateAnimator440
  • 10.8.3AppWindowAnimator444
  • 10.8.4动画的执行过程446
  • 第11章让你的界面炫彩起来的GUI系统—View体系452
  • 第12章“问渠哪得清如许,为有源头活水来”—InputManagerService与输入事件514
  • 12.1事件的分类514
  • 12.2事件的投递流程517
  • 12.2.1InputManagerService518
  • 12.2.2InputReaderThread519
  • 12.2.3InputDispatcherThread519
  • 12.2.4ViewRootImpl对事件的派发523
  • 12.3事件注入524
  • 第13章应用不再同质化—音频系统526
  • 13.1音频基础527
  • 13.2音频框架532
  • 13.3音频系统的核心——Audio-Flinger538
  • 13.4策略的制定者——Audio-PolicyService553
  • 13.5音频流的回放——AudioTrack560
  • 13.6音频数据流572
  • 13.7音量控制584
  • 13.8音频系统的上层建筑588
  • 13.9Android支持的媒体格式600
  • 13.10ID3信息简述602
  • 13.11Android多媒体文件管理606
  • 第3篇应用原理篇
  • 第14章Intent的匹配规则616
  • 第15章APK应用程序的资源适配628
  • 第16章Android字符编码格式650
  • 第17章Android和OpenGLES660
  • 第18章“系统的UI”——SystemUI685
  • 第19章Android常用的工具
  • 第20章Android应用程序的编译和打包707
  • 第21章Android虚拟机725
  • 21.1Android虚拟机基础知识725
  • 21.1.1Java虚拟机核心概念725
  • 21.1.2LLVM编译器框架734
  • 21.1.3Android中的经典垃圾回收算法736
  • 21.1.4Art和Dalvik之争738
  • 21.1.5Art虚拟机整体框架741
  • 21.1.6Android应用程序与虚拟机742
  • 21.1.7ProcedureCallStandardforArmArchitecture(过程调用标准)744
  • 21.1.8C++11标准中的新特性746
  • 21.2Android虚拟机核心文件格式—Dex字节码749
  • 21.3Android虚拟机核心文件格式—可执行文件的基石ELF756
  • 21.3.1ELF文件格式756
  • 21.3.2Linux平台下ELF文件的加载和动态链接过程764
  • 21.3.3AndroidLinker和动态链接库771
  • 21.3.4SignalHandler和FaultManager782
  • 21.4Android虚拟机核心文件格式——“主宰者”OAT786
  • 21.4.1OAT文件格式解析786
  • 21.4.2OAT的两个编译时机793
  • 21.5Android虚拟机的典型启动流程806
  • 21.6堆管理器和堆空间释义815
  • 21.7Android虚拟机中的线程管理823
  • 21.7.1Java线程的创建过程823
  • 21.7.2线程的挂起过程827
  • 21.8Art虚拟机中的代码执行方式综述829
  • 21.9Art虚拟机的“中枢系统”——执行引擎之Interpreter836
  • 21.10Art虚拟机的“中枢系统”——执行引擎之JIT839
  • 21.10.1JIT重出江湖的契机839
  • 21.10.2AndroidN版本中JIT的设计目标及策略840
  • 21.10.3ProfileGuidedCompilation(追踪技术)842
  • 21.10.4AOTCompilationDaemon843
  • 21.11Art虚拟机的“中枢系统”——执行引擎之本地代码844
  • 21.12Androidx86版本兼容ARM二进制代码——NativeBridge864
  • 21.13Android应用程序调试原理解析871
  • 21.13.1Java代码调试与JDWP协议872
  • 21.13.2Native代码调试879
  • 21.13.3利用GDB调试AndroidArt虚拟机885
  • 第22章Android安全机制透析887
  • 22.1AndroidSecurity综述887
  • 22.2SELinux889
  • 22.2.1DAC889
  • 22.2.2MAC890
  • 22.2.3基于MAC的SELinux890
  • 22.3Android系统安全保护的三重利剑892
  • 22.3.1第一剑:Permission机制893
  • 22.3.2加强剑:DAC(UGO)保护896
  • 22.3.3终极剑:SEAndroid898
  • 22.4SEAndroid剖析899
  • 22.4.1SEAndroid的顶层模型899
  • 22.4.2SEAndroid相关的核心源码900
  • 22.4.3SEAndroid标签和规则901
  • 22.4.4如何在Android系统中自定义SEAndroid903
  • 22.4.5TE文件的语法规则905
  • 22.4.6SEAndroid中的核心主体—init进程907
  • 22.4.7SEAndroid中的客体912
  • 22.5Android设备Root简析913
  • 22.6APK的加固保护分析916
  • 第4篇Android系统工具
  • 第23章IDE和Gradle922
  • 23.1Gradle的核心要点922
  • 23.1.1Groovy与Gradle923
  • 23.1.2Gradle的生命周期926
  • 23.2Gradle的Console语法927
  • 23.3GradleWrapper和Cache929
  • 23.4AndroidStudio和Gradle931
  • 23.4.1Gradle插件基础知识931
  • 23.4.2AndroidStudio中的Gradle编译脚本932
  • 第24章软件版本管理937
  • 24.1版本管理简述937
  • 24.2Git的安装937
  • 24.2.1Linux环境下安装Git938
  • 24.2.2Windows环境下安装Git939
  • 24.3Git的使用939
  • 24.3.1基础配置939
  • 24.3.2新建仓库940
  • 24.3.3文件状态942
  • 24.3.4忽略某些文件943
  • 24.3.5提交更新944
  • 24.3.6其他命令944
  • 24.4Git原理简析945
  • 24.4.1分布式版本系统的特点946
  • 24.4.2安全散列算法—SHA-1947
  • 24.4.34个重要对象948
  • 24.4.4三个区域953
  • 24.4.5分支的概念与实例954
  • 第25章系统调试辅助工具958
  • 25.1万能模拟器——Emulator958
  • 25.1.1QEMU958
  • 25.1.2Android工程中的QEMU963
  • 25.1.3模拟器控制台(EmulatorConsole)966
  • 25.1.4实例:为Android模拟器添加串口功能969
  • 25.2此Android非彼Android970
  • 25.3快速建立与模拟器或真机的通信渠道——ADB972
  • 25.3.1ADB的使用方法972
  • 25.3.2ADB的组成元素975
  • 25.3.3ADB源代码解析976
  • 25.3.4ADBProtocol981
  • 25.4SDKLayoutlib984
  • 25.5TraceView和Dmtracedump985
  • 25.6Systrace987
  • 25.7代码覆盖率统计992
  • 25.8模拟GPS位置995

资源下载

资源下载地址1:https://box.lenovo.com/l/S579aR

相关资源

网友留言