本书不仅详细介绍Android插件化技术如何实现,而且包含大量Android系统的底层知识,有助于App发人员深理解Android系统,从而写出更健壮的代码。Android插件化技术不仅适用于快速修复bug,还可以快速上线新功能,从而在时间上和竞争对手抢占用户。本书详细介绍了插件化技术的各种方案,及其实现代码,并给出了应用场景。
售 价:¥
纸质售价:¥55.30购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
序一
序二
序三
前言
第一部分 预备知识
第1章 插件化技术的昨天、今天与明天
1.1 插件化技术是什么
1.2 为什么需要插件化
1.3 插件化技术的历史
1.4 插件化技术的用途到底是什么
1.5 更好的替代品:React Native
1.6 只有中国这么玩吗
1.7 四大组件都需要插件化技术吗
1.8 双开和虚拟机
1.9 从原生页面到HTML 5的过渡
1.10 本章小结
第2章 Android底层知识
2.1 概述
2.2 Binder原理
2.3 AIDL原理
2.4 AMS
2.5 Activity工作原理
2.6 App内部的页面跳转
2.7 Context家族史
2.8 Service工作原理
2.9 BroadcastReceiver工作原理
2.10 ContentProvider工作原理
2.11 PMS及App安装过程
2.12 ClassLoader家族史
2.13 双亲委托
2.14 MultiDex
2.15 实现一个音乐播放器App
2.16 本章小结
第3章 反射
3.1 基本反射技术
3.2 jOOR
3.3 对基本反射语法的封装
3.4 对反射的进一步封装
3.5 本章小结
第4章 代理模式
4.1 概述
4.2 静态代理和动态代理
4.3 对AMN的Hook
4.4 对PMS的Hook
4.5 本章小结
第5章 对startActivity方法进行Hook
5.1 startActivity方法的两种形式
5.2 对Activity的startActivity方法进行Hook
5.3 对Context的startActivity方法进行Hook
5.4 启动没有在AndroidManifest中声明的Activity
5.5 本章小结
第二部分 解决方案
第6章 插件化技术基础知识
6.1 加载外部的dex
6.2 面向接口编程
6.3 插件的瘦身
6.4 对插件进行代码调试
6.5 Application的插件化解决方案
6.6 本章小结
第7章 资源初探
7.1 资源加载机制
7.2 资源的插件化解决方案
7.3 换肤
7.4 殊途同归:另一种换肤方式
7.5 本章小结
第8章 最简单的插件化解决方案
8.1 在AndroidManifest中声明插件中的组件
8.2 宿主App加载插件中的类
8.3 启动插件Service
8.4 加载插件中的资源
8.5 本章小结
第9章 Activity的插件化解决方案
9.1 启动没有在AndroidManifest中声明的插件Activity
9.2 基于动态替换的Activity插件化解决方案
9.3 加载插件中类的方案2:合并多个dex
9.4 为Activity解决资源问题
9.5 对LaunchMode的支持
9.6 加载插件中类的方案3:修改App原生的ClassLoader
9.7 本章小结
第10章 Service的插件化解决方案
10.1 Android界的荀彧和荀攸:Service和Activity
10.2 预先占位
10.3 startService的解决方案
10.4 bindService的解决方案
10.5 本章小结
第11章 BroadcastReceiver的插件化解决方案
11.1 Receiver概述
11.2 动态广播的插件化解决方案
11.3 静态广播的插件化解决方案
11.4 静态广播的插件化终极解决方案
11.5 本章小结
第12章 ContentProvider的插件化解决方案
12.1 ContentProvider基本概念
12.2 一个简单的ContentProvider例子
12.3 ContentProvider插件化
12.4 执行这段Hook代码的时机
12.5 ContentProvider的转发机制
12.6 本章小结
第13章 基于静态代理的插件化解决方案:that框架
13.1 静态代理的思想
13.2 一个最简单的静态代理的例子
13.3 插件内部的页面跳转
13.4 从“肉体”上消灭that关键字
13.5 插件向外跳转
13.6 面向接口编程在静态代理中的应用
13.7 对LaunchMode的支持
13.8 本章小结
第14章 that框架对Service和BroadcastReceiver的支持
14.1 静态代理的思想在Service的应用
14.2 对BindService的支持
14.3 Service的预先占位思想
14.4 Service插件化的终极解决方案:动静结合
14.5 静态代理的思想在BroadcastReceiver的应用
14.6 本章小结
第15章 再谈资源
15.1 Android App的打包流程
15.2 修改AAPT
15.3 public.xml固定资源id值
15.4 插件使用宿主的资源
15.5 本章小结
第16章 基于Fragment的插件化框架
16.1 AndroidDynamicLoader概述
16.2 最简单的Fragment插件化例子
16.3 插件内部的Fragment跳转
16.4 从插件的Fragment跳转到插件外部的Fragment
16.5 本章小结
第三部分 相关技术
第17章 降级
17.1 从Activity到HTML 5
17.2 从HTML 5到Activity
17.3 对返回键的支持
17.4 本章小结
第18章 插件的混淆
18.1 插件的基本混淆
18.2 方案1:不混淆公共库MyPluginLibrary
18.3 方案2:混淆公共库MyPluginLibrary
18.4 本章小结
第19章 增量更新
19.1 如何使用增量更新
19.2 制作插件的增量包
19.3 App下载增量包并解压到本地
19.4 App合并增量包
19.5 本章小结
第20章 so的插件化解决方案
20.1 编写一个最简单的so
20.2 使用so
20.3 so的加载原理
20.4 基于System.load的插件化解决方案
20.5 基于System.loadLibrary的插件化解决方案
20.6 本章小结
第21章 对App的打包流程进行Hook
21.1 自定义Gradle插件
21.2 修改resources.arsc
21.3 本章小结
第22章 插件化技术总结
22.1 插件的工程化
22.2 插件中类的加载
22.3 哪些地方可以Hook
22.4 Activity插件化的解决方案
22.5 资源的解决方案
22.6 Fragment是哪门哪派
22.7 Service、ContentProvider、BroadcastReceiver插件化的通用解决方案
22.8 特定于Service的插件化解决方案
22.9 特定于BroadcastReceiver的插件化解决方案
22.10 特定于ContentProvider的插件化解决方案
22.11 本章小结
附录
附录A 常用工具
附录B 本书代码索引
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