安卓进阶三部曲之《Android进阶指北》
《Android进阶指北》是一本Android进阶图书,结合《Android进阶之光》和《Android进阶解密》两本书介绍的知识,一同建立起Android应用开发进阶知识体系。全书共分13章,主要从3个方面来组织内容:(1)Android应用开发所需要掌握的系统源码知识,包括系统源码的下载、编译、调试,包管理机制,输入系统,Native Binder,Java Binder;(2)应用开发必需的知识点,包括Groovy基础、Gradle核心思想、Gradle的Android插件、Android Jetpack架构组件;(3)与跨平台开发相关的知识点,包括跨平台技术演进、Dart基础、Flutter基础。
本书适合有一定基础的Android应用开发工程师和对Android系统源码感兴趣的读者阅读。
目录
[*]第1章 系统源码的下载、编译、调试 5
[*]1.1 使用VirtualBox安装Ubuntu 5
[*]1.1.1 安装Ubuntu的步骤 6
[*]1.1.2 安装增强工具 12
[*]1.2 AOSP源码下载 14
[*]1.2.1 AOSP简介 14
[*]1.2.2 下载repo 15
[*]1.2.3 下载源码 15
[*]1.3 内核源码下载 16
[*]1.4 系统源码的整编和单编 18
[*]1.4.1 编译系统概述 18
[*]1.4.2 编译源码的方式 20
[*]1.4.3 准备编译环境 20
[*]1.4.4 源码整编 21
[*]1.4.5 源码单编 24
[*]1.5 Source Insight导入系统源码 25
[*]1.5.1 新建源码项目 25
[*]1.5.2 定位文件 27
[*]1.5.3 全局搜索 28
[*]1.6 Android Studio导入系统源码 29
[*]1.7 Android Studio调试系统源码 33
[*]1.7.1 AOSP源码项目调试 34
[*]1.7.2 导入部分源码调试 38
[*]1.7.3 新建Android项目调试 39
[*]1.8 本章小结 40
[*]第2章 理解包管理机制和PMS 41
[*]2.1 PackageInstaller的初始化 41
[*]2.1.1 PackageManager简介 42
[*]2.1.2 APK的文件结构和安装方式 42
[*]2.1.3 寻找PackageInstaller入口 43
[*]2.1.4 PackageInstallerActivity解析 47
[*]2.1.5 PackageInstaller初始化的过程 51
[*]2.2 PackageInstaller安装APK过程 52
[*]2.2.1 PackageInstaller中的处理 52
[*]2.2.2 Java框架层的处理 57
[*]2.2.3 PackageInstaller安装APK的过程 59
[*]2.3 PMS处理APK的安装过程 59
[*]2.3.1 PackageHandler处理安装消息 60
[*]2.3.2 复制APK的处理 66
[*]2.3.3 PMS处理APK安装 70
[*]2.3.4 PMS处理APK安装的步骤 76
[*]2.4 PMS的创建过程 77
[*]2.4.1 SystemServer处理部分 77
[*]2.4.2 PMS构造方法 80
[*]2.5 APK解析过程 91
[*]2.5.1 引入PackageParser 91
[*]2.5.2 PackageParser解析APK 92
[*]2.5.3 Package的数据结构 99
[*]2.6 本章小结 100
[*]第3章 理解输入系统和IMS 102
[*]3.1 输入事件传递流程的组成部分 103
[*]3.2 IMS的诞生 105
[*]3.2.1 SystemServer处理部分 105
[*]3.2.2 InputManagerService构造方法 107
[*]3.3 IMS的启动过程 110
[*]3.4 InputDispatcher的启动过程 112
[*]3.5 InputReader处理事件的过程 113
[*]3.6 输入事件的处理总结 119
[*]3.7 InputReader的加工类型 120
[*]3.8 InputDispatcher的分发过程 123
[*]3.8.1 唤醒InputDispatcherThread 123
[*]3.8.2 InputDispatcher进行分发 124
[*]3.9 事件分发到目标窗口的过程 128
[*]3.9.1 为事件寻找合适的分发目标 128
[*]3.9.2 处理点击形式的事件 132
[*]3.9.3 向目标窗口发送事件 135
[*]3.9.4 Motion事件分发过程总结 136
[*]3.10 本章小结 138
[*]第4章 IPC机制 139
[*]4.1 Linux和Android的IPC机制 139
[*]4.1.1 Linux中的IPC机制 139
[*]4.1.2 Android中的IPC机制 141
[*]4.2 开启多进程 142
[*]4.2.1 开启多进程举例 142
[*]4.2.2 开启多进程引出的问题 144
[*]4.3 用Messenger进行进程间通信 146
[*]4.4 使用AIDL实现跨进程方法调用 150
[*]4.4.1 创建AIDL文件 150
[*]4.4.2 创建服务端 152
[*]4.4.3 客户端调用 153
[*]4.5 用ContentProvider进行进程间通信 155
[*]4.5.1 建立数据库,方便ContentProvider使用 155
[*]4.5.2 使用ContentProvider对数据库进行操作 156
[*]4.5.3 在Activity中调用另一个进程的GameProvider方法 158
[*]4.6 用Socket实现跨进程聊天程序 160
[*]4.7 本章小结 167
[*]第5章 Native Binder原理 168
[*]5.1 学习Binder的前置知识点 168
[*]5.1.1 Linux和Binder的IPC通信原理 169
[*]5.1.2 使用Binder的原因 173
[*]5.1.3 学习Binder的原因 174
[*]5.2 ServiceManager中的Binder机制 175
[*]5.2.1 基于Binder通信的C/S架构 175
[*]5.2.2 MediaServer的main函数 176
[*]5.2.3 每个进程唯一的ProcessState实例 177
[*]5.2.4 解析ServiceManager中的Binder机制 180
[*]5.2.5 小结 187
[*]5.3 系统服务的注册过程 187
[*]5.3.1 从调用链角度说明MediaPlayerService的注册过程 187
[*]5.3.2 从进程角度说明MediaPlayerService的注册过程 195
[*]5.3.3 小结 196
[*]5.4 ServiceManager的启动过程 196
[*]5.4.1 打开binder设备 198
[*]5.4.2 注册成为Binder机制的上下文管理者 201
[*]5.4.3 循环等待和处理客户端发来的请求 203
[*]5.5 系统服务的获取过程 206
[*]5.5.1 客户端MediaPlayerService请求获取服务 206
[*]5.5.2 服务端ServiceManager处理请求 212
[*]5.6 本章小结 218
[*]第6章 Java Binder原理 219
[*]6.1 Java Binder的JNI注册 219
[*]6.1.1 Binder类的注册 223
[*]6.1.2 BinderInternal类的注册 224
[*]6.2 Java Binder中系统服务的注册过程 225
[*]6.2.1 将AMS注册到ServiceManager 226
[*]6.2.2 引出JavaBBinder 230
[*]6.2.3 解析JavaBBinder 232
[*]6.2.4 Java Binder架构 234
[*]6.3 本章小结 235
[*]第7章 Groovy基础 236
[*]7.1 Groovy概述 236
[*]7.2 Groovy编写和调试 237
[*]7.3 变量 237
[*]7.4 方法 237
[*]7.5 类 238
[*]7.6 语句 239
[*]7.6.1 断言 239
[*]7.6.2 for循环 239
[*]7.6.3 switch语句 240
[*]7.7 数据类型 241
[*]7.7.1 字符串 241
[*]7.7.2 List 242
[*]7.7.3 Map 242
[*]7.7.4 闭包(Closure) 243
[*]7.8 I/O操作 244
[*]7.8.1 文件读取 244
[*]7.8.2 文件写入 244
[*]7.9 其他 245
[*]7.9.1 asType 245
[*]7.9.2 判断是否为真 245
[*]7.9.3 安全取值 245
[*]7.9.4 with操作符 246
[*]7.10 本章小结 246
[*]第8章 Gradle核心思想 247
[*]8.1 Gradle概述 247
[*]8.1.1 项目自动化 248
[*]8.1.2 构建工具 248
[*]8.1.3 Gradle的特性 253
[*]8.2 Gradle基础知识 255
[*]8.2.1 配置Gradle环境 255
[*]8.2.2 实现Hello World 257
[*]8.2.3 Gradle的任务 258
[*]8.2.4 Gradle日志级别 260
[*]8.2.5 Gradle 命令行 261
[*]8.3 被忽视的Gradle Wrapper 263
[*]8.3.1 为什么需要Gradle Wrapper 263
[*]8.3.2 构建Gradle Wrapper 264
[*]8.3.3 配置Gradle Wrapper 265
[*]8.3.4 使用Gradle Wrapper 266
[*]8.3.5 升级Gradle Wrapper 267
[*]8.3.6 自定义Gradle Wrapper 268
[*]8.4 Gradle插件基础 268
[*]8.4.1 Gradle插件概述 268
[*]8.4.2 应用Gradle插件 270
[*]8.4.3 插件DSL 272
[*]8.4.4 自定义对象插件 273
[*]8.4.5 Gradle插件的作用和优点 274
[*]8.5 自定义Gradle插件 274
[*]8.5.1 在build.gradle中编写 275
[*]8.5.2 在buildSrc工程项目中编写 277
[*]8.5.3 在独立项目中编写 278
[*]8.6 本章小结 281
[*]第9章 Gradle的Android插件 282
[*]9.1 什么是Gradle的Android插件 282
[*]9.2 Android Studio的模块类型和项目视图 283
[*]9.3 项目build.gradle 284
[*]9.4 模块build.gradle 285
[*]9.4.1 Gradle的Android插件类型 286
[*]9.4.2 Android块 286
[*]9.4.3 dependencies块 291
[*]9.5 Android签名文件配置 292
[*]9.5.1 自定义签名信息文件 292
[*]9.5.2 本地添加签名信息文件 293
[*]9.6 Gradle的库依赖 294
[*]9.7 Gradle的库依赖管理 295
[*]9.7.1 Gradle的依赖传递 296
[*]9.7.2 Gradle的依赖检查 296
[*]9.7.3 Gradle的依赖冲突 299
[*]9.8 本章小结 301
[*]第10章 Android Jetpack架构组件 302
[*]10.1 Android Jetpack简介 303
[*]10.2 Android Jetpack分类 303
[*]10.2.1 Architecture 304
[*]10.2.2 Foundationy 305
[*]10.2.3 Behavior 306
[*]10.2.4 UI 307
[*]10.3 在应用中引入Jetpack相关组件 307
[*]10.4 使用Lifecycle 307
[*]10.4.1 为什么需要Lifecycle 307
[*]10.4.2 如何使用Lifecycle 309
[*]10.4.3 Lifecycle应用举例 312
[*]10.4.4 自定义LifecycleOwner 315
[*]10.5 Lifecycle的原理 316
[*]10.5.1 Lifecycle的生命周期状态事件和状态 316
[*]10.5.2 Lifecycle如何观察Activity和Fragment的生命周期 317
[*]10.5.3 Lifecycle关联类 327
[*]10.6 使用LiveData 328
[*]10.6.1 什么是LiveData 328
[*]10.6.2 LiveData的基本用法 329
[*]10.6.3 更改LiveData中的数据 330
[*]10.6.4 合并多个LiveData数据源 332
[*]10.6.5 拓展LiveData对象 333
[*]10.7 LiveData的原理 335
[*]10.7.1 LiveData如何观察组件生命周期变化 335
[*]10.7.2 LiveData的observe方法回调 336
[*]10.7.3 postValue/setValue方法分析 339
[*]10.7.4 Transformations.map方法分析 341
[*]10.7.5 LiveData关联类 343
[*]10.8 使用ViewModel 344
[*]10.8.1 什么是ViewModel 345
[*]10.8.2 ViewModel的基本使用方法 345
[*]10.8.3 ViewModel的生命周期 347
[*]10.9 ViewModel的原理 348
[*]10.10 本章小结 351
[*]第11章 跨平台技术演进 352
[*]11.1 Web App 353
[*]11.2 Hybrid App 353
[*]11.2.1 Cordova 354
[*]11.2.2 Ionic 355
[*]11.2.3 VasSonic 355
[*]11.2.4 微信小程序 356
[*]11.3 语言编译转换 357
[*]11.4 原生渲染 358
[*]11.4.1 React Native 358
[*]11.4.2 Weex 358
[*]11.4.3 快应用 359
[*]11.5 自绘UI 360
[*]11.5.1 Qt 360
[*]11.5.2 Flutter 361
[*]11.6 本章小结 362
[*]第12章 Dart基础 363
[*]12.1 Dart开发环境搭建 363
[*]12.2 Dart概述 364
[*]12.3 Dart的特性和重要概念 365
[*]12.4 Dart关键字 366
[*]12.5 变量 367
[*]12.6 基本数据类型 367
[*]12.6.1 Number 367
[*]12.6.2 String 368
[*]12.6.3 Boolean 368
[*]12.6.4 List 368
[*]12.6.5 Set 369
[*]12.6.6 Map 369
[*]12.7 函数 369
[*]12.7.1 可选参数 370
[*]12.7.2 默认参数值 370
[*]12.7.3 main函数 371
[*]12.7.4 匿名函数 371
[*]12.8 流程控制语句 371
[*]12.8.1 for循环 372
[*]12.8.2 switch和case 372
[*]12.9 捕获异常 373
[*]12.10 为类添加新的功能 373
[*]12.11 库的使用方法 374
[*]12.12 异步支持 375
[*]12.13 使类可调用 376
[*]12.14 创建实例 376
[*]12.15 本章小结 376
[*]第13章 Flutter基础 377
[*]13.1 Flutter开发环境搭建和Hello World 377
[*]13.1.1 Flutter概述 378
[*]13.1.2 Flutter开发环境搭建 378
[*]13.1.3 运行一个Flutter Demo 383
[*]13.1.4 Hello World 385
[*]13.2 Widget基础 386
[*]13.2.1 Widget概述 387
[*]13.2.2 Widget的分类 387
[*]13.2.3 Widget的状态分类 388
[*]13.2.4 根Widget的种类 388
[*]13.3 Basic Widget 389
[*]13.3.1 代码模板和主题 389
[*]13.3.2 文本 390
[*]13.3.3 图片 391
[*]13.3.4 凸起按钮 394
[*]13.3.5 其他Widget 395
[*]13.4 Material组件 397
[*]13.4.1 MaterialApp 398
[*]13.4.2 Scaffold 401
[*]13.4.3 AppBar 403
[*]13.4.4 BottomNavigationBar 405
[*]13.4.5 TabBar 407
[*]13.4.6 Drawer 411
[*]13.5 Scrolling Widget 413
[*]13.5.1 ListView 413
[*]13.5.2 GridView 418
[*]13.5.3 PageView 419
[*]13.6 手势相关Widget 421
[*]13.6.1 指针事件 421
[*]13.6.2 手势 422
[*]13.6.3 使用GestureDetector 423
[*]13.6.4 使用Dismissible 424
[*]13.7 资源和图片 426
[*]13.7.1 指定asset 426
[*]13.7.2 加载文本 427
[*]13.7.3 加载图片 430
[*]13.8 布局Widget 433
[*]13.8.1 线性布局Widget 433
[*]13.8.2 流式布局Widget 434
[*]13.8.3 层式布局Widget 436
[*]13.8.4 弹性布局Widget 438
[*]13.9 网络请求库Dio 440
[*]13.9.1 Dio的使用入门 440
[*]13.9.2 Dio访问网络 441
[*]13.10 JSON数据解析 443
[*]13.10.1 使用json.decode方法 443
[*]13.10.2 手动编写实体类 444
[*]13.10.3 自动生成实体类 445
[*]13.11 路由与数据传递 447
[*]13.11.1 新建路由 447
[*]13.11.2 使用注册路由 450
[*]13.11.3 路由间数据传递 451
[*]13.12 Flutter与Android的相互通信 456
[*]13.12.1 PlatformChannel概述 456
[*]13.12.2 Flutter调用Android 458
[*]13.12.3 Android调用Flutter 46113.13 本章小结 465
下载地址:
侵权联系与免责声明1、本站资源所有言论和图片纯属用户个人意见,与本论坛立场无关
2、本站所有资源收集于互联网,由用户分享,该帖子作者与瑞客论坛不享有任何版权,如有侵权请联系本站删除
3、本站部分内容转载自其它网站,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
如有侵权联系邮箱:ruikelink@gmai.com
资源下载地址和密码(百度云盘):**** Hidden Message ***** 百度网盘信息回帖可见
本资源由Java自学网收集整理【www.javazx.com】 可以下载 强烈支持楼主ing…… 强烈支持楼主ing…… 强烈支持楼主ing…… 看到这帖子真是高兴! 666 安卓进阶三部曲之《Android进阶指北》 安卓进阶三部曲之《Android进阶指北》 安卓进阶三部曲之《Android进阶指北》