Expo执行build:android构建安卓包图片不显示,开发模式正常,改启动屏配置即构建失败
Expo 托管工作流 Android 构建异常排查方案
环境匹配说明
你当前的开发配置完全命中两类已知构建问题的触发场景:
- 本地 Expo CLI 版本 4.3.4
- 项目使用 Expo SDK 40 托管工作流
- 运行环境为 Windows 10
- 开发调试阶段功能完全正常,仅正式构建产物出现异常
正式构建包图片不显示,调试阶段加载正常
问题根源
开发调试模式下所有静态资源走本地开发服务器动态拉取,路径容错性极强,无论用别名路径还是相对路径引入图片都能正常显示。正式构建时会将所有静态资源静态打包进APK安装包,一旦匹配不上资源打包规则,流程会静默跳过对应资源——既不抛出构建错误,也不会在运行时提示资源缺失,最终表现为图片加载空白。
你尝试的~开头别名路径写法,在Expo SDK40的Android正式打包流程中存在解析兼容问题:无论别名配置是否正确,所有用该写法引入的图片都会被打包流程判定为无效路径,直接排除在APK资源包外。
处理步骤
- 打开项目根目录的
app.json,检查assetBundlePatterns配置项,如果存在自定义过滤规则,直接替换为SDK40的默认打包规则:
该配置用于指定打包时需要拷贝进APK的资源范围,SDK40版本如果配置规则写错,会直接跳过assets目录下的全部图片资源,且不会在构建日志中抛出异常。"assetBundlePatterns": [ "**/*" ] - 统一替换所有图片引入的写法,去掉所有
~开头的别名路径,全部改为基于当前文件位置的相对路径引入,例如从src/pages/home/目录下引入图片,就写require('../../assets/images/logo.png'),规避别名解析的兼容问题。 - 清理本地打包缓存:删除项目根目录下的
.expo缓存文件夹、node_modules/.cache缓存目录,避免旧的资源索引残留导致的资源丢失。 - 重新执行
expo build:android生成安装包,验证图片加载效果。
修改启动屏backgroundColor后构建直接失败
问题根源
Expo CLI 4.3.4 版本存在已知的配置解析漏洞,对splash节点下的十六进制色值校验逻辑存在bug:当配置的色值带#前缀时,构建流程的配置解析步骤会将色值误判为代码语法节点,直接抛出异常中断构建,和具体设置的色值数值没有关系。
处理步骤
- 保留splash节点下的背景色配置,去掉色值前面的
#号,例如原来写"backgroundColor": "#25c16f",直接修改为"backgroundColor": "25c16f",即可绕过版本的解析bug,正常完成构建。 - 或者将启动屏的背景色配置迁移到Android原生配置节点下,在
app.json的android字段下新增windowBackground配置,同样填写带#号的色值,构建流程不会走splash节点的色值校验逻辑,可以正常识别。 - 也可以升级本地Expo CLI到4.13.0以上的稳定版本,该色值解析bug在后续CLI小版本中已被修复,该升级不需要改动项目当前的SDK40依赖,仅替换本地CLI工具版本即可生效。
内容的提问来源于stack exchange,提问作者Piyush Rawat
相关产品推荐
相关产品推荐

