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