在之前文章我们了解到了:
- Unity aab要我们自己处理,Unity目前没有提供完整的解决方案帮我们自动处理(截止2021.7.16号)
- 2021.8.1号开始谷歌对新应用只能接受aab格式,而aab的本体包限制在150M
- aab格式超过150M的应用要自行通过Play Asset Delivery分发
- Unity应用需要通过AssetBundle进行包体拆分,然后通过GooglePlay提供的Play Asset Delivery分发
那前面的工作我们都准备完毕了,现在我们开始进行aab的打包,并上传谷歌后台的工作。
导入GooglePlay插件
这里有完整的官方文档,大家可以到这里看详细步骤,我简单的说下步骤。
我们先从GitHub上下载下来对应的Play Asset Delivery插件,导入到Unity,该插件封装了一些接口,如获取我们的资源包,下载资源包,读取资源包到内存等等,有了这个插件我们可以才能进行接下来的工作。
- 访问:https://github.com/google/play-unity-plugins/releases
- 拉到下面,找到com.google.play.assetdelivery-1.5.0.unitypackage直接下载。
- 导入Unity
- 菜单栏出现了Google命令,说明导入完成
导入Addressables+Play Asset Delivery支持库
因为Unity对于Addressables和aab的集成目前还没有比较好的支持,所以Addressables这边需要自行处理。
- 访问GitHub:GitHub - jelte/be.khepri.play.assetdelivery.addressables: Android Play Asset Delivery support for Unity Addressables
- 将代码下载下来,导入到Unity中
- 菜单栏Google会多出一个命令:Create config for Addressables Groups,说明导入完成
特别注意:
使用该库进行分发,Google/Android App Bundle中的命令千万不能再用了,否则会覆盖掉配置文件
配置Addressables
接下来需要配置Addressables,以使可寻址系统跟这两个插件集成起来。
这里面也有很多坑,文档也写的不清不楚,集成完毕后发现效果总是不理想,我是自己通过源码分析定位到问题的。
配置Addressables Groups
分好的Addressables Groups应该是这样(如果这步骤不会,请查看之前文章步骤)
新建Group或者默认的都可以
配置分发模式
这步的意义是,让Play Asset Delivery识别你这个Group是怎么加载方式,是使用install-time呢还是on-demand还是
fast-follow呢。有几个Group就要配置几次。
- 选择Group,在Inspector界面我们看到如图,这些配置随意,默认就行(因为也用不到)
- 点击Add Schema按钮,选择Play Asset Delivery
- 配置Delivery Mode(这些什么意思不懂的请看之前的文章)
只测试过Install Time的,其他两个暂未使用到,先不说 - 再次选中Group,点开Advance Options,修改圈出来的两个地方
- 将圈出来的两个地方修改为如下
注意:这两个有点像,切记不要配错了,一定要认真
Asset Provider: Assets From Bundles Provider (Sync)
AssetBundle Provider: AssetPack Bundle Provider (Sync)
配置结束,后续可以开始打包
打包aab
打包Addressables
上面的配置完成后,先将资源包打包出来
运行Build-New Build-Default Build Scripts,等待进度条结束
创建GooglePlay认的Asset Pack配置
aab打包的时候认的是Library下的PlayAssetPackConfig.json文件,所以目前我们要将Addressables的配置修改到PlayAssetPackConfig.json文件中,让谷歌能识别到。
创建配置:
- 运行命令:Create config for Addressables Groups,等待结束
- 结束后Asset/Resources目录下会多出一个AssetPacks文件,里面记录了Addressables配置
原理是:该文件记录了文件key,然后Addressables初始化时,通过Play Asset Delivery接口进行读取资源
打包aab文件
运行命令Google/Build Android App Bundle...命令,选择目录,等待进度条结束
注意:记得先设置下Keystore
正确的进度条应该如图
打包后
将后缀名改成rar,用压缩包打开确认,有圈起来的文件,说明OK了
完整文件就是一个aab文件,上传谷歌后台即可
上传谷歌后台
上传aab文件
确认文件
上传完成后,在App Bundle探索器可以看到分发内容,base就是本体包大小,Asset Packs下会列出分发的内容,可以看到那边分发模式会写Addressables那边配置的模式
发布测试
通过Google Play商店进行下载,下载的包大小是本体包大小+install time的包体大小总和。
小技巧
如果测试发现不正确,可以在打包的时候加上两个宏定义ADDRESSABLES_LOG_ALL;DEBUG_PLAYASSETDELIVERY
这样通过LogCat软件就会输出Addressables加载的日志,这样可以加快分析。
同时也可以查看源代码进行调试定位问题。
总结
该系列文章正式结束,踩的坑还是蛮多的,谷歌对玩家人性化,但是对开发者就是痛苦了,Unity这次有点拉跨,UE4都已经集成了PlayAssetDelivery了,而Unity还是没有完整的解决方案(截止2021.7.16)。
感谢大家的阅读,也希望这些文章对你们有帮助,让这个技术生态变得更好。
示例工程
如果你看了该系列文章还是不知道怎么做,或者跟着文章做了一直失败,我新上传了一个Unity成功的demo,可以下载参考:Unity Play Asset Delivery示例工程https://download.csdn.net/download/egostudio/23355975
该示例工程已经配置好,直接使用文章的步骤进行打包,上传后台后下载下来即可看到场景中的图片被加载显示。
示例工程也可加Q群904994482免费获取,有问题加Q群提问,谢谢。
上一篇:Unity发布Android App Bundle详解(三)快速转换Addressables
系列文章索引
Unity发布Android App Bundle详解(一)Unity .aab支持情况
Unity发布Android App Bundle详解(二)Play Asset Delivery介绍
Unity发布Android App Bundle详解(三)快速转换Addressables
Unity发布Android App Bundle详解(四)Addressables+Play Asset Delivery分发