Android插件化开发指南
- 定价:¥79.00
- 校园优惠价:¥49.77 (63折) (马上了解)
- 评分:
(已有0条评价)
- 电子书:Android插件化开发指南
- 促销活动:
- 我要买:
基本信息


编辑推荐
Android 插件化技术的集大成之作。
以浅显易懂的图文讲解Android系统的底层知识,详细介绍DroidPlugin、DL、Small、Zeus框架的设计思想和代码实现,探究插件混淆、so插件化、HTML 5降级等诸多被遗忘的角落。
内容简介
计算机书籍
本书详细介绍了插件化技术的原理、各种方案,及其在Android App中的使用方法。本书在介绍插件化技术的同时,还详细介绍了Android 系统的底层知识,有助于App开发人员深入理解Android系统,从而写出更健壮的代码。
全书分为三大部分,共22章。第1部分“预备知识”包括第1~5章,是进行Android插件化编程的准备知识,先介绍Android插件化技术的历史和现状,系统介绍了Android的底层知识以及反射、代理等技术。第2部分“解决方案”包括第6~16章,详细介绍并分析了插件化编程的各种解决方案,以及一些插件化框架的实现原理,如that、Zeus等。第3部分“相关技术”包括第17~21章,介绍插件化编程的周边技术,包括降级、混淆、增量更新等,并对纷繁复杂的插件化技术进行了总结。
作译者
包建强 毕业于复旦大学数学系。先后在多家互联网公司担任无线部门技术总监,现在从事区块链技术领域的研究,在Android、iOS、ReactNative等多门无线技术中跋涉过,在App的项目管理上也有多年的实践经验。他曾经出版了《App研发录》,并有一个坚持写了10年的技术博客:http://jax.cnblogs.com/,他的GitHub地址:https://github.com/BaoBaoJianqiang。
目录
序二
序三
前言
第一部分 预备知识
第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
前言
本书详细介绍了Android中的资源机制,包括aapt命令的原理、resource文件的组成以及public.xml的使用方式,顺带还提及了如何自定义一个Gradle插件化。
此外,本书还介绍了so的加载原理,尤其是动态加载so的技术,可以帮助App进行瘦身;探讨了HTML5降级技术,可以实现任何一个原生页面和HTML5页面的互换;介绍了反射技术,以及jOOR这个有趣的开源框架;介绍了Android中的动态代理技术Proxy.newProxyInstance方法。
如果读者能坚持把这本书从头到尾读完,那么不仅掌握了插件化技术,而且也把上述所有这些知识点全都系统地学习了一遍。也许Android插件化会随着Google的限制而有所变化甚至消亡,但我在本书中介绍的其他知识,仍然是大有用武之处的。
如何面对Android P的限制写作这本书的时候,Google推出了Android P preview的操作系统,会限制对@hide api的反射调用。目前会通过log发出警告,用户代码仍然能够获取到正确的Method或Field,在后续版本中获取到的Method或Field极有可能为空。
但是道高一尺,魔高一丈。Google对这次限制,很快就被技术极客们绕过去了,有两种解决方法:
1)把通过反射调用的系统内部类改为直接调用。具体操作办法是,在Android项目中新建一个库,把要反射的类的方法和字段复制一份到这个库中,App对这个库的引用关系设置为provided。那么我们就可以在App中直接调用这个类和方法,同时,在编译的时候,又不会把这些类包含到apk中。
其实早在2015年,hoxkx就在他的插件化框架中实现了这种技术。但是这种解决方案,仅限于Android系统中标记为public的方法和字段,对于protected和private就无能为力了。比如AssetsManager的addAssetPath方法,ActivityThread的currentActivityThread方法。
2)类的每个方法和字段都有一个标记,表明它是不是hide类型的。我们只要在jni层,把这个标记改为不是hide的,就可以绕过检查了。
然而,魔高一丈,道高一丈二。Google在Android P的正式版中势必会推出更严厉的限制方案,到时候,又会有新的解决方案面世,让我们拭目以待。
其实,开发者是无意和Google进行技术对抗的,这是毫无意义的。泛滥成灾的修改导致了App大量的崩溃,Google实在看不下去了,所以才搞出这套限制方案;另一方面,插件化技术是刚需,尤其在中国的互联网行业,App崩溃会直接影响使用,很可能导致经济损失,所以开发者才会不惜一切代价走插件化这条路。
再回到限制方案来,Google也不是清一色不要开发者使用系统底层的标记为hide的API,而是推出了一组黑灰名单,如下所示:
名单影响light-greylist 浅灰名单仅打印警告日志,Google尽可能在未来版本提供 public APIdark-greylist 深灰名单第三方App不能访问,开发者可以申请把这份清单中的某些API加入到浅灰名单blacklist 黑名单第三方App不能访问所以,另一种应对策略是,在插件化中使用浅灰名单中的API,比如说ActivityThread的currentActivityThread方法。
Google的这组清单还在持续调整中,据我所知,给各大手机厂商的清单与其在社区中发布的清单略有出入。在Android P的正式版本中,这份清单会最终确定下来。所以现在中国的各个插件化框架的开发人员,都在等Android P的正式版本发布后再制定相应的策略。留给中国队的时间不多了。
这本书的来龙去脉这是一本酝酿了3年的书。早在2015年Android插件化技术百家争鸣时,我就看好这个技术,想写一本书介绍这个技术,但当时的积累还不够。那年,我在一场技术大会上发表了《Android插件化从入门到放弃》演讲,四十五分钟介绍了插件化技术的皮毛。后来这个演讲内容被整理成文章发布到网上,流传很广。
2017年1月,有企业要我去讲2天Android插件化技术。为此,我花了一个月时间,准备了四十多个例子。这是我第一次系统地积累了素材。
2017年6月,我在腾讯课堂做Android线上培训,为了宣传推广我的课程,我写了一系列文章《写给Android App开发人员看的Android底层知识》,共8篇,没列太多代码,完全以UML图的方式向读者普及Binder、AIDL、四大组件、AMS、PMS的知识。本书的第2章就是在这8篇文章的基础之上进行扩充的。
2018年1月,我父亲住院一周。我当时在医院每天晚上值班。老爷子半夜打呼噜,吵得我睡不着,事后我才知道,我睡着了打呼噜声音比他还大。半夜睡不着时就开始了本书的写作,每晚坚持写到凌晨两三点。直到父亲出院,这本书写了将近五分之一。
碰巧的是,这一年5月底我结婚,促使我想在5月初完成这本书的一稿,为此,我宅在家里整整写了3个月。仅以此书作为新婚礼物献给我亲爱的老婆,感谢你的理解,这本书才得以面世。
媒体评论
如果我们不满足于业务研发,希望可以了解一些Android底层知识,研读这些开源框架的源码则大有裨益。当然,包老师的这本书是国内第一本介绍插件化技术的书籍,作为我们学习插件化技术的入门书籍,则相当合适。
—— 张勇DroidPlugin的作者
我从工作以来,有一半时间都在从事插件化相关的开发工作。我喜欢 Android,也喜欢插件化。最开始我对插件化技术只是兴趣使然,在工作之余我喜欢做一些研究,所以有了dynamic-load-apk,我很荣幸能为国内插件化技术的发展贡献自己微薄的力量。
今天,包老师把插件化的发展历程和技术细节出版成书,也是为插件化技术多年的发展做了一个完美的总结,感谢包老师这本书,可以让更多人了解插件化技术。
—— 任玉刚《Android开发艺术探索》的作者