前言
插件化技术倒退到当初其实曾经很成熟了,然而相应的问题,如果没有真正地去实际过,基本不理解其中有多少问题,会牵涉到多少技术细节,多少被外人膜拜的表面光鲜的技术大牛都被『插件化』这三个字折磨地死去活来,这对于 Android 整个生态的侵害也让人无奈漠视。
那么这个组件化是什么意思呢?我说下我本人的了解,可能不对,还请指教:
通过 gradle 配置的形式,将打 debug 包和 release 包离开。这样会有一个益处,开发一个模块,在 debug 的时候,能够打成一个 apk,独立运行测试,能够齐全独立于整个宿主 APP 的其余所有组件;待到要打 release 包的时候,再把这个模块作为一个 library,打成 aar,作为整个宿主 APP 的一部分。而 debug 和 release 的切换都是通过 gradle 配置,能够做到无缝切换。至于模块之间的跳转,能够用别名的形式,而不是用 Activity 和 Fragment 类名。这样所有的模块和宿主 APP 都是齐全解耦的,彻底解决了并行开发的可能造成的穿插依赖等问题。
依照这个思路,咱们再来看看一些其余的细节:
- 在 Android 里有一个比拟爽的一点是,作为 library 的时候,aar 里的援用依赖,在宿主 Application 里也有同样的援用依赖,并不会打包两份到宿主 Application 里;
- 模块之间的跳转,除了应用别名的形式,我能想到的还有另外一种形式,同样是通过 gradle 脚本,将跳转用到的类打成一个 jar,作为一个 API 服务提供给其余模块作为编译期依赖(provided)引入;
- 各个 library 在 debug 的时候作为 apk,要独立打包运行测试,这时就须要有一个启动 Activity,而 library 是不须要的,我的想法是搁置两个 AndroidManifest.xml,应用 sourceSets 别离在 debug 和 release 的时候加载不同的 AndroidManifest.xml。
对于 Android 开发者而言,插件化技术曾经是进阶 Android 高级工程师的必备技能之一。我这里有一份 【高级 Android 插件化强化实战】 材料,心愿能帮到大家!
#### 第一章:插件化技术的前世今生
1. 插件化提要
2. 插件化发展历史
第二章:插件化原理
1. 类加载
2. 双亲委托机制
3. 资源加载
4. 四大组件反对
5. ProxyActivity 代理
6. hook 形式
7. 其余组件
…
第三章:Android 插件化初探
1. 从零开始实现一个插件化框架(上)
- 概念
- 插件化解决的问题
- 各插件化框架比照
- 插件化实现
- ClassLoader 实现类
2. 从零开始实现一个插件化框架(中)
- Activity 的启动流程
- 寻找 Hook 点
- 撸码阶段
- 代理对象
- 偷天换日,替换原来的 Intent
- ActivityThread
-
将代理的 intent 替换回来
…
3. 从零开始实现一个插件化框架(下)
- 插件资源加载
- Android 中资源加载流程
- ActivityManager
- ActivityThread
- AppCompatActivity
- 总结
第四章:架构演变(大厂篇)
1. 360 插件开发之 DroidPlugin
DroidPlugin 是 360 手机助手在 Android 零碎上实现了一种新的插件机制。它能够在无需装置、批改的状况下运行 APK 文件, 此机制对改良大型 APP 的架构,实现多团队合作开发具备肯定的益处。
2. 滴滴 VirtualApk 实战
VirtualAPK 是滴滴在 2017 年 6 月开源的一款插件化框架,反对 Android 四大组件,以及简直所有的 Android 个性,通过 Gradle 来构建插件,集成与构建非常便捷,目前曾经利用在 滴滴出行 App 上,兼容市面上简直所有的 Android 设施。
3. 爱奇艺插件化原理剖析之 Neptune 框架
Neptune 是爱奇艺挪动端研发的一套灵便,稳固,轻量级的插件化解决方案。通过一直的研发,迭代和线上验证,目前曾经齐全适配了 Android P,可能在数亿的设施上动静加载和运行插件 APK,为爱奇艺泛滥的垂直业务团队提供了稳固的服务。
4. 360 开源全面插件化框架 RePlugin 实战
RePlugin 是一套残缺的、稳固的、适宜全面应用的,占坑类插件化计划,由 360 手机卫士的 RePlugin Team 研发,也是业内首个提出”全面插件化“(全面个性、全面兼容、全面应用)的计划。
5. 腾讯插件化框架 Shadow 我的项目解析
Shadow 是一个腾讯自主研发的 Android 插件框架,通过线上亿级用户量测验。Shadow 不仅开源分享了插件技术的要害代码,还残缺的分享了上线部署所须要的所有设计。更是具备复用独立装置 App 的源码、零反射无 Hack 实现插件技术、全动静插件框架、宿主增量极小、Kotlin 反对等特点。
因为篇幅较长,细节内容比拟多,临时只展现这些;有须要完整版学习材料的敌人能够点击这里收费获取!
最初
一个好的工程师,他不仅要懂得原理,还得去学习把技术使用到实际中去,这是一个优良的程序员所必须具备的。如果我的这篇文章能帮忙到你的话,那就多多反对一下我。