assets-bundle插件基于官方的分包策略。
之前完成过另一款分包插件 subpackage-tools 项目上线一年,没有任何问题。该插件完全基于分包热更完成。现在插件商店已经看不到它了,插件的核心只是分离资源而已,真正需要在项目中使用,必须要自己完成分包热更的项目逻辑,所以一直没有出使用demo,被不少人诟病,汗颜!
官方的分包加载已经基本可以用于原生环境,其中代码的分包在原生环境App启动速度上有较大帮助,但是原生资源的分包仅对小游戏环境有降低包体的作用,对原生环境没有任何作用。
插件在官方分包的策略上 加强了对原生环境的支持: 资源分包
插件核心功能
:
- 接管官方分包策略
- 追加分离出非原生资源(import资源)
- 对分包追加热更功能
支持三种分包模式 - 本地包: 官方分包
- 热更包: 在本地包的基础上对分包最佳热更功能 使用前先检查资源版本
- 远程包: 在热更包的基础上将分包从构建项目中分离出来 使用前必须先下载远程包
插件作用: 降低App包体大小,加快App启动速度。适用于大厅游戏和关卡游戏
唯一遗憾的事没能降低setting.js的大小,研究发现资源不放在 resources 目录下也是可以动态加载的,但是不放在该目录下又需要动态加载的资源大部分都不会参与项目构建,全部堆在一个场景里倒是可以解决问题,但是明显不怎么优雅。斟酌后还是放下了对setting.js的手术刀
插件支持自动 zip 压缩 import 和 raw-assets 目录
基于 2.3.0版本Mac下开发,目测在 2.x版本都是可以跑的 至于win环境好不好使我就不知道了 ,欢迎提Bug。
插件简单介绍:
- 所有.manifest文件都放在 assets/resources/Manifest 目录 插件会完全操作(删除、写入)这个目录,如果冲突请自行转移目录内资源
- 生成的子包全部放在 ${project}/HotUpdate/${项目分支}/目录 同样是完全操作这个目录,如果冲突请自行转移目录内资源
- 支持Debug模式,启动该模式 分包会被统一放进 ${project}/HotUpdate/${项目分支}/Debug目录 对应的远程热更地址也会追加 “http://host.com/${项目分支}/Debug”
- 支持包名搜索,当子包较多时可以使用包名搜索功能
- 插件自动和手动校验子包的资源安全性(是否丢失资源和是否引用了其他私有子包的资源)
- 插件支持自动校验当前项目的分包设置与插件的分包设置是否一致
- 支持手动清空和设置项目分包
- 支持自动和手动向Manifest目录中导入远程分包的空清单文件
- 支持 zip 压缩子包资源
- 支持三种分包模式
- 如果不设置任何子包 则该插件为一个简单的热更插件
- 如果不需要本插件,卸载或者不打开本插件即可
使用方法:
- 编辑器面板->扩展->assets-bundle
- 配置好主包以及子包信息
- 打开构建面板->构建 必须至少构建两次以上
- 检查控制台是否有爆红 如果有,必须要先解决爆红问题
- 检测HotUpdate目录是否生成对应的主包和子包 检测主包和子包是否完整(初次使用小心点)
- 检查无误后,打开AndroidStudio或者xcode编译App
目前插件已经完成了资源分离的测试,仅初步完成了分包热更下载的测试
本插件仅是一个项目分包的工具,分包热更的逻辑代码请自行根据自身项目完成
没有demo,完全开源
被第一版插件(subpackage-tools)的地狱回调恶心到了,这版插件采用了 await 写法,逻辑上清晰一些,但是本次插件的核心逻辑写在了主线程上,修改代码会造成编辑器奔溃或插件无法打开的情况
插件刚完成,还是热乎的。
https://github.com/zPiggy/assets-bundle
注意
1.插件目前不支持 win 环境使用,非常抱歉,等我找个 win 电脑。。。。 有兴趣的朋友可以提交PR
2.插件不支持勾选【内联所有 SpriteFrame】和 【合并图集中的 SpriteFrame】
3.目测插件兼容 2.x 版本