网站颜色:

深入理解Android内核设计思想 林学森 著 计算机软件工程(新).

  • 产品名称:深入理解Android内核设计思...
  • 品牌:POSTS&TELECOMPRESS/人民邮电出版社
  • 书名:深入理解Android内核设计思想(第2版)(上下册)
  • 作者:林学森
  • 定价:158.00元
  • 书名:深入理解Android内核设计思想(第2版)(上下册)
  • 是否是套装:否
  • 出版社名称:人民邮电出版社

深入理解Android内核设计思想

作  者:林学森 著
定  价:158
出 版 社:人民邮电出版社
出版日期:(咨询特价)年07月01日
页  数:996
装  帧:简装
ISBN:34
主编推荐

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

目录
目  录篇  Android编译篇章  Android系统简介  21.1  Android系统发展历程  21.2  Android系统特点  41.3  Android系统框架  8第2章  Android源码及编译  112.1  Android源码指南  112.1.1  基于Repo和Git的版本管理  112.1.2  Android源码流程  122.2  原生Android系统编译指南  162.2.1  建立编译环境  162.2.2  编译流程  192.3  定制产品的编译与烧录  222.3.1  定制新产品  222.3.2  Linux内核编译  262.3.3  烧录/升级系统  272.4  Android Multilib Build  282.5  Android系统映像文件  312.5.1  boot.img  322.5.2  ramdisk.img  342.5.3  system.img  352.5.4  Verified Boot  352.6  ODEX流程  372.7  OTA系统升级  392.7.1  生成升级包  392.7.2  获取升级包  402.7.3  OTA升级—Recovery模式  412.8  Android反编译  442.9  NDK Build  462.10  第三方ROM的移植  48第3章  Android编译系统  503.1  Makefile入门  503.2  Android编译系统  523.2.1  Makefile依赖树的概念  533.2.2  Android编译系统抽象  模型  533.2.3  树根节点droid  543.2.4  main.mk解析  553.2.5  droidcore节点  593.2.6  dist_files  613.2.7  Android.mk的编写规则  613.3  Jack Toolchain  643.4  SDK的编译过程  683.4.1  envsetup.sh  683.4.2  lunch sdk-eng  703.4.3  make sdk  753.5  Android系统GDB调试  85第2篇  Android原理篇第4章  操作系统基础  904.1  计算机体系结构(Computer  Architecture)  904.1.1  冯 诺依曼结构  904.1.2  哈佛结构  904.2  什么是操作系统  914.3  进程间通信的经典实现  934.3.1  共享内存(Shared  Memory)  944.3.2  管道(Pipe)  954.3.3  UNIX Domain Socket  974.3.4  RPC(Remote Procedure Calls)  994.4  同步机制的经典实现  1004.4.1  信号量(Semaphore)  1004.4.2  Mutex  1014.4.3  管程(Monitor)  1014.4.4  Linux Futex  1024.4.5  同步范例  1034.5  Android中的同步机制  1044.5.1  进程间同步——Mutex  1044.5.2  条件判断——Condition  1054.5.3  “栅栏、障碍”  ——Barrier  1074.5.4  加解锁的自动化操作——Autolock  1084.5.5  读写锁——ReaderWriterMutex  1094.6  操作系统内存管理基础  1104.6.1  虚拟内存(Virtual  Memory)  1104.6.2  内存保护(Memory  Protection)  1134.6.3  内存分配与回收  1134.6.4  进程间通信——mmap  1144.6.5  写时拷贝技术(Copy  on Write)  1154.7  Android中的LowMemory  Killer  1154.8  Android匿名共享内存(Anonymous  Shared Memory)  1184.8.1  Ashmem设备  1184.8.2  Ashmem应用实例  1224.9  JNI  1274.9.1  Java函数的本地实现  1274.9.2  本地代码访问JVM  1304.10  Java中的反射机制  1324.11  学习Android系统的两条线索  133第5章  Android进程/线程和程序内存优化  1345.1  Android进程和线程  1345.2  Handler, MessageQueue,Runnable与Looper  1405.3  UI主线程——ActivityThread  1475.4  Thread类  1505.4.1  Thread类的内部原理  1505.4.2  Thread休眠和唤醒  1515.4.3  Thread实例  1555.5  Android应用程序如何利用  CPU的多核处理能力  1575.6  Android应用程序的典型启  动流程  1575.7  Android程序的内存管理与优化  1595.7.1  Android系统对内存使用  的限制  1595.7.2  Android中的内存泄露与  内存监测  160第6章  进程间通信 — Binder  1666.1  智能指针  1696.1.1  智能指针的设计理念  1696.1.2  强指针sp  1726.1.3  弱指针wp  1736.2  进程间的数据传递载体  ——Parcel  1796.3  Binder驱动与协议  1876.3.1  打开Binder驱动——binder_open  1886.3.2  binder_mmap  1896.3.3  binder_ioctl  1926.4  “DNS”服务器——Service  Manager(Binder Server)  1936.4.1  ServiceManager的启动  1936.4.2  ServiceManager的构建  1946.4.3  获取ServiceManager服务—设计思考  1996.4.4  ServiceManagerProxy  2036.4.5  IBinder和BpBinder  2056.4.6  ProcessState和IPCThreadState  2076.5  Binder客户端——Binder Client  2376.6  Android接口描述语言——AIDL  2426.7  匿名Binder Server  254第7章  Android启动过程  2577.1  个系统进程(init)  2577.1.1  init.rc语法  2577.1.2  init.rc实例分析  2607.2  系统关键服务的启动简析  2617.2.1  Android的“DNS服务器”——ServiceManager  2617.2.2  “孕育”新的线程和进程——Zygote  2617.2.3  Android的“系统服务”——SystemServer  2747.2.4  Vold和External Storage存储设备  2767.3  多用户管理  282第8章  管理Activity和组件运行状态的系统进程——Activity  ManagerService(AMS)  2848.1  AMS功能概述  2848.2  管理当前系统中Activity  状态——Activity Stack  2868.3  startActivity流程  2888.4  完成同一任务的“集合”——Activity Task  2968.4.1  “后进先出”——Last In,First Out  2978.4.2  管理Activity Task  2988.5  Instrumentation机制  300第9章  GUI系统 — SurfaceFlinger  3059.1  OpenGL ES与EGL  3059.2  Android的硬件接口——HAL  3079.3  Android终端显示设备的“化身”——Gralloc与Framebuffer  3099.4  Android中的本地窗口  3139.4.1  FramebufferNativeWindow  3159.4.2  应用程序端的本地窗口——Surface  3219.5  BufferQueue详解  3259.5.1  BufferQueue的内部原理  3259.5.2  BufferQueue中的缓冲区分配  3289.5.3  应用程序的典型绘图流程  3339.5.4  应用程序与BufferQueue的关系  3399.6  SurfaceFlinger  3439.6.1  “黄油计划”——Project Butter  3439.6.2  SurfaceFlinger的启动  3479.6.3  接口的服务端——Client  3519.7  VSync的产生和处理  3559.7.1  VSync信号的产生和分发  3559.7.2  VSync信号的处理  3619.7.3  handleMessageTransaction  3639.7.4  “界面已经过时/无效,需要重新绘制”——handleMessage  Invalidate  3679.7.5  合成前的准备工作  ——preComposition  3699.7.6  可见区域  ——rebuildLayerStacks  3719.7.7  为“Composition”搭建环境  ——setUpHWComposer  3759.7.8  doDebugFlashRegions  3779.7.9  doComposition  3770章  GUI系统之“窗口管理员”  —WMS  38510.1  “窗口管理员”——WMS综述  38610.1.1  WMS的启动  38810.1.2  WMS的基础功能  38810.1.3  WMS的工作方式  38910.1.4  WMS,AMS与Activity  间的  39010.2  窗口属性  39210.2.1  窗口类型与层级  39210.2.2  窗口策略  (Window Policy)  39610.2.3  窗口属性  (LayoutParams)  39810.3  窗口的添加过程  40010.3.1  系统窗口的添加过程  40010.3.2  Activity窗口的添加  过程  40910.3.3  窗口添加实例  41210.4  Surface管理  41610.4.1  Surface申请流程(relayout)  41610.4.2  Surface的跨进程传递  42010.4.3  Surface的业务操作  42210.5  performLayoutAndPlace  SurfacesLockedInner  42310.6  窗口大小的计算过程  42410.7  启动窗口的添加与销毁  43310.7.1  启动窗口的添加  43310.7.2  启动窗口的销毁  43710.8  窗口动画  43810.8.1  窗口动画类型  43910.8.2  动画流程跟踪——Window  StateAnimator  44010.8.3  AppWindowAnimator  44410.8.4  动画的执行过程  4461章  让你的界面炫彩起来的GUI  系统 — View体系  45211.1  应用程序中的View框架  45211.2  Activity中View Tree的  创建过程  45511.3  在WMS中注册窗口  46111.4  ViewRoot的基本工作方式  46311.5  View Tree的遍历时机  46411.6  View Tree的遍历流程  46811.7  View和ViewGroup属性  47711.7.1  View的基本属性  47711.7.2  ViewGroup的属性  48211.7.3  View、ViewGroup和  ViewParent  48211.7.4  Callback接口  48211.8  “作画“工具集——Canvas  48411.8.1  “绘制UI”——Skia  48511.8.2  数据中介——Surface.  lockCanvas  48611.8.3  解锁并提交结果——unlock  CanvasAndPost  49011.9  draw和onDraw  49111.10  View中的消息传递  49711.10.1  View中TouchEvent  的投递流程  49711.10.2  ViewGoup中Touch-  Event的投递流程  50011.11  View动画  50411.12  UiAutomator  5092章  “问渠哪得清如许,为有源头  活水来”— InputManager  Service与输入事件  51412.1  事件的分类  51412.2  事件的投递流程  51712.2.1  InputManagerService  51812.2.2  InputReaderThread  51912.2.3  InputDispatcherThread  51912.2.4  ViewRootImpl对事件  的派发  52312.3  事件注入  5243章  应用不再同质化 — 音频系统  52613.1  音频基础  52713.1.1  声波  52713.1.2  音频的录制、存储  与回放  52713.1.3  音频采样  52813.1.4  Nyquist–Shannon采样  定律  53013.1.5  声道和立体声  53013.1.6  声音定级——Weber–  Fechner law  53113.1.7  音频文件格式  53213.2  音频框架  53213.2.1  Linux中的音频框架  53213.2.2  TinyAlsa  53413.2.3  Android系统中的  音频框架  53613.3  音频系统的核心——Audio-  Flinger  53813.3.1  AudioFlinger服务的  启动和运行  53813.3.2  AudioFlinger对音频  设备的管理  54013.3.3  PlaybackThread的  循环主体  54713.3.4  AudioMixer  55113.4  策略的制定者——Audio-  PolicyService  55313.4.1  AudioPolicyService  概述  55413.4.2  AudioPolicyService  的启动过程  55613.4.3  AudioPolicyService  与音频设备  55813.5  音频流的回放——AudioTrack  56013.5.1  AudioTrack应用实例  56013.5.2  AudioPolicyService  的路由实现  56713.6  音频数据流  57213.6.1  AudioTrack中的音频流  57313.6.2  AudioTrack和AudioFlinger  间的数据交互  57613.6.3  AudioMixer中的  音频流  58213.7  音量控制  58413.8  音频系统的上层建筑  58813.8.1  从功能入手  58813.8.2  MediaPlayer  58913.8.3  MediaRecorder  59213.8.4  一个典型的多媒体  录制程序  59513.8.5  MediaRecorder  源码解析  59613.8.6  MediaPlayerService简析  59813.9  Android支持的媒体格式  60013.9.1  音频格式  60013.9.2  视频格式  60113.9.3  图片格式  60113.9.4  网络流媒体  60213.10  ID3信息简述  60213.11  Android多媒体文件管理  60613.11.1  MediaStore  60713.11.2  多媒体文件信息的  存储“仓库”  ——MediaProvider  60813.11.3  多媒体文件管理中  的“生产者”  —MediaScanner  611第3篇  应用原理篇4章  Intent的匹配规则  61614.1  Intent属性  61614.2  Intent的匹配规则  61814.3  Intent匹配源码简析  6245章  APK应用程序的资源适配  62815.1  资源类型  62915.1.1  状态颜色资源  63015.1.2  图形资源  63115.1.3  布局资源  63215.1.4  菜单资源  63315.1.5  字符串资源  63315.1.6  样式资源  63415.1.7  其他资源  63515.1.8  属性资源  63515.2  提供可选资源  63815.3  最佳资源的匹配流程  64215.4  屏幕适配  64415.4.1  屏幕适配的重要参数  64415.4.2  如何适配多屏幕  64615.4.3  横竖屏切换的处理  6486章  Android字符编码格式  65016.1  字符编码格式背景  65016.2  ISO/IEC 8859  65116.3  ISO/IEC 10646  65116.4  Unicode  65216.5  String类型  65516.5.1  构建String  65516.5.2  String对多种编码  的兼容  6567章  Android和OpenGL ES  66017.1  3D图形学基础  66117.1.1  计算机3D图形  66117.1.2  图形管线  66217.2  Android中的OpenGL ES简介  66417.3  图形渲染API—EGL  66517.3.1  EGL与OpenGL ES  66517.3.2  egl.cfg  66517.3.3  EGL接口解析  66717.3.4  EGL实例  67017.4  简化OpenGL ES开发  —GLSurfaceView  67017.5  OpenGL分析利器  —GLTracer  6778章  “系统的UI”——SystemUI  68518.1  SystemUI的组成素  68518.2  SystemUI的实现  68718.3  Android壁纸资源  —WallpaperService  69418.3.1  WallPaperManager-  Service  69518.3.2  ImageWallpaper  6979章  Android常用的工具“小插件”——Widget机制  70019.1  “功能的提供者”——AppWidgetProvider  70019.2  AppWidgetHost  702第20章  Android应用程序  的编译和打包  70720.1  “另辟蹊径”采用第三方工具——Ant  70720.2  通过命令行编译和打包APK  70820.3  APK编译过程详解  70920.4  信息安全基础概述  71120.5  应用程序签名  71620.6  应用程序签名源码简析  71920.7  APK重签名实例  724第21章  Android虚拟机  72521.1  Android虚拟机基础知识  72521.1.1  Java虚拟机核心概念  72521.1.2  LLVM编译器框架  73421.1.3  Android中的经典  垃圾回收算法  73621.1.4  Art和Dalvik之争  73821.1.5  Art虚拟机整体框架  74121.1.6  Android应用程序与  虚拟机  74221.1.7  Procedure Call Standard  for Arm Architecture  (过程调用标准)  74421.1.8  C++ 11标准中的新  特性  74621.2  Android虚拟机核心文件格式  —Dex字节码  74921.3  Android虚拟机核心文件格式  —可执行文件的基石ELF  75621.3.1  ELF文件格式  75621.3.2  Linux平台下ELF文件的加载和动态链接过程  76421.3.3  Android Linker和  动态链接库  77121.3.4  Signal Handler和  Fault Manager  78221.4  Android虚拟机核心文件格式  ——“主宰者”OAT  78621.4.1  OAT文件格式解析  78621.4.2  OAT的两个编译时机  79321.5  Android虚拟机的典型  启动流程  80621.6  堆管理器和堆空间释义  81521.7  Android虚拟机中的线程管理  82321.7.1  Java线程的创建过程  82321.7.2  线程的挂起过程  82721.8  Art虚拟机中的代码执行  方式综述  82921.9  Art虚拟机的“中枢系统”  ——执行引擎之Interpreter  83621.10  Art虚拟机的“中枢系统”——执行引擎之JIT  83921.10.1  JIT重出江湖的契机  83921.10.2  Android N版本中JIT  的设计目标及策略  84021.10.3  Profile Guided Compilation  (追踪技术)  84221.10.4  AOT Compilation  Daemon  84321.11  Art虚拟机的“中枢系统”  ——执行引擎之本地代码  84421.12  Android x86版本兼容ARM二  进制代码——Native Bridge  86421.13  Android应用程序调试  原理解析  87121.13.1  Java代码调试与  JDWP协议  87221.13.2  Native代码调试  87921.13.3  利用GDB调试  Android Art虚拟机  885第22章  Android安全机制透析  88722.1  Android Security综述  88722.2  SELinux  88922.2.1  DAC  88922.2.2  MAC  89022.2.3  基于MAC的SELinux  89022.3  Android系统安全保护  的三重利剑  89222.3.1  剑:Permission  机制  89322.3.2  加强剑:DAC(UGO)  保护  89622.3.3  终极剑:SEAndroid  89822.4  SEAndroid剖析  89922.4.1  SEAndroid的顶层模型  89922.4.2  SEAndroid相关的核心  源码  90022.4.3  SEAndroid标签和规则  90122.4.4  如何在Android系统中  自定义SEAndroid  90322.4.5  TE文件的语法规则  90522.4.6  SEAndroid中的核心  主体—init进程  90722.4.7  SEAndroid中的客体  91222.5  Android设备Root简析  91322.6  APK的加固保护分析  916第4篇  Android系统工具第23章  IDE和Gradle  92223.1  Gradle的核心要点  92223.1.1  Groovy与Gradle  92323.1.2  Gradle的生命周期  92623.2  Gradle的Console语法  92723.3  Gradle Wrapper和Cache  92923.4  Android Studio和Gradle  93123.4.1  Gradle插件基础知识  93123.4.2  Android Studio中的  Gradle编译脚本  932第24章  软件版本管理  93724.1  版本管理简述  93724.2  Git的安装  93724.2.1  Linux环境下安装Git  93824.2.2  Windows环境下  安装Git  93924.3  Git的使用  93924.3.1  基础配置  93924.3.2  新建仓库  94024.3.3  文件状态  94224.3.4  忽略某些文件  94324.3.5  提交更新  94424.3.6  其他命令  94424.4  Git原理简析  94524.4.1  分布式版本系统的特点  94624.4.2  安全散列算法  —SHA-1  94724.4.3  4个重要对象  94824.4.4  三个区域  95324.4.5  分支的概念与实例  954第25章  系统调试辅助工具  95825.1  万能模拟器——Emulator  95825.1.1  QEMU  95825.1.2  Android工程中  的QEMU  96325.1.3  模拟器控制台  (Emulator Console)  96625.1.4  实例:为Android  模拟器添加串口功能  96925.2  此Android非彼Android  97025.3  快速建立与模拟器或真机的  通信渠道——ADB  97225.3.1  ADB的使用方法  97225.3.2  ADB的组成素  97525.3.3  ADB源代码解析  97625.3.4  ADB Protocol  98125.4  SDK Layoutlib  98425.5  TraceView和Dmtracedump  98525.6  Systrace  98725.7  代码覆盖率统计  99225.8  模拟GPS位置  995
内容虚线

内容简介

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

作者简介

林学森 著

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

热门设计服务