包邮现货Android插件化开发指南/移动开发 Android安卓开发书籍|8050628pdf下载

包邮现货Android插件化开发指南/移动开发 Android安卓开发书籍|8050628百度网盘pdf下载

作者:
简介:包邮现货Android插件化开发指南/移动开发 Android安卓开发书籍|8050628
出版社:
出版时间:2018-08
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍






/>
> 书[0名0]:  Android插[亻牛]化开发指南|8050628
> 图书定价: 79元
> 图书作者: 包建强
> 出版社:  [1机1]械工业出版社
> 出版日期:  2018/8/3 0:00:00
> ISBN号: 9787111603368
> 开本: 16开
> 页数: 351
> 版次: 1-1
 作者简介
包建强 著:作者简介
包建强 毕业于复旦[0大0][0学0]数[0学0]系。先后在多家互联网公司担任无线部门技术总监,现在从事区块链技术[令页]域的研究,在Android、iOS、ReactNative等多门无线技术中跋涉过,在App的项目管理上也有多年的实践[纟巠]验。他曾[纟巠]出版了《App研发录》,并有一个坚持写了10年的技术博客:http://jax.cnblogs.com/,他的GitHub地址:https://github.com/BaoBaoJianqiang。
 内容简介
本书详细介绍了插[亻牛]化技术的原理、各种方案,及其在Android App中的使用方[0法0]。本书在介绍插[亻牛]化技术的同时,还详细介绍了Android 系统的底层[0知0]识,有助于App开发人员深入理解Android系统,从而写出更健壮的代码。
全书分为三[0大0]部分,共22章。[0第0]1部分“预备[0知0]识”包括[0第0]1~5章,是进行Android插[亻牛]化编程的准备[0知0]识,先介绍Android插[亻牛]化技术的历[0史0]和现状,系统介绍了Android的底层[0知0]识以及反射、代理等技术。[0第0]2部分“解决方案”包括[0第0]6~16章,详细介绍并分析了插[亻牛]化编程的各种解决方案,以及一些插[亻牛]化框架的实现原理,如that、Zeus等。[0第0]3部分“相关技术”包括[0第0]17~21章,介绍插[亻牛]化编程的周边技术,包括降级、混淆、增量更[亲斤]等,并对纷繁复杂的插[亻牛]化技术进行了总结。
 目录

