eas submit --platform ios提交失败:iOS应用图标验证不通过求助
iOS提交App Store Connect时图标验证失败问题排查
我用React Native + Expo开发了一个小型应用,APK发布正常,eas build构建也无错误,但执行eas submit --platform ios时遇到以下错误:
Something went wrong when submitting your app to Apple App Store Connect.
Your iOS app icon is missing or is an invalid format. The icon must be a 1024x1024 PNG image with no transparency.
Check your icon image and icon configuration in app.json.
我已确认图标尺寸为1024x1024、路径正确且无透明像素,以下是我的配置文件:
app.json 配置
{ "expo": { "name": "PharmacyServiceDonations", "slug": "PharmacyServiceDonations", "version": "2.1.1", "ios": { "bundleIdentifier": "com.anonymous.PharmacyServiceDonations", "icon": "./assets/icon/adaptive-icon.png", "buildNumber": "2.1.1" }, "android": { "package": "com.anonymous.PharmacyServiceDonations" }, "extra": { "eas": { "projectId": "58244e3c-69dd-4e9d-ac67-cffb4a705d19" } } } }
info.plist 配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CADisableMinimumFrameDurationOnPhone</key> <true/> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>$(PRODUCT_NAME)</string> <key>CFBundlePackageType</key> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <key>CFBundleShortVersionString</key> <string>2.1.1</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>2</string> <key>CFBundleIconName</key> <string>AppIcon</string> <key>LSRequiresIPhoneOS</key> <true/> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <false/> <key>NSAllowsLocalNetworking</key> <true/> </dict> <key>UILaunchStoryboardName</key> <string>SplashScreen</string> <key>UIRequiredDeviceCapabilities</key> <array> <string>arm64</string> </array> <key>UIStatusBarStyle</key> <string>UIStatusBarStyleDefault</string> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> <key>NSCameraUsageDescription</key> <string>Your message to user when the camera is accessed for the first time</string> <key>NSMicrophoneUsageDescription</key> <string>Your message to user when the microphone is accessed for the first time</string> <key>NSPhotoLibraryAddUsageDescription</key> <string>Your message to user when the photo library is accessed for the first time</string> <key>NSPhotoLibraryUsageDescription</key> <string>Your message to user when the photo library is accessed for the first time</string> </dict> </plist>
排查原因及解决方法
1. 图标配置优先级冲突
你的info.plist中设置了CFBundleIconName为AppIcon,但Expo默认通过app.json的ios.icon字段生成图标集,两者冲突会导致App Store Connect无法正确识别图标。
- 解决:删除
info.plist中的<key>CFBundleIconName</key>和对应的<string>AppIcon</string>条目,让Expo完全接管图标配置。
2. PNG文件格式隐蔽问题
即使尺寸正确,PNG可能存在以下问题:
- 使用索引颜色模式:Apple要求图标用RGB模式,索引模式会被判定无效。
- 存在隐含透明通道:部分工具导出的PNG即使视觉不透明,仍可能保留空透明通道。
- 解决:用Photoshop或Mac Preview重新导出:
- 确认颜色模式为RGB。
- 导出时选"PNG-24",明确关闭透明选项。
3. Expo构建未正确嵌入图标
eas build可能未将图标正确打包到IPA中,即使构建无报错。
- 解决:
- 清理Expo缓存:执行
npx expo prebuild --clean,重新生成原生项目文件。 - 重新执行
eas build --platform ios,检查构建日志无图标相关警告。 - 下载IPA包解压,查看
Payload/[AppName].app/Assets.car是否包含正确图标资源。
- 清理Expo缓存:执行
4. App Store Connect缓存问题
Apple服务器可能缓存旧图标数据,导致新提交的图标无法被识别。
- 解决:
- 登录App Store Connect,进入应用"App信息"页面,手动上传1024x1024的App Store图标。
- 等待15-30分钟后,重新执行
eas submit --platform ios。
内容的提问来源于stack exchange,提问作者ahmad hamdan
相关产品推荐
相关产品推荐

