React Native iOS应用提交App Store时图标格式报错求助
iOS App Store提交图标报错解决方案
针对你使用eas submit --platform ios或Transporter上传时遇到的「iOS应用图标缺失或格式无效,必须是无透明的1024x1024 PNG」错误,以下是实用排查和解决步骤:
一、验证图标文件本身
- 检查隐性透明度:用Mac预览打开图标文件,点击「文件-导出」,勾选「消除透明度」后保存为新PNG替换原图标
- 确认格式规范:用Photoshop导出时设置「不透明度100%」,选择PNG-24格式,确保无alpha通道残留
- 核对分辨率:通过预览「显示简介」确认图标确实为1024×1024像素,无拉伸或缩放异常
二、修正app.json配置问题
你的配置存在重复图标定义,可能导致Expo处理冲突:
- 移除根
expo字段下的"icon": "./assets/images/Peace3.png",仅保留ios字段内的图标配置 - 删除
ios.infoPlist中的"CFBundleIconName": "Peace3",Expo会自动生成图标集及对应配置,手动添加该字段易引发路径不匹配问题
修正后的关键配置片段:
{ "expo": { "scheme": "acme", "name": "job_it", "slug": "job_it", "platforms": [ "ios" ], "notification": { "icon": "./assets/images/Peace3.png", "color": "#000000", "iosDisplayInForeground": true }, "version": "1.0.0", "orientation": "portrait", // 移除根节点的icon配置 "splash": { "image": "./assets/images/Peace2Small1024.png", "resizeMode": "contain", "backgroundColor": "#ffffff" }, "updates": { "fallbackToCacheTimeout": 0 }, "assetBundlePatterns": [ "**/*" ], "ios": { "icon": "./assets/images/Peace3.png", "bundleIdentifier": "com.jwin.ios", "buildNumber": "1.0.0", "infoPlist": { // 移除CFBundleIconName字段 "NSCameraUsageDescription": "Search for jobs and go to the application page right from the app!", "NSLocationWhenInUseUsageDescription": "This app does not require location access to function properly.", "NSLocationAlwaysAndWhenInUseUsageDescription": "This app does not require constant location access to function properly." } }, "extra": { "eas": { "projectId": "2fe8412c-0a6c-4ccc-b2a5-131ec4b8f44c" } }, // 注意:android字段package值建议改为对应安卓包名(如com.jwin.android),避免混淆 "android": { "package": "com.jwin.android" } } }
三、清理缓存并重新构建
- 清理Expo缓存:执行
npx expo prebuild --clean - 重新生成构建包:
eas build --platform ios - 使用新包提交:
eas submit --platform ios
四、额外排查点
- 确认图标路径准确性:检查
./assets/images/Peace3.png是否存在,文件名大小写是否与配置完全匹配(iOS区分文件名大小写) - 查看构建日志:在EAS构建过程中搜索「icon」相关日志,确认图标是否被正确加载处理,有无报错提示
内容的提问来源于stack exchange,提问作者codereyes
相关产品推荐
相关产品推荐

