聊聊Android的静态代理插件框架原理[引]

从本篇起,我将用一个系列的博文,和大家一起分享一下基于静态代理的Android插件化框架。该框架原理与任玉刚开源项目Dynamic-load-apk的原理相仿, 同时也在『米家』app和『有品』app中得到实际应用和检验。不足之处,请多多包涵。

代码放在wangyeming/AndroidPluginFrameDemo.

文章列表:

聊聊Android的静态代理插件框架原理[01]–Apk文件的加载
聊聊Android的静态代理插件框架原理[02]–Activity静态代理之生命周期
聊聊Android的静态代理插件框架原理[03]–Activity静态代理之资源加载(上)
聊聊Android的静态代理插件框架原理[04]–Activity静态代理之资源加载(下)
聊聊Android的静态代理插件框架原理[05]–支持插件的so文件
待续


Android的插件框架和技术在最近几年有着很大的技术突破和应用。不同的框架背后的实现思想有所不同,尤其是以Hook技术为代表的插件框架,在技术门槛上对普通android开发者而言是相对较高的。这里我主要和大家分享的是『静态代理』这一类的安卓插件化框架背后的原理和实现。本质和任玉刚dynamic-load-apk是一个思路。

关于Android插件化框架的背景介绍,可以看Android插件化:从入门到放弃 这篇文章是根据包建强在2016GMTC全球移动开发大会上的演讲整理而成,对Android插件化的流派和基本原理有简单介绍。

在『米家』和『有品』这两个app中,我们使用的正是这种基于『静态代理』的插件框架。其中『米家』App更是插件化的经典案例,上百款智能硬件的跳转Activity全都是通过插件化来实现的。而『有品』作为一款电商app,我们也引入了这套插件化框架并做了适度改进,得以更加适应电商应用的插件化需要。

这是『米家』app的截图,每一个item对应着一个智能产品,点击item会下载插件apk包并加载到app中,随后打开插件Activity,实现对该智能产品的操作控制。

类似的采用插件化框架的app还有很多,背后采用的框架和思想也不尽相同,我也是抛砖引玉,介绍一下我个人对Android的静态代理插件框架背后的原理的理解,不足之处,还请多多包涵。