聊聊 VirtualAPK 插件化框架的开源

829 阅读6分钟

- 我和插件化的渊源

如果大家知道我,如果大家和我是老朋友,如果大家看过我的CSDN博客,那么毫不夸张地说,我和插件化有着很深的渊源。

早在2014年3月份,我就在CSDN中发表了我的第一篇关于插件化的文章《Android apk动态加载机制的研究》,虽然现在看起来,这篇文章简直是弱爆了,但是在当时,这篇文章却得到了广泛的关注。

过了一个月,我又发布了第二篇文章《Android apk动态加载机制的研究(二):资源加载和activity生命周期管理》,这篇文章在早期的插件化发展中起到了非常重要的作用。后面的事情大家都知道了,我和其他同学继续了这件事情,最终在GitHub开源了Dynamic-load-apk,在当时得到了业界极大的关注。

现在想起来,Dynamic-load-apk在事实上促进了国内插件化框架的发展,使得插件化技术达到一个百家争鸣的时代。如果不是Dynamic-load-apk,现在可能并不是这个样子,大家可能仍然无法知晓插件化技术的细节。

- 让核心技术走向大家

大家知道我当时为啥要开源Dynamic-load-apk吗?其实这中间是有故事的。

早在3年前,Android开发刚兴起没多久,那个时候我也是刚入门Android2年,也是一个普通的Android工程师。但是有一天,在我们公司我得知有一种叫做插件化的技术,可以将一个APK直接运行起来。我热爱Android,所以我当时真的特别好奇,很想知道到底是如何实现的。

但是由于当时我级别较低,并且插件化属于公司的核心技术,导致我并无法获得插件化的代码,我心情低落,于是我开始从网上搜索插件化的知识,但是在那个年代,几乎一无所获。当时我还知道阿里有个atlas插件化框架,但是阿里也是不会开源的。

于是,这件事刺激了我,我想知道插件化的技术细节,我想让千千万万个普通工程师能够接触到这项核心技术,我决定自己去研究一套插件化框架。这在当时简直是一件不可思议的事情,历经千辛万苦,在没有任何资料参考的情况下,终于我和其他几位同学一起探索出了一套插件化框架,这就是Dynamic-load-apk的来历。尽管Dynamic-load-apk现在看起来很弱,但是它仍然发挥了不可磨灭的作用。

所以,我认为大家应该珍惜现在的机会,去好好了解下插件化框架的原理,这个绝对算得上Android领域最核心的技术了。

过去多少人想看都看不到的技术,现在开源了,大家都能接触到了,这个时候大家有什么理由不去看、不去研究呢?

- 为什么要有VirtualAPK?

由于Dynamic-load-apk太过久远,对插件开发过程约束太多,所以我一直想再开发一款更加强大的插件化框架,然后将其开源从而造福其他公司。由于一个契机,我得以加入滴滴来完成我未尽的梦想。直到今年的6月30号,VirtualAPK历经一年的迭代和验证,终于开源了,而我的梦想也终于完成!

- VirtualAPK的适用场景

功能完备

  • 支持几乎所有的Android特性;

  • 四大组件方面

四大组件均不需要在宿主manifest中预注册,每个组件都有完整的生命周期。

  1. Activity:支持显示和隐式调用,支持Activity的themeLaunchMode,支持透明主题;

  2. Service:支持显示和隐式调用,支持Service的startstopbindunbind,并支持跨进程bind插件中的Service;

  3. Receiver:支持静态注册和动态注册的Receiver;

  4. ContentProvider:支持provider的所有操作,包括CRUDcall方法等,支持跨进程访问插件中的Provider。

  • 自定义View:支持自定义View,支持自定义属性和style,支持动画;

  • PendingIntent:支持PendingIntent以及和其相关的AlarmNotificationAppWidget

  • 支持插件Application以及插件manifest中的meta-data

  • 支持插件中的so

VirtualAPK和其他主流开源方案的对比:


- VirtualAPK的技术原理


VirtualAPK的技术实现,分为两块,一部分是引擎部分,这部分负责插件的加载和运行;另一部分是插件的构建部分,这部分负责插件的编译、插件和宿主依赖关系的处理等。

关于引擎部分,已经有很多文章介绍了,但是构建部分还没有文章介绍,后续我们也会写文章去分析这一块。

为了进一步传播VirtualAPK的能力,让更多人知道从而造福更多开发者,本周六下午VirtualAPK开发团队将在知乎上举办一场Live,我也是主讲人。在本场Live中,我们将会首次详细地披露VirtualAPK的构建器的技术细节,对大家来说也是个很好的学习机会。

其实我们也考虑过其他形式,但是斗鱼或者其他直播平台都显得不那么严肃和技术范,目前技术逼格较高的平台就只有知乎了,但是知乎是付费的,我们的本意是传播技术,真的不是为了盈利,这次Live的收费全部由滴滴公司统一处理,我们四位主讲人并没有任何分成,一点都没有。

所以,如果你对插件化感兴趣,真的应该去赞助一下,只要10.24软妹币。换句话来说,作为Android程序员,有理由不对插件化感兴趣吗?不了解插件化如何吹牛逼呢?插件化都不了解又谈何高级工程师呢?

而对于我来说,在三年前,我想花再多的钱也无法去参加Live来学习插件化,因为没人愿意透露给你,他们都掖着藏着,一把辛酸泪!

最好,献给大家的妹子图,每个妹子图都是我用心为大家准备的。

大家点击最下方的 阅读原文 即可直达知乎Live的地址,也可以识别下图中的二维码来直达Live。如果大家看了这篇文章然后赞助了这场Live,请在评论中回复下,我想看看有多少人,在开源这条路上,我应该不是一个人吧?