瑞客论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1600|回复: 51

安卓进阶三部曲之《Android进阶指北》

[复制链接]

10

主题

168

帖子

2113

积分

金牌会员

Rank: 6Rank: 6

威望
677
贡献
683
热心值
2
金币
751
注册时间
2023-9-23
发表于 2023-12-26 10:49 | 显示全部楼层 |阅读模式

111.png

《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. 第1章 系统源码的下载、编译、调试 5
  2. 1.1 使用VirtualBox安装Ubuntu 5
  3. 1.1.1 安装Ubuntu的步骤 6
  4. 1.1.2 安装增强工具 12
  5. 1.2 AOSP源码下载 14
  6. 1.2.1 AOSP简介 14
  7. 1.2.2 下载repo 15
  8. 1.2.3 下载源码 15
  9. 1.3 内核源码下载 16
  10. 1.4 系统源码的整编和单编 18
  11. 1.4.1 编译系统概述 18
  12. 1.4.2 编译源码的方式 20
  13. 1.4.3 准备编译环境 20
  14. 1.4.4 源码整编 21
  15. 1.4.5 源码单编 24
  16. 1.5 Source Insight导入系统源码 25
  17. 1.5.1 新建源码项目 25
  18. 1.5.2 定位文件 27
  19. 1.5.3 全局搜索 28
  20. 1.6 Android Studio导入系统源码 29
  21. 1.7 Android Studio调试系统源码 33
  22. 1.7.1 AOSP源码项目调试 34
  23. 1.7.2 导入部分源码调试 38
  24. 1.7.3 新建Android项目调试 39
  25. 1.8 本章小结 40
  26. 第2章 理解包管理机制和PMS 41
  27. 2.1 PackageInstaller的初始化 41
  28. 2.1.1 PackageManager简介 42
  29. 2.1.2 APK的文件结构和安装方式 42
  30. 2.1.3 寻找PackageInstaller入口 43
  31. 2.1.4 PackageInstallerActivity解析 47
  32. 2.1.5 PackageInstaller初始化的过程 51
  33. 2.2 PackageInstaller安装APK过程 52
  34. 2.2.1 PackageInstaller中的处理 52
  35. 2.2.2 Java框架层的处理 57
  36. 2.2.3 PackageInstaller安装APK的过程 59
  37. 2.3 PMS处理APK的安装过程 59
  38. 2.3.1 PackageHandler处理安装消息 60
  39. 2.3.2 复制APK的处理 66
  40. 2.3.3 PMS处理APK安装 70
  41. 2.3.4 PMS处理APK安装的步骤 76
  42. 2.4 PMS的创建过程 77
  43. 2.4.1 SystemServer处理部分 77
  44. 2.4.2 PMS构造方法 80
  45. 2.5 APK解析过程 91
  46. 2.5.1 引入PackageParser 91
  47. 2.5.2 PackageParser解析APK 92
  48. 2.5.3 Package的数据结构 99
  49. 2.6 本章小结 100
  50. 第3章 理解输入系统和IMS 102
  51. 3.1 输入事件传递流程的组成部分 103
  52. 3.2 IMS的诞生 105
  53. 3.2.1 SystemServer处理部分 105
  54. 3.2.2 InputManagerService构造方法 107
  55. 3.3 IMS的启动过程 110
  56. 3.4 InputDispatcher的启动过程 112
  57. 3.5 InputReader处理事件的过程 113
  58. 3.6 输入事件的处理总结 119
  59. 3.7 InputReader的加工类型 120
  60. 3.8 InputDispatcher的分发过程 123
  61. 3.8.1 唤醒InputDispatcherThread 123
  62. 3.8.2 InputDispatcher进行分发 124
  63. 3.9 事件分发到目标窗口的过程 128
  64. 3.9.1 为事件寻找合适的分发目标 128
  65. 3.9.2 处理点击形式的事件 132
  66. 3.9.3 向目标窗口发送事件 135
  67. 3.9.4 Motion事件分发过程总结 136
  68. 3.10 本章小结 138
  69. 第4章 IPC机制 139
  70. 4.1 Linux和Android的IPC机制 139
  71. 4.1.1 Linux中的IPC机制 139
  72. 4.1.2 Android中的IPC机制 141
  73. 4.2 开启多进程 142
  74. 4.2.1 开启多进程举例 142
  75. 4.2.2 开启多进程引出的问题 144
  76. 4.3 用Messenger进行进程间通信 146
  77. 4.4 使用AIDL实现跨进程方法调用 150
  78. 4.4.1 创建AIDL文件 150
  79. 4.4.2 创建服务端 152
  80. 4.4.3 客户端调用 153
  81. 4.5 用ContentProvider进行进程间通信 155
  82. 4.5.1 建立数据库,方便ContentProvider使用 155
  83. 4.5.2 使用ContentProvider对数据库进行操作 156
  84. 4.5.3 在Activity中调用另一个进程的GameProvider方法 158
  85. 4.6 用Socket实现跨进程聊天程序 160
  86. 4.7 本章小结 167
  87. 第5章 Native Binder原理 168
  88. 5.1 学习Binder的前置知识点 168
  89. 5.1.1 Linux和Binder的IPC通信原理 169
  90. 5.1.2 使用Binder的原因 173
  91. 5.1.3 学习Binder的原因 174
  92. 5.2 ServiceManager中的Binder机制 175
  93. 5.2.1 基于Binder通信的C/S架构 175
  94. 5.2.2 MediaServer的main函数 176
  95. 5.2.3 每个进程唯一的ProcessState实例 177
  96. 5.2.4 解析ServiceManager中的Binder机制 180
  97. 5.2.5 小结 187
  98. 5.3 系统服务的注册过程 187
  99. 5.3.1 从调用链角度说明MediaPlayerService的注册过程 187
  100. 5.3.2 从进程角度说明MediaPlayerService的注册过程 195
  101. 5.3.3 小结 196
  102. 5.4 ServiceManager的启动过程 196
  103. 5.4.1 打开binder设备 198
  104. 5.4.2 注册成为Binder机制的上下文管理者 201
  105. 5.4.3 循环等待和处理客户端发来的请求 203
  106. 5.5 系统服务的获取过程 206
  107. 5.5.1 客户端MediaPlayerService请求获取服务 206
  108. 5.5.2 服务端ServiceManager处理请求 212
  109. 5.6 本章小结 218
  110. 第6章 Java Binder原理 219
  111. 6.1 Java Binder的JNI注册 219
  112. 6.1.1 Binder类的注册 223
  113. 6.1.2 BinderInternal类的注册 224
  114. 6.2 Java Binder中系统服务的注册过程 225
  115. 6.2.1 将AMS注册到ServiceManager 226
  116. 6.2.2 引出JavaBBinder 230
  117. 6.2.3 解析JavaBBinder 232
  118. 6.2.4 Java Binder架构 234
  119. 6.3 本章小结 235
  120. 第7章 Groovy基础 236
  121. 7.1 Groovy概述 236
  122. 7.2 Groovy编写和调试 237
  123. 7.3 变量 237
  124. 7.4 方法 237
  125. 7.5 类 238
  126. 7.6 语句 239
  127. 7.6.1 断言 239
  128. 7.6.2 for循环 239
  129. 7.6.3 switch语句 240
  130. 7.7 数据类型 241
  131. 7.7.1 字符串 241
  132. 7.7.2 List 242
  133. 7.7.3 Map 242
  134. 7.7.4 闭包(Closure) 243
  135. 7.8 I/O操作 244
  136. 7.8.1 文件读取 244
  137. 7.8.2 文件写入 244
  138. 7.9 其他 245
  139. 7.9.1 asType 245
  140. 7.9.2 判断是否为真 245
  141. 7.9.3 安全取值 245
  142. 7.9.4 with操作符 246
  143. 7.10 本章小结 246
  144. 第8章 Gradle核心思想 247
  145. 8.1 Gradle概述 247
  146. 8.1.1 项目自动化 248
  147. 8.1.2 构建工具 248
  148. 8.1.3 Gradle的特性 253
  149. 8.2 Gradle基础知识 255
  150. 8.2.1 配置Gradle环境 255
  151. 8.2.2 实现Hello World 257
  152. 8.2.3 Gradle的任务 258
  153. 8.2.4 Gradle日志级别 260
  154. 8.2.5 Gradle 命令行 261
  155. 8.3 被忽视的Gradle Wrapper 263
  156. 8.3.1 为什么需要Gradle Wrapper 263
  157. 8.3.2 构建Gradle Wrapper 264
  158. 8.3.3 配置Gradle Wrapper 265
  159. 8.3.4 使用Gradle Wrapper 266
  160. 8.3.5 升级Gradle Wrapper 267
  161. 8.3.6 自定义Gradle Wrapper 268
  162. 8.4 Gradle插件基础 268
  163. 8.4.1 Gradle插件概述 268
  164. 8.4.2 应用Gradle插件 270
  165. 8.4.3 插件DSL 272
  166. 8.4.4 自定义对象插件 273
  167. 8.4.5 Gradle插件的作用和优点 274
  168. 8.5 自定义Gradle插件 274
  169. 8.5.1 在build.gradle中编写 275
  170. 8.5.2 在buildSrc工程项目中编写 277
  171. 8.5.3 在独立项目中编写 278
  172. 8.6 本章小结 281
  173. 第9章 Gradle的Android插件 282
  174. 9.1 什么是Gradle的Android插件 282
  175. 9.2 Android Studio的模块类型和项目视图 283
  176. 9.3 项目build.gradle 284
  177. 9.4 模块build.gradle 285
  178. 9.4.1 Gradle的Android插件类型 286
  179. 9.4.2 Android块 286
  180. 9.4.3 dependencies块 291
  181. 9.5 Android签名文件配置 292
  182. 9.5.1 自定义签名信息文件 292
  183. 9.5.2 本地添加签名信息文件 293
  184. 9.6 Gradle的库依赖 294
  185. 9.7 Gradle的库依赖管理 295
  186. 9.7.1 Gradle的依赖传递 296
  187. 9.7.2 Gradle的依赖检查 296
  188. 9.7.3 Gradle的依赖冲突 299
  189. 9.8 本章小结 301
  190. 第10章 Android Jetpack架构组件 302
  191. 10.1 Android Jetpack简介 303
  192. 10.2 Android Jetpack分类 303
  193. 10.2.1 Architecture 304
  194. 10.2.2 Foundationy 305
  195. 10.2.3 Behavior 306
  196. 10.2.4 UI 307
  197. 10.3 在应用中引入Jetpack相关组件 307
  198. 10.4 使用Lifecycle 307
  199. 10.4.1 为什么需要Lifecycle 307
  200. 10.4.2 如何使用Lifecycle 309
  201. 10.4.3 Lifecycle应用举例 312
  202. 10.4.4 自定义LifecycleOwner 315
  203. 10.5 Lifecycle的原理 316
  204. 10.5.1 Lifecycle的生命周期状态事件和状态 316
  205. 10.5.2 Lifecycle如何观察Activity和Fragment的生命周期 317
  206. 10.5.3 Lifecycle关联类 327
  207. 10.6 使用LiveData 328
  208. 10.6.1 什么是LiveData 328
  209. 10.6.2 LiveData的基本用法 329
  210. 10.6.3 更改LiveData中的数据 330
  211. 10.6.4 合并多个LiveData数据源 332
  212. 10.6.5 拓展LiveData对象 333
  213. 10.7 LiveData的原理 335
  214. 10.7.1 LiveData如何观察组件生命周期变化 335
  215. 10.7.2 LiveData的observe方法回调 336
  216. 10.7.3 postValue/setValue方法分析 339
  217. 10.7.4 Transformations.map方法分析 341
  218. 10.7.5 LiveData关联类 343
  219. 10.8 使用ViewModel 344
  220. 10.8.1 什么是ViewModel 345
  221. 10.8.2 ViewModel的基本使用方法 345
  222. 10.8.3 ViewModel的生命周期 347
  223. 10.9 ViewModel的原理 348
  224. 10.10 本章小结 351
  225. 第11章 跨平台技术演进 352
  226. 11.1 Web App 353
  227. 11.2 Hybrid App 353
  228. 11.2.1 Cordova 354
  229. 11.2.2 Ionic 355
  230. 11.2.3 VasSonic 355
  231. 11.2.4 微信小程序 356
  232. 11.3 语言编译转换 357
  233. 11.4 原生渲染 358
  234. 11.4.1 React Native 358
  235. 11.4.2 Weex 358
  236. 11.4.3 快应用 359
  237. 11.5 自绘UI 360
  238. 11.5.1 Qt 360
  239. 11.5.2 Flutter 361
  240. 11.6 本章小结 362
  241. 第12章 Dart基础 363
  242. 12.1 Dart开发环境搭建 363
  243. 12.2 Dart概述 364
  244. 12.3 Dart的特性和重要概念 365
  245. 12.4 Dart关键字 366
  246. 12.5 变量 367
  247. 12.6 基本数据类型 367
  248. 12.6.1 Number 367
  249. 12.6.2 String 368
  250. 12.6.3 Boolean 368
  251. 12.6.4 List 368
  252. 12.6.5 Set 369
  253. 12.6.6 Map 369
  254. 12.7 函数 369
  255. 12.7.1 可选参数 370
  256. 12.7.2 默认参数值 370
  257. 12.7.3 main函数 371
  258. 12.7.4 匿名函数 371
  259. 12.8 流程控制语句 371
  260. 12.8.1 for循环 372
  261. 12.8.2 switch和case 372
  262. 12.9 捕获异常 373
  263. 12.10 为类添加新的功能 373
  264. 12.11 库的使用方法 374
  265. 12.12 异步支持 375
  266. 12.13 使类可调用 376
  267. 12.14 创建实例 376
  268. 12.15 本章小结 376
  269. 第13章 Flutter基础 377
  270. 13.1 Flutter开发环境搭建和Hello World 377
  271. 13.1.1 Flutter概述 378
  272. 13.1.2 Flutter开发环境搭建 378
  273. 13.1.3 运行一个Flutter Demo 383
  274. 13.1.4 Hello World 385
  275. 13.2 Widget基础 386
  276. 13.2.1 Widget概述 387
  277. 13.2.2 Widget的分类 387
  278. 13.2.3 Widget的状态分类 388
  279. 13.2.4 根Widget的种类 388
  280. 13.3 Basic Widget 389
  281. 13.3.1 代码模板和主题 389
  282. 13.3.2 文本 390
  283. 13.3.3 图片 391
  284. 13.3.4 凸起按钮 394
  285. 13.3.5 其他Widget 395
  286. 13.4 Material组件 397
  287. 13.4.1 MaterialApp 398
  288. 13.4.2 Scaffold 401
  289. 13.4.3 AppBar 403
  290. 13.4.4 BottomNavigationBar 405
  291. 13.4.5 TabBar 407
  292. 13.4.6 Drawer 411
  293. 13.5 Scrolling Widget 413
  294. 13.5.1 ListView 413
  295. 13.5.2 GridView 418
  296. 13.5.3 PageView 419
  297. 13.6 手势相关Widget 421
  298. 13.6.1 指针事件 421
  299. 13.6.2 手势 422
  300. 13.6.3 使用GestureDetector 423
  301. 13.6.4 使用Dismissible 424
  302. 13.7 资源和图片 426
  303. 13.7.1 指定asset 426
  304. 13.7.2 加载文本 427
  305. 13.7.3 加载图片 430
  306. 13.8 布局Widget 433
  307. 13.8.1 线性布局Widget 433
  308. 13.8.2 流式布局Widget 434
  309. 13.8.3 层式布局Widget 436
  310. 13.8.4 弹性布局Widget 438
  311. 13.9 网络请求库Dio 440
  312. 13.9.1 Dio的使用入门 440
  313. 13.9.2 Dio访问网络 441
  314. 13.10 JSON数据解析 443
  315. 13.10.1 使用json.decode方法 443
  316. 13.10.2 手动编写实体类 444
  317. 13.10.3 自动生成实体类 445
  318. 13.11 路由与数据传递 447
  319. 13.11.1 新建路由 447
  320. 13.11.2 使用注册路由 450
  321. 13.11.3 路由间数据传递 451
  322. 13.12 Flutter与Android的相互通信 456
  323. 13.12.1 PlatformChannel概述 456
  324. 13.12.2 Flutter调用Android 458
  325. 13.12.3 Android调用Flutter 461
  326. 13.13 本章小结 465
