按需下载!!全动态插件化框架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地址

感谢阅读:

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

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

相关推荐
每次的天空1 小时前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
恋猫de小郭2 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
断剑重铸之日3 小时前
Android自定义相机开发(类似OCR扫描相机)
android
随心最为安3 小时前
Android Library Maven 发布完整流程指南
android
guojl3 小时前
深度解决大文件上传难题
架构
岁月玲珑3 小时前
【使用Android Studio调试手机app时候手机老掉线问题】
android·ide·android studio
DemonAvenger3 小时前
Go语言中的TCP编程:基础实现与最佳实践
网络协议·架构·go
guojl4 小时前
一网打尽分布式锁
架构
xinxiangwangzhi_4 小时前
pytorch底层原理学习--PyTorch 架构梳理
人工智能·pytorch·架构
真实的菜6 小时前
Kafka生态整合深度解析:构建现代化数据架构的核心枢纽
架构·kafka·linq