当缩小应用以满足大小要求时,首先尝试标准 APK 大小优化技术。如果您需要进一步缩小尺寸,则可能需要依赖于云端交付资源。本文档介绍了如何准备用于云端交付的资源以及各种游戏引擎提供的支持选项。虽然此页面上的指南侧重于游戏,但这些原则适用于包含大型资源的任何应用。
准备工作
在考虑将您的应用分解为云端交付资源时,请考虑如何根据资源何时需要提供给用户来将应用文件拆分为多个部分。此时间安排通常分为以下三类:始终需要、启动时需要和稍后需要。
始终需要
某些资源很难拆分为较小的块,或者需要捆绑在基本 APK 中。例如,您的游戏代码及其库或引擎依赖项。虽然Google Play Core 支持应用包的代码,但许多引擎不支持稍后下载的代码。
启动时需要
游戏启动后,用户应该能够立即开始游戏。Google Play Instant 要求用户能够在 LTE 或 4G 连接下在 15 秒内启动游戏(请参阅Google Play Instant 清单)。因此,请将启动后任何辅助下载限制为仅支持初始体验所需的大小。例如,启动后立即进行的快速后续下载可能包括第一个游戏关卡和位置资源,或运行前几分钟游戏玩法所需的任何代码。
稍后需要
您可以稍后根据需要在后台下载的任何内容都属于此类别。此类别包括大多数大型游戏的资源。稍后下载这些资源将有助于使您的应用大小尽可能小。
引擎支持
云端资源交付是使您的游戏超越即时游戏 15 MB 限制的主要方法。下载资源的支持会因游戏引擎而异。请参阅以下最常见的案例以及托管资源的选项。
请注意,启动时需要的资源越少,用户就越快进入游戏,这转化为较低的流失率和更好的首发玩家保留率。
Play 功能交付(通过应用包)
如果您将应用发布为应用包(推荐方法),则可以使用功能模块来获取基本 APK 之外的其他资源。对于您的即时应用,每个功能模块必须在清单中设置dist:instant="true"
。不应使用dist:on-demand
属性;它主要用于已安装 APK 中的按需模块。此外,每个功能模块必须低于 15 MB 的即时 APK 限制,无论该模块是否包含代码。未能使每个模块保持在此限制以下将阻止发布到 Alpha 或正式版本渠道。正确配置后,您可以使用 PlayCore 库在运行时获取功能模块。
Cocos Creator
自v2.0.4 版本起,Cocos 就支持云端交付资源。Cocos 按需下载资源,如果资源未及时下载,则会呈现占位符。Cocos 生成的资源文件必须与某些在线服务一起托管,因为 Cocos 本身不提供此类服务。
Unity
Unity 版本 5.6、2017.4 或 2018.2 的Unity Google Play Instant 插件支持云端交付。更高版本的 Unity 为引擎剥离提供了更多优势,因此迁移到这些版本可能会有益于释放更多空间。Unity 云端资源托管在AssetBundle
文件中,这些文件由 Unity 为您创建。将这些文件上传到云服务器可以启用云端交付资源,因为 Unity 本身支持下载资源包。
其他引擎
无论您使用的是自定义引擎还是一系列原生库,您的选择都可能开箱即用地支持云端下载资源。如果您有足够的资源需要从云端下载,则需要编写或集成一种方法来按需下载游戏资源。Firebase 托管或Firebase 云存储 API是不错的起点。某些引擎提供简单的 HTTPS 文件获取,这对于您的需求也可能足够。
托管资源
除非您使用 Google Play 应用包 通过 Play 下载您的资源,否则您需要将资源托管在其他地方。您可以自由地选择任何服务来托管它们,只要该服务具有合理的全球分发和可用性即可。Google Play 游戏应用的用户遍布全球,因此云托管的资源需要能够快速地为任何位置的用户提供服务。