!
插件化框架 | Shadow | WXDynamicPlugin |
---|---|---|
插件打包体积 | 3M以上 | 500k左右 ✅ |
极致化下载管理版本控制 | 需自己实现 | 1步到位 ✅ |
插件加载逻辑 | 宿主->管理器->插件 | 宿主->插件 ✅ |
首次插件下载到展示首页耗时 | 3~5s以上? | 1s内 ✅ |
插件已经到本地后加载速度 | 1500ms以上? | 500ms内 ✅ |
全动态化 | 支持 | 支持 ✅ |
插件化框架动态化 | 支持 | 支持 ✅ |
下载逻辑代码动态化 | 不支持 | 支持 ✅ |
版本控制代码动态化 | 不支持 | 支持 ✅ |
插件调试debug | 不支持 | 支持 ✅ |
workingDirPath=D\:\\android_software\\android_sdk\\android_sdk\\build-tools\\32.0.0\\
文件夹 | 介绍 | 接入方式 |
---|---|---|
WX-Code | 示例工程全源码级接入方式 | 接入方式一:依赖host模块工程 |
WX-Dynamic-Host-SDK-Lib | 宿主工程所依赖的lib工程源码 | |
WX-Maven | 示例工程maven依赖仓库方式接入工程 | 接入方式二:maven引入host包 |
sample: host宿主真实工程app
maven-wgllss-business-re-library:涉及到app的公共业务带res资源的模块lib
maven-wgllss-common-re-library:涉及到公共代码带res资源的模块lib
maven-wgllss-dynamic-host-library:宿主里manifest注册所必备的四大组件等lib
maven-wgllss-dynamic-host-skin-resource-lib:宿主所必须的资源样式主题等lib
Maven-Wgllss-Dynamic-Plugin-Common-Library: 插件中公共代码
Maven-Wgllss-Dynamic-Plugin-Generate: 插件中打包所用的apt工程
Maven-Wgllss-Dynamic-Plugin-Manager: 插件中管理插件,管理动态代码的3个工程
Maven-Wgllss-Dynamic-Plugin-Sample: 插件中真正业务代码插件工程
Maven-Wgllss-Dynamic-Plugin-SDK: 插件框架四大组件SDK代码,以插件形式存在
Maven-Wgllss-Dynamic-Plugin_Skin: 插件中换皮肤资源
可以通过源码工程自行打包,上传到自己的服务器上部署,方法如下:
找到 WX/WX-Maven/WX-Host/sample/ com.wgllss.dynamic.host.FaceImpl
// override fun getHostL() = "http://192.168.3.21:8080/assets/WXDynamicPlugin/"
// override fun getHostL() = "http://192.168.1.9:8080/assets/WXDynamicPlugin/"
//todo 自己本地搭一个服务器,或者 自己服务器 或者 像我一样在gitee上面在自己的项目下建一个文件当作服务器 供下载,
// 切记不要往往我的 gitee 项目上面推
override fun getHostL() = "https://gitee.com/wgllss888/WXDynamicPlugin/raw/master/WX-Resource/"
/** 0:WXDynamicPlugin 动态化插件框架 理论上已经做到了可以完全不动宿主,但是如果一定要动宿主 可以提供以下思路:
* 1:可以根据 宿主版本号得到 宿主版本支持的 的插件,
* 2:当宿主必须 需要升级时,升级后原版本的插件不可用了,插件配置在新宿主版本文件夹下面,原宿主版本文件夹可可以先动态配置 在启动页 升级下载新的宿主
* @example 宿主版本 10000 版本支持的插件 放在服务端 WXDynamicPlugin/10000/ 文件夹下 20000版本的插件放在 WXDynamicPlugin/20000/下面
*/
override fun getBaseL(): String {
if (TextUtils.isEmpty(baseXL)) {
baseXL = StringBuilder().append(getHostL()).append(DeviceIdUtil.getDeviceId()).append("/").append(BuildConfig.VERSION_CODE).append("/").toString()
}
return baseXL
}
修改 getHostL() 地址为自己服务器地址, 修改 getBaseL() 中主要路劲,确保修改后地址可以访问通
然后将打包好的14个文件 放入getHostL()+getBaseL() 服务器文件夹下面
该 14个文件打包如下:
点击 assembleCreateAllFileRelease 等待 14个文件生成 ,一次不行,再次点击执行命令
14个文件生成在以下目录:可以拷贝到自己的服务器上面供下载:即上面修改的 getHostL()+getBaseL() 服务器文件夹下面 ,同时把我准备的WX-Resource/so 文件夹和 WX-Resource/skins 文件夹拷贝过去,这是供sample 工程演示所用的,另外皮肤资源包多个apk文件也可以自行通过源码工程打包
VX号:wgllss ,如果想更多交流请加我VX