Unity发布Android App Bundle详解(四)Addressables+Play Asset Delivery分发

在之前文章我们了解到了:

  • 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,该插件封装了一些接口,如获取我们的资源包,下载资源包,读取资源包到内存等等,有了这个插件我们可以才能进行接下来的工作。

导入Addressables+Play Asset Delivery支持库

因为Unity对于Addressables和aab的集成目前还没有比较好的支持,所以Addressables这边需要自行处理。

特别注意: 

使用该库进行分发,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示例工程icon-default.png?t=L892https://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分发

猜你喜欢

转载自blog.csdn.net/egostudio/article/details/118787073