序一
序二
序三
前言
[0第0]一部分 预备[0知0]识
[0第0]1章 插[亻牛]化技术的昨天、今天与明天2
1.1 插[亻牛]化技术是什么2
1.2 为什么需要插[亻牛]化3
1.3 插[亻牛]化技术的历[0史0]3
1.4 插[亻牛]化技术的用途到底是什么8
1.5 更[女子]的替代[0品0]:React Native8
1.6 只有中[0国0]这么玩吗9
1.7 四[0大0]组[亻牛]都需要插[亻牛]化技术吗10
1.8 [0双0]开和虚拟[1机1]10
1.9 从原生页[mian]到HTML 5的过渡11
1.10 本章小结12
[0第0]2章 Android底层[0知0]识13
2.1 概述13
2.2 Binder原理14
2.3 AIDL原理16
2.4 AMS20
2.5 Activity工作原理21
2.5.1 App是怎么启动的21
2.5.2 启动App并非那么简单21
2.6 App内部的页[mian]跳转32
2.7 Context家族[0史0]34
2.8 Service工作原理36
2.8.1 在[亲斤]进程启动Service36
2.8.2 启动同一进程的Service39
2.8.3 在同一进程绑定Service39
2.9 BroadcastReceiver工作原理41
2.9.1 注册过程43
2.9.2 发送广播的流程44
2.9.3 广播的种类45
2.10 ContentProvider工作原理46
2.10.1 ContentProvider的本质49
2.10.2 匿[0名0]共享内存(ASM)49
2.10.3 ContentProvider与AMS的通信流程50
2.11 PMS及App安装过程52
2.11.1 PMS简介52
2.11.2 App的安装流程52
2.11.3 PackageParser53
2.11.4 ActivityThread与PackageManager54
2.12 ClassLoader家族[0史0]55
2.13 [0双0]亲委托57
2.14 MultiDex57
2.15 实现一个音乐播放器App59
2.15.1 基于两个Receiver的音乐播放器59
2.15.2 基于一个Receiver的音乐播放器63
2.16 本章小结68
[0第0]3章 反射70
3.1 基本反射技术70
3.1.1 根据一个字符串得到一个类70
3.1.2 获取类的成员71
3.1.3 对泛型类的反射75
3.2 jOOR77
3.2.1 根据一个字符串得到一个类78
3.2.2 获取类的成员78
3.2.3 对泛型类的反射79
3.3 对基本反射语[0法0]的封装80
3.3.1 反射出一个构造函数81
3.3.2 调用实例方[0法0]81
3.3.3 调用静态方[0法0]82
3.3.4 获取并设置一个字段的值82
3.3.5 对泛型类的处理83
3.4 对反射的进一步封装84
3.5 本章小结88
[0第0]4章 代理模式89
4.1 概述89
4.1.1 远程代理(AIDL)90
4.1.2 保护代理([0[0权0]0]限控制)92
4.1.3 虚代理(图片占位)92
4.1.4 协作开发(Mock Class)92
4.1.5 给生活加点料(记日志)93
4.2 静态代理和动态代理94
4.3 对AMN的Hook95
4.4 对PMS的Hook97
4.5 本章小结98
[0第0]5章 对startActivity方[0法0]进行Hook99
5.1 startActivity方[0法0]的两种形式99
5.2 对Activity的startActivity方[0法0]进行Hook100
5.2.1 方案1:重写Activity的startActivityForResult方[0法0]102
5.2.2 方案2:对Activity的mInstrumentation字段进行Hook102
5.2.3 方案3:对AMN的getDefault方[0法0]进行Hook104
5.2.4 方案4:对H类的mC[0all0]back字段进行Hook107
5.2.5 方案5:再次对Instrumentation字段进行Hook109
5.3 对Context的startActivity方[0法0]进行Hook111
5.3.1 方案6:对ActivityThread的mInstrumentation字段进行Hook111
5.3.2 对AMN的getDafault方[0法0]进行Hook是一劳[1永1]逸的113
5.4 启动没有在AndroidManifest中声明的Activity113
5.4.1 “欺骗AMS”的策略分析114
5.4.2 Hook的上半场115
5.4.3 Hook的下半场:对H类的mC[0all0]back字段进行Hook118
5.4.4 Hook的下半场:对ActivityThread的mInstrumentation字段进行Hook119
5.4.5 “欺骗AMS”的弊端121
5.5 本章小结121
[0第0]二部分 解决方案
[0第0]6章 插[亻牛]化技术基础[0知0]识124
6.1 加载外部的dex124
6.2 [mian]向接口编程126
6.3 插[亻牛]的瘦身129
6.4 对插[亻牛]进行代码调试131
6.5 Application的插[亻牛]化解决方案133
6.6 本章小结134
[0第0]7章 资源初探135
7.1 资源加载[1机1]制135
7.1.1 资源分类135
7.1.2 剪不断理还乱:Resources和AssetManager136
7.2 资源的插[亻牛]化解决方案137
7.3 换肤141
7.4 殊途同归:另一种换肤方式149
7.5 本章小结149
[0第0]8章 [z1u1i]简单的插[亻牛]化解决方案150
8.1 在AndroidManifest中声明插[亻牛]中的组[亻牛]150
8.2 宿[1主1]App加载插[亻牛]中的类151
8.3 启动插[亻牛]Service152
8.4 加载插[亻牛]中的资源152
8.5 本章小结154
[0第0]9章 Activity的插[亻牛]化解决方案155
9.1 启动没有在AndroidManifest中声明的插[亻牛]Activity155
9.2 基于动态替换的Activity插[亻牛]化解决方案159
9.2.1 Android启动Activity的原理分析159
9.2.2 故意命中缓存160
9.2.3 加载插[亻牛]中类的方案1:为每个插[亻牛]创建一个ClassLoader164
9.2.4 为了圆一个谎言而编造更多的谎言164
9.3 加载插[亻牛]中类的方案2:合并多个dex166
9.4 为Activity解决资源问题169
9.5 对LaunchMode的支持169
9.6 加载插[亻牛]中类的方案3:修改App原生的ClassLoader172
9.7 本章小结174
[0第0]10章 Service的插[亻牛]化解决方案175
10.1 Android界的荀彧和荀攸:Service和Activity175
10.2 预先占位176
10.3 startService的解决方案178
10.4 bindService的解决方案183
10.5 本章小结185
[0第0]11章 BroadcastReceiver的插[亻牛]化解决方案186
11.1 Receiver概述186
11.2 动态广播的插[亻牛]化解决方案187
11.3 静态广播的插[亻牛]化解决方案187
11.4 静态广播的插[亻牛]化终[0极0]解决方案189
11.5 本章小结193
[0第0]12章 ContentProvider的插[亻牛]化解决方案194
12.1 ContentProvider基本概念194
12.2 一个简单的ContentProvider例子195
12.3 ContentProvider插[亻牛]化197
12.4 执行这段Hook代码的时[1机1]199
12.5 ContentProvider的转发[1机1]制200
12.6 本章小结201
[0第0]13章 基于静态代理的插[亻牛]化解决方案:that框架202
13.1 静态代理的思想202
13.2 一个[z1u1i]简单的静态代理的例子203
13.2.1 从宿[1主1]Activity跳转到插[亻牛]Activity203
13.2.2 ProxyActivity与插[亻牛]Activity的通信204
13.2.3 插[亻牛]Activity的逻辑206
13.3 插[亻牛]内部的页[mian]跳转206
13.4 从“肉体”上消灭that关键字207
13.5 插[亻牛]向外跳转209
13.6 [mian]向接口编程在静态代理中的应用211
13.7 对LaunchMode的支持216
13.8 本章小结221
[0第0]14章 that框架对Service和BroadcastReceiver的支持222
14.1 静态代理的思想在Service的应用222
14.2 对BindService的支持227
14.3 Service的预先占位思想229
14.4 Service插[亻牛]化的终[0极0]解决方案:动静结合231
14.4.1 解析插[亻牛]中的Service231
14.4.2 通过反射创建一个Service对象232
14.4.3 ProxyService与ServiceManager234
14.4.4 bindService的插[亻牛]化解决方案240
14.5 静态代理的思想在BroadcastReceiver的应用245
14.6 本章小结248
[0第0]15章 再谈资源249
15.1 Android App的打包流程249
15.2 修改AAPT251
15.2.1 修改并生成[亲斤]的aapt命令251
15.2.2 在插[亻牛]化项目中使用[亲斤]的aapt命令254
15.3 public.xml固定资源id值256
15.4 插[亻牛]使用宿[1主1]的资源258
15.5 本章小结259
[0第0]16章 基于Fragment的插[亻牛]化框架261
16.1 AndroidDynamicLoader概述261
16.2 [z1u1i]简单的Fragment插[亻牛]化例子262
16.3 插[亻牛]内部的Fragment跳转263
16.4 从插[亻牛]的Fragment跳转到插[亻牛]外部的Fragment264
16.5 本章小结266
[0第0]三部分 相关技术
[0第0]17章 降级268
17.1 从Activity到HTML 5269
17.2 从HTML 5到Activity273
17.3 对返回键的支持278
17.4 本章小结278
[0第0]18章 插[亻牛]的混淆279
18.1 插[亻牛]的基本混淆279
18.2 方案1:不混淆公共库MyPluginLibrary280
18.3 方案2:混淆公共库MyPluginLibrary282
18.3.1 配置multidex283
18.3.2 配置proguard285
18.3.3 移除Plugin1.apk中的冗余dex286
18.4 本章小结287
[0第0]19章 增量更[亲斤]288
19.1 如何使用增量更[亲斤]288
19.2 制作插[亻牛]的增量包289
19.3 App下载增量包并解压到本地289
19.4 App合并增量包290
19.5 本章小结291
[0第0]20章 so的插[亻牛]化解决方案292
20.1 编写一个[z1u1i]简单的so292
20.2 使用so296
20.3 so的加载原理298
20.4 基于System.load的插[亻牛]化解决方案301
20.5 基于System.loadLibrary的插[亻牛]化解决方案304
20.6 本章小结305
[0第0]21章 对App的打包流程进行Hook306
21.1 自定义Gradle插[亻牛]306
21.1.1 创建Gradle自定义插[亻牛]项目306
21.1.2 Extension又是什么308
21.1.3 修改打包流程309
21.2 修改resources.arsc311
21.2.1 Android是怎么查找资源的311
21.2.2 aapt都干了什么312
21.2.3 gradle-sm[0all0]的工作原理313
21.2.4 怎么使用gradle-sm[0all0]313
21.2.5 gradle-sm[0all0]中的Plugin家族313
21.2.6 gradle-sm[0all0]中的Editor家族317
21.3 本章小结318
[0第0]22章 插[亻牛]化技术总结319
22.1 插[亻牛]的工程化319
22.2 插[亻牛]中类的加载319
22.3 哪些地方可以Hook320
22.4 Activity插[亻牛]化的解决方案320
22.5 资源的解决方案321
22.6 Fragment是哪门哪派322
22.7 Service、ContentProvider、BroadcastReceiver插[亻牛]化的通用解决方案322
22.8 特定于Service的插[亻牛]化解决方案322
22.9 特定于BroadcastReceiver的插[亻牛]化解决方案323
22.10 特定于ContentProvider的插[亻牛]化解决方案323
22.11 本章小结323
附录
附录A 常用工具326
附录B 本书代码索引328

 编辑推荐
Android 插[亻牛]化技术的集[0大0]成之作。
以浅显易懂的图文讲解Android系统的底层[0知0]识,详细介绍DroidPlugin、DL、Sm[0all0]、Zeus框架的设计思想和代码实现,探究插[亻牛]混淆、so插[亻牛]化、HTML 5降级等诸多被遗忘的角落。