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