科技
类型
7.9
豆瓣评分
可以朗读
语音朗读
334千字
字数
2018-08-01
发行日期
展开全部
主编推荐语
本书详细介绍了插件化技术的原理、各种方案,及其在Android App中的使用方法。
内容简介
本书在介绍插件化技术的同时,还详细介绍了Android 系统的底层知识,有助于App开发人员深入理解Android系统,从而写出更健壮的代码。全书分为三大部分,共22章。第1部分“预备知识”包括第1~5章,是进行Android插件化编程的准备知识,先介绍Android插件化技术的历史和现状,系统介绍了Android的底层知识以及反射、代理等技术。第2部分“解决方案”包括第6~16章,详细介绍并分析了插件化编程的各种解决方案,以及一些插件化框架的实现原理,如that、Zeus等。第3部分“相关技术”包括第17~21章,介绍插件化编程的周边技术,包括降级、混淆、增量更新等,并对纷繁复杂的插件化技术进行了总结。
目录
- 版权信息
- 序一
- 序二
- 序三
- 前言
- 第一部分 预备知识
- 第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 常用工具
- A.1 Android Studio
- A.2 Jadx-GUI
- A.3 010 Editor
- 附录B 本书代码索引
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。