复制代码

下载地址:

游客,本付费内容需要支付 5金币 才能浏览, 赞助VIP全站免费下载支付


免费评分

参与人数 1金币 +1 热心值 +1 收起 理由
rklt152321 + 1 + 1 很给力!

查看全部评分

回复

使用道具 举报

10

主题

168

帖子

2113

积分

金牌会员

Rank: 6Rank: 6

威望
677
贡献
683
热心值
2
金币
751
注册时间
2023-9-23
 楼主| 发表于 2023-12-26 10:49 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

0

主题

2051

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

威望
4645
贡献
3228
热心值
0
金币
2378
注册时间
2022-9-7
发表于 2023-12-26 18:14 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

0

主题

742

帖子

6761

积分

论坛元老

Rank: 8Rank: 8

威望
3195
贡献
3437
热心值
0
金币
129
注册时间
2022-8-30
发表于 2023-12-26 19:11 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

1

主题

1228

帖子

3868

积分

论坛元老

Rank: 8Rank: 8

威望
1925
贡献
1352
热心值
0
金币
591
注册时间
2020-8-27
发表于 2023-12-26 19:55 | 显示全部楼层
看到这帖子真是高兴!
回复

使用道具 举报

1

主题

403

帖子

2763

积分

金牌会员

Rank: 6Rank: 6

