失效链接处理 |
深入理解Android内核设计思想 下册 W??PDF 下蝲
本站整理下蝲Q?/strong>
版权归出版社和原作者所有,链接已删除,误买正?/b>
用户下蝲说明Q?/strong>
?sh)子版仅供预览,下蝲?4时内务必删除,支持正版Q喜Ƣ的误买正版书c:(x)
http://product.dangdang.com/25102881.html
相关截图Q?br />
![]() 资料介:(x) 全书从操作系l的基础知识入手Q全面剖析进E?U程、内存管理、Binder机制、GUI昄pȝ、多媒体理、输入系l、虚拟机{核?j)技术在Android中的实现原理。书中讲q的知识点大部分来源于工E项目研发,因而具有较强的实用性,希望可以让读?ldquo;知其?dng)更知其所以然”。本书分为编译篇、系l原理篇、应用原理篇、系l工L(fng)Q共4?5章,基本늛?jin)参与Android开发所需具备的知识,q过大量囄与实例来引导读者学?fn),以求量在源码分析外者提供更易于理解的思维方式?本书既适合Androidpȝ工程师,也适合于应用开发工E师来阅读,从而提升Android开发能力。读者可以在本书潜移默化的学?fn)过E中更深d理解AndroidpȝQƈ所学知识自然地应用到实际开发难题的解决?/span> 资料目录Q?br /> W? Android~译?/span> W?章 Androidpȝ介 2 1.1 Androidpȝ发展历程 2 1.2 Androidpȝ特点 4 1.3 Androidpȝ框架 8 W?章 Android源码下蝲?qing)编译 11 2.1 Android源码下蝲指南 11 2.1.1 ZRepo和Git?/span> 版本理 11 2.1.2 Android源码下蝲程 12 2.2 原生Androidpȝ~译指南 16 2.2.1 建立~译环境 16 2.2.2 ~译程 19 2.3 定制产品的编译与烧录 22 2.3.1 定制C品 22 2.3.2 Linux内核~译 26 2.3.3 烧录/升pȝ 27 2.4 Android Multilib Build 28 2.5 Androidpȝ映像文g 31 2.5.1 boot.img 32 2.5.2 ramdisk.img 34 2.5.3 system.img 35 2.5.4 Verified Boot 35 2.6 ODEX程 37 2.7 OTApȝ升 39 2.7.1 生成升包 39 2.7.2 获取升包 40 2.7.3 OTA升—Recovery 模式 41 2.8 Android反编译 44 2.9 NDK Build 46 2.10 W三方ROM的移植 48 W?章 Android~译pȝ 50 3.1 Makefile入门 50 3.2 Android~译pȝ 52 3.2.1 Makefile依赖?wi)的概念 53 3.2.2 Android~译pȝ抽象 模型 53 3.2.3 ?wi)根节点droid 54 3.2.4 main.mk解析 55 3.2.5 droidcore节点 59 3.2.6 dist_files 61 3.2.7 Android.mk的编写规则 61 3.3 Jack Toolchain 64 3.4 SDK的编译过E 68 3.4.1 envsetup.sh 68 3.4.2 lunch sdk-eng 70 3.4.3 make sdk 75 3.5 AndroidpȝGDB调试 85 W? Android原理?/span> W?章 操作pȝ基础 90 4.1 计算Zpȝ?/span> QComputer ArchitectureQ 90 4.1.1 ?Z曼结构 90 4.1.2 哈佛(jng)l构 90 4.2 什么是操作pȝ 91 4.3 q程间通信的经典实现 93 4.3.1 ׃n内存 QShared MemoryQ 94 4.3.2 道QPipeQ 95 4.3.3 UNIX Domain Socket 97 4.3.4 RPCQRemote Procedure CallsQ 99 4.4 同步机制的经典实现 100 4.4.1 信号量(SemaphoreQ 100 4.4.2 Mutex 101 4.4.3 程QMonitorQ 101 4.4.4 Linux Futex 102 4.4.5 同步范例 103 4.5 Android中的同步机制 104 4.5.1 q程间同?mdash;—Mutex 104 4.5.2 条g判断——Condition 105 4.5.3 “栅栏、障?rdquo; ——Barrier 107 4.5.4 加解锁的自动化操?/span> ——Autolock 108 4.5.5 d?mdash;—Reader WriterMutex 109 4.6 操作pȝ内存理基础 110 4.6.1 虚拟内存 QVirtual MemoryQ 110 4.6.2 内存保护 QMemory ProtectionQ 113 4.6.3 内存分配与回收 113 4.6.4 q程间通信——mmap 114 4.6.5 写时拯技?/span> QCopy on WriteQ 115 4.7 Android中的Low Memory Killer 115 4.8 Android匿名׃n内存 QAnonymous Shared MemoryQ 118 4.8.1 Ashmem讑֤ 118 4.8.2 Ashmem应用实例 122 4.9 JNI 127 4.9.1 Java函数的本地实现 127 4.9.2 本地代码讉KJVM 130 4.10 Java中的反射机制 132 4.11 学习(fn)Androidpȝ的两条线索 133 W?章 Androidq程/U程?/span> E序内存优化 134 5.1 Androidq程和线E 134 5.2 Handler, MessageQueue, Runnable与Looper 140 5.3 UIȝE?mdash;—ActivityThread 147 5.4 ThreadcR150 5.4.1 Threadcȝ内部原理 150 5.4.2 Thread休眠和唤醒 151 5.4.3 Thread实例 155 5.5 Android应用E序如何利用 CPU的多核处理能力 157 5.6 Android应用E序的典型启 动流E 157 5.7 AndroidE序的内存管理与优化 159 5.7.1 Androidpȝ对内存?/span> 的限制 159 5.7.2 Android中的内存泄露?/span> 内存监测 160 W?章 q程间通信 — Binder 166 6.1 指针 169 6.1.1 指针的设计理c(din)169 6.1.2 强指针sp 172 6.1.3 弱指针wp 173 6.2 q程间的数据传递蝲?/span> ——Parcel 179 6.3 Binder驱动与协议 187 6.3.1 打开Binder驱动 ——binder_open 188 6.3.2 binder_mmap 189 6.3.3 binder_ioctl 192 6.4 “DNS”服务?mdash;—Service Manager(Binder Server) 193 6.4.1 ServiceManager的启动 193 6.4.2 ServiceManager的构建 194 6.4.3 获取ServiceManager?/span> ?mdash;设计思考 199 6.4.4 ServiceManagerProxy 203 6.4.5 IBinder和BpBinder 205 6.4.6 ProcessState和IPCThreadState 207 6.5 Binder客户?mdash;—Binder Client 237 6.6 Android接口描述语言——AIDL 242 6.7 匿名Binder Server 254 W?章 Android启动q程 257 7.1 W一个系l进E(initQ 257 7.1.1 init.rc语法 257 7.1.2 init.rc实例分析 260 7.2 pȝ关键服务的启动简析 261 7.2.1 Android?ldquo;DNS服务?rdquo; ——ServiceManager 261 7.2.2 “孕育”新的U程和进E?/span> ——Zygote 261 7.2.3 Android?ldquo;pȝ服务” ——SystemServer 274 7.2.4 Vold和External Storage 存储讑֤ 276 7.3 多用L(fng)理 282 W?章 理Activity和组件运行状 态的pȝq程——Activity ManagerServiceQAMSQ 284 8.1 AMS功能概述 284 8.2 理当前pȝ中Activity 状?mdash;—Activity Stack 286 8.3 startActivity程 288 8.4 完成同一d?ldquo;集合”——Activity Task 296 8.4.1 “后进先出”——Last InQFirst Out 297 8.4.2 理Activity Task 298 8.5 Instrumentation机制 300 W?章 GUIpȝ — SurfaceFlinger 305 9.1 OpenGL ES与EGL 305 9.2 Android的硬件接?mdash;—HAL 307 9.3 Androidl端昄讑֤?ldquo;化n” ——Gralloc与Framebuffer 309 9.4 Android中的本地H口 313 9.4.1 FramebufferNativeWindow 315 9.4.2 应用E序端的本地H口——Surface 321 9.5 BufferQueue详解 325 9.5.1 BufferQueue的内部原理 325 9.5.2 BufferQueue中的~冲?/span> 分配 328 9.5.3 应用E序的典型绘?/span> 程 333 9.5.4 应用E序与BufferQueue 的关pR339 9.6 SurfaceFlinger 343 9.6.1 “黄a(b)计划”——Project Butter 343 9.6.2 SurfaceFlinger的启动 347 9.6.3 接口的服务端——Client 351 9.7 VSync的生和处理 355 9.7.1 VSync信号的生和 分发 355 9.7.2 VSync信号的处理 361 9.7.3 handleMessageTransaction 363 9.7.4 “界面已经q时/无效Q需要重 新绘?rdquo;——handleMessage Invalidate 367 9.7.5 合成前的准备工作 ——preComposition 369 9.7.6 可见区域 ——rebuildLayerStacks 371 9.7.7 ?ldquo;Composition”搭徏环境 ——setUpHWComposer 375 9.7.8 doDebugFlashRegions 377 9.7.9 doComposition 377 W?0章 GUIpȝ?ldquo;H口理?rdquo; —WMS 385 10.1 “H口理?rdquo;——WMSlD 386 10.1.1 WMS的启动 388 10.1.2 WMS的基功能 388 10.1.3 WMS的工作方式 389 10.1.4 WMSQAMS与Activity 间的联系 390 10.2 H口属性 392 10.2.1 H口cd与层U 392 10.2.2 H口{略 QWindow PolicyQ 396 10.2.3 H口属?/span> QLayoutParamsQ 398 10.3 H口的添加过E 400 10.3.1 pȝH口的添加过E 400 10.3.2 ActivityH口的添?/span> q程 409 10.3.3 H口d实例 412 10.4 Surface理 416 10.4.1 Surface甌程QrelayoutQ 416 10.4.2 Surface的跨q程传递 420 10.4.3 Surface的业务操作 422 10.5 performLayoutAndPlace SurfacesLockedInner 423 10.6 H口大小的计过E 424 10.7 启动H口的添加与销毁 433 10.7.1 启动H口的添加 433 10.7.2 启动H口的销毁 437 10.8 H口动画 438 10.8.1 H口动画cd 439 10.8.2 动画程跟踪——Window StateAnimator 440 10.8.3 AppWindowAnimator 444 10.8.4 动画的执行过E 446 W?1章 让你的界面炫彩v来的GUI pȝ — View体系 452 11.1 应用E序中的View框架 452 11.2 Activity中View Tree?/span> 创徏q程 455 11.3 在WMS中注册窗口 461 11.4 ViewRoot的基本工作方式 463 11.5 View Tree的遍历时机 464 11.6 View Tree的遍历流E 468 11.7 View和ViewGroup属性 477 11.7.1 View的基本属性 477 11.7.2 ViewGroup的属性 482 11.7.3 View、ViewGroup?/span> ViewParent 482 11.7.4 Callback接口 482 11.8 “作画“工具?mdash;—Canvas 484 11.8.1 “l制UI”——Skia 485 11.8.2 数据中介——Surface. lockCanvas 486 11.8.3 解锁q提交结?mdash;—unlock CanvasAndPost 490 11.9 draw和onDraw 491 11.10 View中的消息传递 497 11.10.1 View中TouchEvent 的投递流E 497 11.10.2 ViewGoup中Touch- Event的投递流E 500 11.11 View动画 504 11.12 UiAutomator 509 W?2章 “问渠哪得清如许,为有源头 zL?rdquo;— InputManager Service与输入事件 514 12.1 事g的分cR514 12.2 事g的投递流E 517 12.2.1 InputManagerService 518 12.2.2 InputReaderThread 519 12.2.3 InputDispatcherThread 519 12.2.4 ViewRootImpl对事?/span> 的派发 523 12.3 事g注入 524 W?3章 应用不再同质?— 音频pȝ 526 13.1 音频基础 527 13.1.1 声L 527 13.1.2 音频的录制、存?/span> 与回放 527 13.1.3 音频采样 528 13.1.4 Nyquist?CShannon采样 定律 530 13.1.5 声道和立体声 530 13.1.6 声音定——Weber?C Fechner law 531 13.1.7 音频文g格式 532 13.2 音频框架 532 13.2.1 Linux中的音频框架 532 13.2.2 TinyAlsa 534 13.2.3 Androidpȝ中的 音频框架 536 13.3 音频pȝ的核?mdash;—Audio- Flinger 538 13.3.1 AudioFlinger服务?/span> 启动和运行 538 13.3.2 AudioFlinger寚w?/span> 讑֤的管理 540 13.3.3 PlaybackThread?/span> 循环M 547 13.3.4 AudioMixer 551 13.4 {略的制定?mdash;—Audio- PolicyService 553 13.4.1 AudioPolicyService 概述 554 13.4.2 AudioPolicyService 的启动过E 556 13.4.3 AudioPolicyService 与音频设备 558 13.5 音频的回放——AudioTrack 560 13.5.1 AudioTrack应用实例 560 13.5.2 AudioPolicyService 的\由实现 567 13.6 音频数据 572 13.6.1 AudioTrack中的音频 573 13.6.2 AudioTrack和AudioFlinger 间的数据交互 576 13.6.3 AudioMixer中的 音频 582 13.7 音量控制 584 13.8 音频pȝ的上层徏{ 588 13.8.1 从功能入手 588 13.8.2 MediaPlayer 589 13.8.3 MediaRecorder 592 13.8.4 一个典型的多媒?/span> 录制E序 595 13.8.5 MediaRecorder 源码解析 596 13.8.6 MediaPlayerService析 598 13.9 Android支持的媒体格式 600 13.9.1 音频格式 600 13.9.2 视频格式 601 13.9.3 囄格式 601 13.9.4 |络媒体 602 13.10 ID3信息q 602 13.11 Android多媒体文件管理 606 13.11.1 MediaStore 607 13.11.2 多媒体文件信息的 存储“仓库” ——MediaProvider 608 13.11.3 多媒体文件管理中 ?ldquo;生?rdquo; —MediaScanner 611 W? 应用原理?/span> W?4章 Intent的匹配规则 616 14.1 Intent属性 616 14.2 Intent的匹配规则 618 14.3 Intent匚w源码析 624 W?5章 APK应用E序的资源适配 628 15.1 资源cd 629 15.1.1 状态颜色资源 630 15.1.2 囑Ş资源 631 15.1.3 布局资源 632 15.1.4 菜单资源 633 15.1.5 字符串资源 633 15.1.6 样式资源 634 15.1.7 其他资源 635 15.1.8 属性资源 635 15.2 提供可选资源 638 15.3 最佌源的匚w程 642 15.4 屏幕适配 644 15.4.1 屏幕适配的重要参数 644 15.4.2 如何适配多屏q 646 15.4.3 横竖屏切换的处理 648 W?6章 Android字符~码格式 650 16.1 字符~码格式背景 650 16.2 ISO/IEC 8859 651 16.3 ISO/IEC 10646 651 16.4 Unicode 652 16.5 Stringcd 655 16.5.1 构徏String 655 16.5.2 String对多U编?/span> 的兼宏V656 W?7章 Android和OpenGL ES 660 17.1 3D囑Ş学基 661 17.1.1 计算?D囑Ş 661 17.1.2 囑Ş线 662 17.2 Android中的OpenGL ES介 664 17.3 囑Ş渲染API—EGL 665 17.3.1 EGL与OpenGL ES 665 17.3.2 egl.cfg 665 17.3.3 EGL接口解析 667 17.3.4 EGL实例 670 17.4 化OpenGL ES开?/span> —GLSurfaceView 670 17.5 OpenGL分析利器 —GLTracer 677 W?8章 “pȝ的UI”——SystemUI 685 18.1 SystemUI的组成元素 685 18.2 SystemUI的实现 687 18.3 Android壁纸资源 —WallpaperService 694 18.3.1 WallPaperManager- Service 695 18.3.2 ImageWallpaper 697 W?9章 Android常用的工?/span> “插?rdquo;——Widget机制 700 19.1 “功能的提供?rdquo;——AppWidgetProvider 700 19.2 AppWidgetHost 702 W?0章 Android应用E序 的编译和打包 707 20.1 “另辟y径”采用W三方工?mdash;—Ant 707 20.2 通过命o(h)行编译和打包APK 708 20.3 APK~译q程详解 709 20.4 信息安全基础概述 711 20.5 应用E序{ 716 20.6 应用E序{源码析 719 20.7 APK重签名实例 724 W?1章 Android虚拟机 725 21.1 Android虚拟机基知识 725 21.1.1 Java虚拟机核?j)概c(din)725 21.1.2 LLVM~译器框架 734 21.1.3 Android中的l典 垃圾回收法 736 21.1.4 Art和Dalvik之争 738 21.1.5 Art虚拟机整体框架 741 21.1.6 Android应用E序?/span> 虚拟机 742 21.1.7 Procedure Call Standard for Arm Architecture Q过E调用标准)(j) 744 21.1.8 C 11标准中的?/span> Ҏ(gu) 746 21.2 Android虚拟机核?j)文件格?/span> —Dex字节码 749 21.3 Android虚拟机核?j)文件格?/span> —可执行文件的基石ELF 756 21.3.1 ELF文g格式 756 21.3.2 Linuxq_下ELF文g的加载和动态链接过E 764 21.3.3 Android Linker?/span> 动态链接库 771 21.3.4 Signal Handler?/span> Fault Manager 782 21.4 Android虚拟机核?j)文件格?/span> ——“d?rdquo;OAT 786 21.4.1 OAT文g格式解析 786 21.4.2 OAT的两个编译时机 793 21.5 Android虚拟机的典型 启动程 806 21.6 堆管理器和堆I间释义 815 21.7 Android虚拟Z的线E管理 823 21.7.1 JavaU程的创E 823 21.7.2 U程的挂赯E 827 21.8 Art虚拟Z的代码执?/span> 方式lD 829 21.9 Art虚拟机的“中枢pȝ” ——执行引擎之Interpreter 836 21.10 Art虚拟机的“中枢pȝ”——执行引擎之JIT 839 21.10.1 JIT重出江湖的契机 839 21.10.2 Android N版本中JIT 的设计目标及(qing){略 840 21.10.3 Profile Guided Compilation Q追t技术)(j) 842 21.10.4 AOT Compilation Daemon 843 21.11 Art虚拟机的“中枢pȝ” ——执行引擎之本C码 844 21.12 Android x86版本兼容ARM?/span> q制代码——Native Bridge 864 21.13 Android应用E序调试 原理解析 871 21.13.1 Java代码调试?/span> JDWP协议 872 21.13.2 Native代码调试 879 21.13.3 利用GDB调试 Android Art虚拟机 885 W?2章 Android安全机制透析 887 22.1 Android SecuritylD 887 22.2 SELinux 889 22.2.1 DAC 889 22.2.2 MAC 890 22.2.3 ZMAC的SELinux 890 22.3 Androidpȝ安全保护 的三重利剑 892 22.3.1 W一剑:(x)Permission 机制 893 22.3.2 加强剑:(x)DACQUGOQ?/span> 保护 896 22.3.3 l极剑:(x)SEAndroid 898 22.4 SEAndroid剖析 899 22.4.1 SEAndroid的顶层模型 899 22.4.2 SEAndroid相关的核?/span> 源码 900 22.4.3 SEAndroid标签和规则 901 22.4.4 如何在Androidpȝ?/span> 自定义SEAndroid 903 22.4.5 TE文g的语法规则 905 22.4.6 SEAndroid中的核心(j) M—initq程 907 22.4.7 SEAndroid中的客体 912 22.5 Android讑֤Root析 913 22.6 APK的加Z护分析 916 W? Androidpȝ工具 W?3章 IDE和Gradle 922 23.1 Gradle的核?j)要炏V922 23.1.1 Groovy与Gradle 923 23.1.2 Gradle的生命周期 926 23.2 Gradle的Console语法 927 23.3 Gradle Wrapper和Cache 929 23.4 Android Studio和Gradle 931 23.4.1 Gradle插g基础知识 931 23.4.2 Android Studio中的 Gradle~译脚本 932 W?4章 软g版本理 937 24.1 版本理q 937 24.2 Git的安装 937 24.2.1 Linux环境下安装Git 938 24.2.2 Windows环境?/span> 安装Git 939 24.3 Git的用 939 24.3.1 基础配置 939 24.3.2 新徏仓库 940 24.3.3 文g状态 942 24.3.4 忽略某些文g 943 24.3.5 提交更新 944 24.3.6 其他命o(h) 944 24.4 Git原理析 945 24.4.1 分布式版本系l的特点 946 24.4.2 安全散列法 —SHA-1 947 24.4.3 4个重要对象 948 24.4.4 三个区域 953 24.4.5 分支的概念与实例 954 W?5章 pȝ调试辅助工具 958 25.1 万能模拟?mdash;—Emulator 958 25.1.1 QEMU 958 25.1.2 Android工程?/span> 的QEMU 963 25.1.3 模拟器控制台 QEmulator ConsoleQ 966 25.1.4 实例Qؓ(f)Android 模拟器添加串口功能 969 25.2 此Android非彼Android 970 25.3 快速徏立与模拟器或真机?/span> 通信渠道——ADB 972 25.3.1 ADB的用方法 972 25.3.2 ADB的组成元素 975 25.3.3 ADB源代码解析 976 25.3.4 ADB Protocol 981 25.4 SDK Layoutlib 984 25.5 TraceView和Dmtracedump 985 25.6 Systrace 987 25.7 代码覆盖率统计 992 25.8 模拟GPS位置 995 |