2023年7月9日发(作者:)
《Android进阶指北》—Android书籍⽂章⽬录出版年: 2020-9简介:《Android进阶指北》是⼀本Android进阶图书,结合《Android进阶之光》和《Android进阶解密》两本书介绍的知识,⼀同建⽴起Android应⽤开发进阶知识体系。全书共分13章,主要从3个⽅⾯来组织内容:(1)Android应⽤开发所需要掌握的系统源码知识,包括系统源码的下载、编译、调试,包管理机制,输⼊系统,Native Binder,Java Binder;(2)应⽤开发必需的知识点,包括Groovy基础、Gradle核⼼思想、Gradle的Android插件、Android Jetpack架构组件;(3)与跨平台开发相关的知识点,包括跨平台技术演进、Dart基础、Flutter基础。第1章 系统源码的下载、编译、调试 51.1 使⽤VirtualBox安装Ubuntu 51.1.1 安装Ubuntu的步骤 61.1.2 安装增强⼯具 121.2 AOSP源码下载 141.2.1 AOSP简介 141.2.2 下载repo 151.2.3 下载源码 151.3 内核源码下载 161.4 系统源码的整编和单编 181.4.1 编译系统概述 181.4.2 编译源码的⽅式 201.4.3 准备编译环境 201.4.4 源码整编 211.4.5 源码单编 241.5 Source Insight导⼊系统源码 251.5.1 新建源码项⽬ 251.5.2 定位⽂件 271.5.3 全局搜索 281.6 Android Studio导⼊系统源码 291.7 Android Studio调试系统源码 331.7.1 AOSP源码项⽬调试 341.7.2 导⼊部分源码调试 381.7.3 新建Android项⽬调试 391.8 本章⼩结 40第2章 理解包管理机制和PMS 412.1 PackageInstaller的初始化 412.1.1 PackageManager简介 422.1.2 APK的⽂件结构和安装⽅式 422.1.3 寻找PackageInstaller⼊⼝ 432.1.4 PackageInstallerActivity解析 472.1.5 PackageInstaller初始化的过程 512.2 PackageInstaller安装APK过程 522.2.1 PackageInstaller中的处理 522.2.2 Java框架层的处理 572.2.3 PackageInstaller安装APK的过程 592.3 PMS处理APK的安装过程 592.3.1 PackageHandler处理安装消息 602.3.2 复制APK的处理 662.3.3 PMS处理APK安装 702.3.4 PMS处理APK安装的步骤 762.4 PMS的创建过程 772.4.1 SystemServer处理部分 772.4.2 PMS构造⽅法 802.5 APK解析过程 912.5.1 引⼊PackageParser 912.5.2 PackageParser解析APK 922.5.3 Package的数据结构 992.6 本章⼩结 100第3章 理解输⼊系统和IMS 1023.1 输⼊事件传递流程的组成部分 1033.2 IMS的诞⽣ 1053.2.1 SystemServer处理部分 1053.2.2 InputManagerService构造⽅法 1073.3 IMS的启动过程 1103.4 InputDispatcher的启动过程 1123.5 InputReader处理事件的过程 1133.6 输⼊事件的处理总结 1193.7 InputReader的加⼯类型 1203.8 InputDispatcher的分发过程 1233.8.1 唤醒InputDispatcherThread 1233.8.2 InputDispatcher进⾏分发 1243.9 事件分发到⽬标窗⼝的过程 1283.9.1 为事件寻找合适的分发⽬标 1283.9.2 处理点击形式的事件 1323.9.3 向⽬标窗⼝发送事件 1353.9.4 Motion事件分发过程总结 1363.10 本章⼩结 138第4章 IPC机制 1394.1 Linux和Android的IPC机制 1394.1.1 Linux中的IPC机制 1394.1.2 Android中的IPC机制 1414.2 开启多进程 1424.2.1 开启多进程举例 1424.2.2 开启多进程引出的问题 1444.3 ⽤Messenger进⾏进程间通信 1464.4 使⽤AIDL实现跨进程⽅法调⽤ 1504.4.1 创建AIDL⽂件 1504.4.2 创建服务端 1524.4.3 客户端调⽤ 1534.5 ⽤ContentProvider进⾏进程间通信 1554.5.1 建⽴数据库,⽅便ContentProvider使⽤ 1554.5.2 使⽤ContentProvider对数据库进⾏操作 1564.5.3 在Activity中调⽤另⼀个进程的GameProvider⽅法 1584.6 ⽤Socket实现跨进程聊天程序 1604.7 本章⼩结 167第5章 Native Binder原理 1685.1 学习Binder的前置知识点 1685.1.1 Linux和Binder的IPC通信原理 1695.1.2 使⽤Binder的原因 1735.1.3 学习Binder的原因 1745.2 ServiceManager中的Binder机制 1755.2.1 基于Binder通信的C/S架构 1755.2.2 MediaServer的main函数 1765.2.3 每个进程唯⼀的ProcessState实例 1775.2.4 解析ServiceManager中的Binder机制 1805.2.5 ⼩结 1875.3 系统服务的注册过程 1875.3.1 从调⽤链⾓度说明MediaPlayerService的注册过程 1875.3.2 从进程⾓度说明MediaPlayerService的注册过程 1955.3.3 ⼩结 1965.4 ServiceManager的启动过程 1965.4.1 打开binder设备 1985.4.2 注册成为Binder机制的上下⽂管理者 2015.4.3 循环等待和处理客户端发来的请求 2035.5 系统服务的获取过程 2065.5.1 客户端MediaPlayerService请求获取服务 2065.5.2 服务端ServiceManager处理请求 2125.6 本章⼩结 218第6章 Java Binder原理 2196.1 Java Binder的JNI注册 2196.1.1 Binder类的注册 2236.1.2 BinderInternal类的注册 2246.2 Java Binder中系统服务的注册过程 2256.2.1 将AMS注册到ServiceManager 2266.2.2 引出JavaBBinder 2306.2.3 解析JavaBBinder 2326.2.4 Java Binder架构 2346.3 本章⼩结 235第7章 Groovy基础 2367.1 Groovy概述 2367.2 Groovy编写和调试 2377.3 变量 2377.4 ⽅法 2377.5 类 2387.6 语句 2397.6.1 断⾔ 2397.6.2 for循环 2397.6.3 switch语句 2407.7 数据类型 2417.7.1 字符串 2417.7.2 List 2427.7.3 Map 2427.7.4 闭包(Closure) 2437.8 I/O操作 2447.8.1 ⽂件读取 2447.8.2 ⽂件写⼊ 2447.9 其他 2457.9.1 asType 2457.9.2 判断是否为真 2457.9.3 安全取值 2457.9.4 with操作符 2467.10 本章⼩结 246第8章 Gradle核⼼思想 2478.1 Gradle概述 2478.1.1 项⽬⾃动化 2488.1.2 构建⼯具 2488.1.3 Gradle的特性 2538.2 Gradle基础知识 2558.2.1 配置Gradle环境 2558.2.2 实现Hello World 2578.2.3 Gradle的任务 2588.2.4 Gradle⽇志级别 2608.2.5 Gradle 命令⾏ 2618.3 被忽视的Gradle Wrapper 2638.3.1 为什么需要Gradle Wrapper 2638.3.2 构建Gradle Wrapper 2648.3.3 配置Gradle Wrapper 2658.3.4 使⽤Gradle Wrapper 2668.3.5 升级Gradle Wrapper 2678.3.6 ⾃定义Gradle Wrapper 2688.4 Gradle插件基础 2688.4.1 Gradle插件概述 2688.4.2 应⽤Gradle插件 2708.4.3 插件DSL 2728.4.4 ⾃定义对象插件 2738.4.5 Gradle插件的作⽤和优点 2748.5 ⾃定义Gradle插件 2748.5.1 在中编写 2758.5.2 在buildSrc⼯程项⽬中编写 2778.5.3 在独⽴项⽬中编写 2788.6 本章⼩结 281第9章 Gradle的Android插件 2829.1 什么是Gradle的Android插件 2829.2 Android Studio的模块类型和项⽬视图 2839.3 项⽬ 2849.4 模块 2859.4.1 Gradle的Android插件类型 2869.4.2 Android块 2869.4.3 dependencies块 2919.5 Android签名⽂件配置 2929.5.1 ⾃定义签名信息⽂件 2929.5.2 本地添加签名信息⽂件 2939.6 Gradle的库依赖 2949.7 Gradle的库依赖管理 2959.7.1 Gradle的依赖传递 2969.7.2 Gradle的依赖检查 2969.7.3 Gradle的依赖冲突 2999.8 本章⼩结 301第10章 Android Jetpack架构组件 30210.1 Android Jetpack简介 30310.2 Android Jetpack分类 30310.2.1 Architecture 30410.2.2 Foundationy 30510.2.3 Behavior 30610.2.4 UI 30710.3 在应⽤中引⼊Jetpack相关组件 30710.4 使⽤Lifecycle 30710.4.1 为什么需要Lifecycle 30710.4.2 如何使⽤Lifecycle 30910.4.3 Lifecycle应⽤举例 31210.4.4 ⾃定义LifecycleOwner 31510.5 Lifecycle的原理 31610.5.1 Lifecycle的⽣命周期状态事件和状态 31610.5.2 Lifecycle如何观察Activity和Fragment的⽣命周期 31710.5.3 Lifecycle关联类 32710.6 使⽤LiveData 32810.6.1 什么是LiveData 32810.6.2 LiveData的基本⽤法 32910.6.3 更改LiveData中的数据 33010.6.4 合并多个LiveData数据源 33210.6.5 拓展LiveData对象 33310.7 LiveData的原理 33510.7.1 LiveData如何观察组件⽣命周期变化 33510.7.2 LiveData的observe⽅法回调 33610.7.3 postValue/setValue⽅法分析 33910.7.4 ⽅法分析 34110.7.5 LiveData关联类 34310.8 使⽤ViewModel 34410.8.1 什么是ViewModel 34510.8.2 ViewModel的基本使⽤⽅法 34510.8.3 ViewModel的⽣命周期 34710.9 ViewModel的原理 34810.10 本章⼩结 351第11章 跨平台技术演进 35211.1 Web App 35311.2 Hybrid App 35311.2.1 Cordova 35411.2.2 Ionic 35511.2.3 VasSonic 35511.2.4 微信⼩程序 35611.3 语⾔编译转换 35711.4 原⽣渲染 35811.4.1 React Native 35811.4.2 Weex 35811.4.3 快应⽤ 35911.5 ⾃绘UI 36011.5.1 Qt 36011.5.2 Flutter 36111.6 本章⼩结 362第12章 Dart基础 36312.1 Dart开发环境搭建 36312.2 Dart概述 36412.3 Dart的特性和重要概念 36512.4 Dart关键字 36612.5 变量 36712.6 基本数据类型 36712.6.1 Number 36712.6.2 String 36812.6.3 Boolean 36812.6.4 List 36812.6.5 Set 36912.6.6 Map 36912.7 函数 36912.7.1 可选参数 37012.7.2 默认参数值 37012.7.3 main函数 37112.7.4 匿名函数 37112.8 流程控制语句 37112.8.1 for循环 37212.8.2 switch和case 37212.9 捕获异常 37312.10 为类添加新的功能 37312.11 库的使⽤⽅法 37412.12 异步⽀持 37512.13 使类可调⽤ 37612.14 创建实例 37612.15 本章⼩结 376第13章 Flutter基础 37713.1 Flutter开发环境搭建和Hello World 37713.1.1 Flutter概述 37813.1.2 Flutter开发环境搭建 37813.1.3 运⾏⼀个Flutter Demo 38313.1.4 Hello World 38513.2 Widget基础 38613.2.1 Widget概述 38713.2.1 Widget概述 38713.2.2 Widget的分类 38713.2.3 Widget的状态分类 38813.2.4 根Widget的种类 38813.3 Basic Widget 38913.3.1 代码模板和主题 38913.3.2 ⽂本 39013.3.3 图⽚ 39113.3.4 凸起按钮 39413.3.5 其他Widget 39513.4 Material组件 39713.4.1 MaterialApp 39813.4.2 Scaffold 40113.4.3 AppBar 40313.4.4 BottomNavigationBar 40513.4.5 TabBar 40713.4.6 Drawer 41113.5 Scrolling Widget 41313.5.1 ListView 41313.5.2 GridView 41813.5.3 PageView 41913.6 ⼿势相关Widget 42113.6.1 指针事件 42113.6.2 ⼿势 42213.6.3 使⽤GestureDetector 42313.6.4 使⽤Dismissible 42413.7 资源和图⽚ 42613.7.1 指定asset 42613.7.2 加载⽂本 42713.7.3 加载图⽚ 43013.8 布局Widget 43313.8.1 线性布局Widget 43313.8.2 流式布局Widget 43413.8.3 层式布局Widget 43613.8.4 弹性布局Widget 43813.9 ⽹络请求库Dio 44013.9.1 Dio的使⽤⼊门 44013.9.2 Dio访问⽹络 44113.10 JSON数据解析 44313.10.1 使⽤⽅法 44313.10.2 ⼿动编写实体类 44413.10.3 ⾃动⽣成实体类 44513.11 路由与数据传递 44713.11.1 新建路由 44713.11.2 使⽤注册路由 45013.11.3 路由间数据传递 45113.12 Flutter与Android的相互通信 45613.12.1 PlatformChannel概述 45613.12.2 Flutter调⽤Android 45813.12.3 Android调⽤Flutter 46113.13 本章⼩结 465
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688906310a182240.html
评论列表(0条)