威望
1223
贡献
1221
热心值
0
金币
319
注册时间
2019-12-26
发表于 2023-12-26 21:49 | 显示全部楼层
666
回复

使用道具 举报

0

主题

552

帖子

3086

积分

论坛元老

Rank: 8Rank: 8

威望
1595
贡献
1092
热心值
0
金币
399
注册时间
2023-11-12
发表于 2023-12-26 21:53 | 显示全部楼层
安卓进阶三部曲之《Android进阶指北》
回复

使用道具 举报

0

主题

552

帖子

3086

积分

论坛元老

Rank: 8Rank: 8

威望
1595
贡献
1092
热心值
0
金币
399
注册时间
2023-11-12
发表于 2023-12-26 21:53 | 显示全部楼层
lala1 发表于 2023-12-26 21:53
安卓进阶三部曲之《Android进阶指北》

安卓进阶三部曲之《Android进阶指北》
回复

使用道具 举报

0

主题

552

帖子

3086

积分

论坛元老

Rank: 8Rank: 8

威望
1595
贡献
1092
热心值
0
金币
399
注册时间
2023-11-12
发表于 2023-12-26 22:02 | 显示全部楼层
安卓进阶三部曲之《Android进阶指北》
回复

使用道具 举报

16

主题

1182

帖子

7829

积分

论坛元老

Rank: 8Rank: 8

威望
3386
贡献
2744
热心值
0
金币
1699
注册时间
2023-1-31
发表于 2023-12-26 23:08 | 显示全部楼层
我只是路过打酱油的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|瑞客论坛 |网站地图

GMT+8, 2024-5-18 12:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表