This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
优化 EAS Update 的资源
编辑页面
了解 EAS Update 如何下载资源,以及如何针对下载大小进行优化。
新的资源选择功能可以大幅减少已下载资源的总数量和总大小。
当应用发现新的更新时,它会下载一个清单,然后下载任何新的或已更新的资源,以便运行该更新。流程如下:
许多运行 Android 和 iOS 应用的用户使用的是移动网络,这些网络的稳定性和速度都不如 Wi‑Fi,因此,确保作为更新一部分分发的资源尽可能小非常重要。
代码资源
发布更新时,EAS CLI 会运行 Expo CLI,将项目打包为一个更新。该更新会出现在项目的 dist 目录中。
在 dist/bundles 中,我们可以看到将分别作为 Android 和 iOS 更新一部分的 index.android.js 和 index.ios.js 文件的大小。请注意,这些是未压缩的文件大小;EAS Update 使用 Brotli 和 gzip 压缩,可以显著减小下载大小。不过,如果设备之前没有下载过这些文件,那么在获取新更新时,仍会将这些文件下载到用户设备上。尽可能减小这些文件的大小有助于终端用户快速下载更新。
图片资源
如果应用用户检测到新的更新,而这些资源又不在其构建中,他们就必须下载任何新的图片或其他资源。你可以在 dist/assets 中查看上传到 EAS 服务器的所有资源。那里的资源名称都经过了哈希处理,并移除了扩展名,因此很难看出里面有哪些资源。要查看格式化后的资源列表,我们可以运行:
- npx expo export优化图片资源
要手动优化项目中的图片资源,你可以使用 npx expo-optimize 命令。它使用 sharp 库来压缩图片。
- npx expo-optimize运行该命令后,所有图片资源都会被压缩,已经优化过的除外。你可以通过在命令中添加 --quality [number] 选项来调整压缩质量。例如,要压缩到 90%,请运行:
- npx expo-optimize --quality 90其他手动优化方法
要手动优化图片和视频,请参阅 资源 了解更多信息。
确保资源包含在更新中
当你发布更新时,EAS 会将你的资源上传到 CDN,以便用户运行应用时可以获取这些资源。不过,资源要上传到 CDN,必须在应用代码中的某处被显式引用。如果有条件地引用资源,打包器将无法检测到它们,而你发布项目时它们也不会被上传。
进一步考虑
需要注意的是,用户的应用只会下载新的或已更新的资源。它不会重新下载应用中已存在的未更改资源。
确保更新尽可能轻量的一种方法,是频繁地构建并提交应用到应用商店,这样用户就可以下载一个包含更多最新资源的新应用二进制文件。通常来说,在添加较大的资源或多个资源时构建并提交应用是个好习惯,而在两次应用商店发布之间使用更新来修复小 bug 和进行小幅修改也是很好的做法。