《Android插件化开发指南》包建强【文字版_PDF电子书_推荐】_计算机类

如何自学 占星术 占星教程网盘 塔罗牌教程百度网盘

《Android插件化开发指南》包建强【文字版_PDF电子书_推荐】

《Android插件化开发指南》封面图片

书名:Android插件化开发指南
作者:包建强
出版社:机械工业出版社丛
译者:
出版日期:2018-8-6
页数:682
ISBN:9787111603368
7.6
豆瓣短评
全网资源sm.nayona.cn

内容简介:

Android插件化技术广泛应用在移动开发中,通过插件化技术,AndroidApp可以不通过发布新版本而修复线上的bug或者推出新功能,这对于日活千万的App而言是非常重要的,可极大程度提升App开发效率和质量。本书详细介绍了插件化技术的原理、各种方案,及其在AndroidApp中的使用。在介绍插件化技术的同时,还详细介绍了Android底层知识,能帮助AndroidApp开发人员更好地掌握Android的开发技术。本书共22章,先介绍Android插件化技术的历史和现状,系统介绍了Android的底层知识以及反射、代理等技术;然后介绍插件化技术的基本知识,包括各类插件化解决方案及其对比;之后分析了一些插件化框架,如that、Zeus等,深入分析了资源及其在插件化中的应用,以及混淆、增量更新等周边技术的插件化解决方案。

目  录:

目录 Contents

序一

序二

序三

前言

一部分 预备知识

1章 插件化技术的昨天、今天与明天2

1.1 插件化技术是什么2

1.2 为什么需要插件化3

1.3 插件化技术的历史3

1.4 插件化技术的用途到底是什么8

1.5 更好的替代品:React Native8

1.6 只有中国这么玩吗9

1.7 四大组件都需要插件化技术吗10

1.8 双开和虚拟机10

1.9 从原生页面到HTML 5的过渡11

1.10 本章小结12

2章 Android底层知识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内部的页面跳转32

