按需下载!!全动态插件化框架WXDynamicPlugin解析怎么支持的

插件模块按需下载,既能节省流量,又能减少体积。
WXDynamicPlugin全动态插件化系列文章如下:如不是很明白先看前面文章
Compose的全动态插件化框架支持了,已更新到AGP 8.6,Kotlin2.0.20,支持Compose

有介绍相关配置 和 推荐阅读顺序:

一、前言

WXDynamicPlugin 全动态插件化框架,开源已经快一年了,它即支持零反射,零Hook,还能支持所有逻辑全动态化,支持Debug等特性。

最近有网友反映它怎么支持按需下载?

  • 按需下载:即当真要用的时候,才去下载加载安装插件,比如说:当正要点击去一个单独模块页面时候,这时候才下载下来,然后加载完成,然后再进去。
  • 其实它本来是支持的,因为毕竟全动态化,所以想要什么功能,然后添加什么功能就行。无需更改宿主,所有想添加的逻辑都以插件化的方式打包进去。
  • 下面我来具体介绍下怎么实现的

二、按需下载添加逻辑实现:

  1. 假设我原实例项目里面的other, other2模块,都不做成在第一次安装启动时候下载了,要做成当点击去other,other2时候,才下载。
  2. 首先把other,other2两个配置的模块删掉,两个文件内都要删掉:如下:
    1)宿主包内默认配置other的地方 2)打包版本文件和vc文件的地方
  3. 然后去插件管理器里面添加引入我的下载加载插件逻辑模块:如下图
  4. 然后去插件管理器里面添加下载加载插件逻辑方法,添加如下图方法,我最新一版代码这个是提交上去了,可以就使用我这个方法,当然,如果觉得还有更好的写法,下面截图里面代码可以自己写,毕竟这是在插件管理器里面,它也是一个插件,全动态化的,想改成自己习惯的写法,可以自由发挥修改。
  5. 然后去我示例项目使用的的地方,点击去往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点击处:需要注释掉原来方案一,放开按需下载方案二
  6. 注意otehr,other2相关插件模块文件放在哪儿?答曰:宿主里面配置服务下载地址路径文件下面,即原来方案一时候放的地方。
  7. 以上修改的地方,宿主 WX-Host 下修改的地方需要重新安装宿主,WX-Plugin 插件目录下修改的地方需要重新打包重新发布。
  8. 以上修改验证按需下载 注意
    1)是需要将最新代码拉取下来,将宿主服务器地址配置成自己的服务器地址,具体怎么配置,参考我前面文章,去掉other集合数据,重新运行宿主。
    2)然后打包发布到自己的服务器地址。从上面图可以看到,插件模块更改有4处:首页模块打包修改,other-lib模块打包修改,打包插件版本模块和新的vc文件,管理器模块,这5个文件是修改过的,需要发布到自己服务器地址。 而我项目默认不是按需下载other,other2两模块的,默认是代码里面是方案一。所以我的那个服务器地址上放的这5个文件内容中的逻辑也是走的方案一逻辑,如果只去掉other集合里面内容,不修改插件存放地址,是不能生效的。
  9. 接入到自己项目里面,是不需要有2种方案逻辑的,只有一种存在的。

三、Other集合配置还可以怎样配置:

  1. 我上面提供了可以验证按需下载,是把宿主 other集和打包存放服务器文件的other集全部置空的
  2. 可以首次宿主和other集和打包存放服务器文件的other集 只配置一个other模块,也可以只有2个模块:other,和other2模块,然后第3,4,5,6,7...模块做成按需下载,这一切都是根据自己的业务来配置。

四、总结

本文主要分享了全动态插件化框架WXDynamicPlugin 如何按需下载:

  1. 在原实例项目里面内置了2种方案
  2. 需要验证的拉取下来,注释掉方案1即可验证按需下载。

github地址
gitee地址

感谢阅读:

欢迎用你发财的小手 关注,点赞、收藏

这里你会学到不一样的东西

相关推荐
Huntto29 分钟前
在Android中使用libpng
android
希望_睿智2 小时前
实战设计模式之解释器模式
c++·设计模式·架构
高阳言编程2 小时前
8. 数据流计算机和规约机
架构
雨白2 小时前
Android 自定义 View:彻底搞懂 Xfermode 与官方文档陷阱
android
piaoyunlive2 小时前
Base64 编码优化 Web 图片加载:异步响应式架构(Java 后端 + 前端全流程实现)
java·前端·架构
_小马快跑_3 小时前
从VSync心跳到SurfaceFlinger合成:拆解 Choreographer与Display刷新流程
android
_小马快跑_3 小时前
Android | 视图渲染:从invalidate()到屏幕刷新的链路解析
android
Xの哲學4 小时前
Linux PCI 子系统:工作原理与实现机制深度分析
linux·网络·算法·架构·边缘计算
Monkey-旭5 小时前
Android 定位技术全解析:从基础实现到精准优化
android·java·kotlin·地图·定位
qb6 小时前
vue3.5.18源码:computed 在发布订阅者模式中的双重角色
前端·vue.js·架构