
插件模块按需下载,既能节省流量,又能减少体积。
WXDynamicPlugin
全动态插件化系列文章如下:如不是很明白先看前面文章
Compose的全动态插件化框架支持了,已更新到AGP 8.6,Kotlin2.0.20,支持Compose
有介绍相关配置 和 推荐阅读顺序:
一、前言
WXDynamicPlugin
全动态插件化框架,开源已经快一年了,它即支持零反射,零Hook,还能支持所有逻辑全动态化,支持Debug等特性。
最近有网友反映它怎么支持按需下载?
- 按需下载:即当真要用的时候,才去下载加载安装插件,比如说:当正要点击去一个单独模块页面时候,这时候才下载下来,然后加载完成,然后再进去。
- 其实它本来是支持的,因为毕竟全动态化,所以想要什么功能,然后添加什么功能就行。无需更改宿主,所有想添加的逻辑都以插件化的方式打包进去。
- 下面我来具体介绍下怎么实现的
二、按需下载添加逻辑实现:
- 假设我原实例项目里面的
other, other2
模块,都不做成在第一次安装启动时候下载了,要做成当点击去other,other2
时候,才下载。 - 首先把
other,other2
两个配置的模块删掉,两个文件内都要删掉
:如下:
1)宿主包内默认配置other的地方2)打包版本文件和vc文件的地方
- 然后去插件管理器里面添加引入我的下载加载插件逻辑模块:如下图
- 然后去插件管理器里面添加下载加载插件逻辑方法,添加如下图方法,我最新一版代码这个是提交上去了,可以就使用我这个方法,当然,如果觉得还有更好的写法,下面截图里面代码可以自己写,毕竟这是在插件管理器里面,它也是一个插件,全动态化的,想改成自己习惯的写法,可以自由发挥修改。
- 然后去我示例项目使用的的地方,点击去往other,和other2模块的地方。进行拦截判断
1)注意:
我示例项目中有3个地方点击去往other模块,有2个地方去往other2模块,所以要修改5个地方。
2) 我最新一版 原来方案和按需下载方案代码都写上去了,提交上去了,把按需下载方案注释掉了,需要注释掉原来方案一,放开按需下载方案二。
3) 如下图可见2中方案,我默认还是原来方案一。 首页点击去往底部菜单tab2,tab2,tab4
,这里3个地方都是要进去other模块的,需要注释掉原来方案一,放开按需下载方案二
4)去往other2模块的有2个地方,1是首页新闻列表点击去详情去other模块,2是底部tab示例下面点击去other2模块 首页新闻列表点击处:
需要注释掉原来方案一,放开按需下载方案二
。
5)底部tab示例下面点击去other2模块item点击处:
需要注释掉原来方案一,放开按需下载方案二
。 注意otehr,other2相关插件模块文件放在哪儿?答曰:宿主里面配置服务下载地址路径文件下面,即原来方案一时候放的地方。
- 以上修改的地方,宿主
WX-Host
下修改的地方需要重新安装宿主,WX-Plugin
插件目录下修改的地方需要重新打包重新发布。 - 以上修改验证按需下载
注意
:
1)是需要将最新代码拉取下来,将宿主服务器地址配置成自己的服务器地址,具体怎么配置,参考我前面文章,去掉other集合数据,重新运行宿主。
2)然后打包发布到自己的服务器地址。从上面图可以看到,插件模块更改有4处:首页模块打包修改,other-lib模块打包修改,打包插件版本模块和新的vc文件,管理器模块,这5个文件是修改过的,需要发布到自己服务器地址。而我项目默认不是按需下载other,other2两模块的,默认是代码里面是方案一。所以我的那个服务器地址上放的这5个文件内容中的逻辑也是走的方案一逻辑,如果只去掉other集合里面内容,不修改插件存放地址,是不能生效的。
- 接入到自己项目里面,是不需要有2种方案逻辑的,只有一种存在的。
三、Other集合配置还可以怎样配置:
- 我上面提供了可以验证按需下载,是把宿主 other集和打包存放服务器文件的other集全部置空的
- 可以首次宿主和other集和打包存放服务器文件的other集 只配置一个other模块,也可以只有2个模块:other,和other2模块,然后第3,4,5,6,7...模块做成按需下载,这一切都是根据自己的业务来配置。
四、总结
本文主要分享了全动态插件化框架WXDynamicPlugin 如何按需下载:
- 在原实例项目里面内置了2种方案
- 需要验证的拉取下来,注释掉方案1即可验证按需下载。