React Native Expo iOS Testflight版本闪屏不显示问题求助
问题描述
Expo开发的React Native应用,本地Android、iOS端闪屏均正常显示,但打包后TestFlight的iOS版本仅显示白屏,闪屏无法加载;Android APK版本闪屏正常。当前app.json配置如下:
{ "expo": { "name": "ShoppingStore", "slug": "ShoppingStore", "version": "1.0.0", "orientation": "portrait", "icon": "./assets/icon.png", "userInterfaceStyle": "light", "plugins": [ [ "expo-image-picker", { } ] ], "splash": { "image": "./assets/splash.png", "resizeMode": "cover", "backgroundColor": "#ffffff" }, "assetBundlePatterns": [ "**/*" ], "ios": { "buildNumber": "5", "supportsTablet": true, "bundleIdentifier": "com.domain.com" }, "android": { "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#ffffff" }, "package": "com.domain.com", "versionCode": 3 }, "web": { "favicon": "./assets/favicon.png" }, "extra": { } } }
排查与解决步骤
检查闪屏图片规格与格式
iOS对闪屏图片分辨率有严格的设备适配要求,手动制作的图片容易出现尺寸不匹配导致打包后无法加载。建议用npx expo splash:generate命令自动生成全平台适配的闪屏资源,同时确保图片为无损PNG格式,路径./assets/splash.png指向的文件存在且未损坏。强制指定资源打包优先级
当前assetBundlePatterns配置为["**/*"],虽理论上包含所有资源,但iOS打包时可能存在资源遗漏问题。修改为["assets/splash.png", "**/*"],明确优先打包闪屏图片,避免资源被排除在打包产物外。清理缓存并重新构建
运行npx expo start --clear清理Expo本地缓存,再重新执行iOS打包命令。旧缓存可能导致资源未同步更新到最终包中。分析iOS构建日志
打包过程中重点查看与splash相关的日志输出,若存在"资源找不到""尺寸不匹配"等警告或错误,可直接定位问题根源。验证闪屏加载状态
临时将splash配置中的backgroundColor改为非白色(比如#ff0000),重新打包上传TestFlight。如果显示红色背景,说明闪屏图片未被正确加载;若仍为白屏,可能是闪屏组件逻辑或Expo SDK存在兼容问题。重新上传TestFlight包
部分场景下TestFlight会缓存旧包,确保重新构建后上传的是最新产物,且ios.buildNumber已更新为新值。
内容的提问来源于stack exchange,提问作者Yuva

