资源选择与排除

编辑页面

了解如何使用资源选择功能,并验证更新是否包含所有必需的应用资源。


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

实验性的资源选择功能允许开发者指定只有某些资源应被包含在更新中。这可以大幅减少需要上传到更新服务器以及从更新服务器下载的资源数量。此功能可与 EAS Update 服务器或任何符合 expo-updates 协议 的自定义服务器配合使用。

SDK 52 将此功能提升为正式可用。

使用资源选择

要在 SDK 52 以下版本中使用资源选择,请在应用配置中包含 extra.updates.assetPatternsToBeBundled 属性。它应定义一个或多个文件匹配模式(正则表达式)。例如,app.json 文件中的模式可如下定义:

app.json
"expo": { %%placeholder-start%%... %%placeholder-end%% "extra": { "updates": { "assetPatternsToBeBundled": [ "app/images/**/*.png" ] } } }

要在 SDK 52 及更高版本中使用资源选择,请在应用配置中包含 updates.assetPatternsToBeBundled 属性。它应定义一个或多个文件匹配模式(正则表达式)。例如,app.json 文件中的模式可如下定义:

app.json
"expo": { %%placeholder-start%%... %%placeholder-end%% "updates": { "assetPatternsToBeBundled": [ "app/images/**/*.png" ] } }

添加此配置后,app/images 下所有子目录中的所有 .png 文件都会包含在更新中。你还需要确保这些资源会在你的 JavaScript 代码中被引用。

如果 app 配置中未包含 assetPatternsToBeBundled,则所有由打包器解析得到的资源都会包含在更新中(与 SDK 49 及更早版本的行为一致)。

验证更新是否包含所有必需的应用资源

使用资源选择时,不匹配任何文件模式的资源仍会在 Metro 打包器中解析。但是,这些资源不会上传到更新服务器。你必须确保未包含在更新中的资源已构建进应用的原生构建中。

如果你正在本地构建应用,或者可以访问用于发布更新的正确构建(具有相同的 runtime version),那么请使用 npx expo-updates assets:verify 命令。它可以帮助你检查发布更新时是否会包含所有必需的资源:

Terminal
npx expo-updates assets:verify <dir>
这个新命令属于 expo-updates CLI,它也支持 EAS Update 代码签名。它不属于 Expo CLIEAS CLI。仅适用于 (expo-updates >= 0.24.10)。

你也可以将 --help 选项与该命令一起使用,以查看可用选项:

选项描述
<dir>Expo 项目的目录。默认值:当前工作目录。
-a, --asset-map-path <path>指向通过命令 npx expo export --dump-assetmap 生成的导出结果中的 assetmap.json 的路径。
-e, --exported-manifest-path <path>指向通过命令 npx expo export --dump-assetmap 生成的导出结果中的 metadata.json 的路径。
-b, --build-manifest-path <path>指向在 Expo 应用构建中由 expo-updates 创建的 app.manifest 文件的路径(androidios 均可)。
-p, --platform <platform>选项:["android", "ios"]
-h, --help使用信息。

示例

Working example

查看一个使用资源选择、assets:verify 命令以及其他 EAS Update 功能的可运行示例。