2.7 Context家族史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 匿名共享内存(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家族史55

2.13 双亲委托57

2.14 MultiDex57

2.15 实现一个音乐播放器App59

2.15.1 基于两个Receiver的音乐播放器59

2.15.2 基于一个Receiver的音乐播放器63

2.16 本章小结68

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 对基本反射语法的封装80

3.3.1 反射出一个构造函数81

3.3.2 调用实例方法81

3.3.3 调用静态方法82

3.3.4 获取并设置一个字段的值82

3.3.5 对泛型类的处理83

3.4 对反射的进一步封装84

3.5 本章小结88

4章 代理模式89

4.1 概述89

4.1.1 远程代理(AIDL)90

4.1.2 保护代理(权限控制)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

5章 对startActivity方法进行Hook99

5.1 startActivity方法的两种形式99

5.2 对Activity的startActivity方法进行Hook100

5.2.1 方案1:重写Activity的startActivityForResult方法102

5.2.2 方案2:对Activity的mInstrumentation字段进行Hook102

5.2.3 方案3:对AMN的getDefault方法进行Hook104

5.2.4 方案4:对H类的mCallback字段进行Hook107

5.2.5 方案5:再次对Instrumentation字段进行Hook109

5.3 对Context的startActivity方法进行Hook111

5.3.1 方案6:对ActivityThread的mInstrumentation字段进行Hook111

5.3.2 对AMN的getDafault方法进行Hook是一劳永逸的113

5.4 启动没有在AndroidManifest中声明的Activity113

5.4.1 “欺骗AMS”的策略分析114

5.4.2 Hook的上半场115

5.4.3 Hook的下半场:对H类的mCallback字段进行Hook118

5.4.4 Hook的下半场:对ActivityThread的mInstrumentation字段进行Hook119

5.4.5 “欺骗AMS”的弊端121

5.5 本章小结121

二部分 解决方案

6章 插件化技术基础知识124

6.1 加载外部的dex124

6.2 面向接口编程126

6.3 插件的瘦身129

6.4 对插件进行代码调试131

6.5 Application的插件化解决方案133

6.6 本章小结134

7章 资源初探135

7.1 资源加载机制135

7.1.1 资源分类135

7.1.2 剪不断理还乱:Resources和AssetManager136

7.2 资源的插件化解决方案137

7.3 换肤141

7.4 殊途同归:另一种换肤方式149

7.5 本章小结149

8章 简单的插件化解决方案150

8.1 在AndroidManifest中声明插件中的组件150

8.2 宿主App加载插件中的类151

8.3 启动插件Service152

8.4 加载插件中的资源152

8.5 本章小结154

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

10章 Service的插件化解决方案175

10.1 Android界的荀彧和荀攸:Service和Activity175

10.2 预先占位176

10.3 startService的解决方案178

10.4 bindService的解决方案183

10.5 本章小结185

11章 BroadcastReceiver的插件化解决方案186

11.1 Receiver概述186

11.2 动态广播的插件化解决方案187

11.3 静态广播的插件化解决方案187

11.4 静态广播的插件化解决方案189

11.5 本章小结193

12章 ContentProvider的插件化解决方案194

12.1 ContentProvider基本概念194

12.2 一个简单的ContentProvider例子195

12.3 ContentProvider插件化197

12.4 执行这段Hook代码的时机199

12.5 ContentProvider的转发机制200

12.6 本章小结201

13章 基于静态代理的插件化解决方案:that框架202

13.1 静态代理的思想202

13.2 一个简单的静态代理的例子203

13.2.1 从宿主Activity跳转到插件Activity203

13.2.2 ProxyActivity与插件Activity的通信204

13.2.3 插件Activity的逻辑206

13.3 插件内部的页面跳转206

13.4 从“肉体”上消灭that关键字207

13.5 插件向外跳转209

13.6 面向接口编程在静态代理中的应用211

13.7 对LaunchMode的支持216

13.8 本章小结221

14章 that框架对Service和BroadcastReceiver的支持222

14.1 静态代理的思想在Service的应用222

14.2 对BindService的支持227

14.3 Service的预先占位思想229

14.4 Service插件化的解决方案:动静结合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

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 插件使用宿主的资源258

15.5 本章小结259

16章 基于Fragment的插件化框架261

16.1 AndroidDynamicLoader概述261

16.2 简单的Fragment插件化例子262

16.3 插件内部的Fragment跳转263

16.4 从插件的Fragment跳转到插件外部的Fragment264

16.5 本章小结266

三部分 相关技术

17章 降级268

17.1 从Activity到HTML 5269

17.2 从HTML 5到Activity273

17.3 对返回键的支持278

17.4 本章小结278

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

19章 增量更新288

19.1 如何使用增量更新288

19.2 制作插件的增量包289

19.3 App下载增量包并解压到本地289

19.4 App合并增量包290

19.5 本章小结291

20章 so的插件化解决方案292

20.1 编写一个简单的so292

20.2 使用so296

20.3 so的加载原理298

20.4 基于System.load的插件化解决方案301

20.5 基于System.loadLibrary的插件化解决方案304

20.6 本章小结305

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-small的工作原理313

21.2.4 怎么使用gradle-small313

21.2.5 gradle-small中的Plugin家族313

21.2.6 gradle-small中的Editor家族317

21.3 本章小结318

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

浏览器不支持脚本!

有需要联系v;zhanxzhanx

摘要:《Android插件化开发指南》包建强【文字版_PDF电子书_推荐】_计算机类是一本关于Android插件化开发的指南书籍。本文将从四个方面对这本书进行详细阐述,包括书籍简介、内容概述、特点和推荐理由。通过本文的介绍,读者可以了解到这本书的特点以及适用对象,从而决定是否阅读。

1、书籍简介

《Android插件化开发指南》是一本由包建强撰写的计算机类电子书,主要介绍了Android插件化开发的相关知识和技术。书籍以实践为导向,结合详细的案例和步骤,帮助读者深入理解插件化开发的原理和实现方法。总共分为多个章节,每个章节内容都有详细的讲解和示例代码,适合有一定Android开发经验的读者。

本书旨在帮助读者掌握Android插件化开发的核心概念和技术,通过实际操作和实例演示,让读者能够独立完成Android插件化开发的项目。无论是对插件化开发感兴趣的开发者,还是想要提升自己Android开发技能的读者,都可以从本书中获得实际的收益。

2、内容概述

《Android插件化开发指南》主要包含了以下内容:

第一部分:Android插件化开发基础。介绍了Android插件化开发的基本概念和原理,包括插件化的概念、动态加载的原理、插件化的优缺点等。

第二部分:插件化框架的实现。详细介绍了几种常见的插件化框架的实现原理和用法,包括DroidPlugin、VirtualApk、DynamicAPK等。

第三部分:插件化开发实战。通过实际案例,详细讲解了插件化开发的实践方法和步骤,包括插件化的工程结构、资源管理、插件化的插件市场等。

第四部分:插件化开发的进阶与优化。介绍了插件化开发中的一些高级技术和优化方法,包括插件化的动态替换、插件化的热修复、插件化的性能优化等。

通过这些内容的学习和实践,读者可以全面掌握Android插件化开发的技术和方法,为自己的项目开发提供更多的选择和灵活性。

3、特点

《Android插件化开发指南》具有以下特点:

深入浅出:书籍通过实例演示和案例讲解,将抽象的插件化开发理论转化为实际操作,易于读者理解和掌握。

系统全面:书籍从插件化开发的基础知识到进阶技巧,全面介绍了插件化开发的方方面面,读者可以全面了解和掌握插件化开发的技术和方法。

实用性强:书籍的案例和实例代码都是经过实践验证的,读者可以直接应用于自己的项目中,提高开发效率和质量。

4、推荐理由

推荐读者阅读《Android插件化开发指南》的理由如下:

扩展能力:插件化开发可以帮助开发者将应用的功能拆分为多个独立的模块,方便灵活地进行功能扩展和升级。

提高效率:插件化开发可以将开发和调试的过程分离,加快了开发的速度和效率。

灵活性:插件化开发可以实现模块的动态更新和替换,提高了应用的灵活性和可扩展性。

总结:

《Android插件化开发指南》是一本全面介绍Android插件化开发的指南书籍。通过本书的学习,读者可以全面了解Android插件化开发的原理、技术和实践方法,并将其应用于自己的项目中,提高开发效率和质量。

本文由nayona.cn整理

点击联系需要东西方神秘学学习资料,专业的咨询

有需要联系v;hx-hx3 有需要联系v;hx-hx3 有需要联系v;hx-hx3 如果对你有一点点帮助,欢迎打赏~~~  
本文来自用户投稿或整理于网络,版权归作者所有,如有侵权,请联系我们删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
雅书雅书

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

记得加这个v;hx-hx3