1

I am trying to submit my iOS app and I am getting this error:

Your iOS app icon is missing or is an invalid format. The icon must be a 1024x1024 PNG image with no transparency.
Please check your icon image and icon configuration in app.json.
Learn more: https://docs.expo.dev/guides/app-icons/
[stderr] [!] Error uploading ipa file: 
[stderr]  [Transporter Error Output]: ERROR ITMS-90713: Missing Info.plist value. A value for the Info.plist key 'CFBundleIconName' is missing in the bundle 'com.lab.app'. Apps built with iOS 11 or later SDK must supply app icons in an asset catalog and must also provide a value for this Info.plist key. For more information see http://help.apple.com/xcode/mac/current/#/dev10510b1f7.
[stderr] [Transporter Error Output]: ERROR ITMS-90022: Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 10.0. To support older versions of iOS, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface
[stderr] [Transporter Error Output]: ERROR ITMS-90704: Missing App Icon. An app icon measuring 1024 by 1024 pixels in PNG format must be included in the Asset Catalog of apps built for iOS, iPadOS, or watchOS. Without this icon, apps cannot be submitted for review. For details, see https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/.
[stderr] \nERROR ITMS-90704: Missing App Icon. An app icon measuring 1024 by 1024 pixels in PNG format must be included in the Asset Catalog of apps built for iOS, iPadOS, or watchOS. Without this icon, apps cannot be submitted for review. For details, see https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/. entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface
[stderr] [Transporter Error Output]: The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.
fastlane pilot failedfastlane exited with non-zero code: 1

I am using eas build, and eas build.

Checked:

  1. Icon is not transparent
  2. It is 1024x1024
  3. Format is .png
  4. Icon is showing in Expo go
  5. It's configured in app.json like: "expo": { ... "icon": "./assets/icon.png",
  6. the icon is in the right folder
  7. since I am using expo prebuild, I made sure that the icon is also in ios/app/Images.xcassets\AppIcon.appiconset
  8. I have same icon with other names like: AppIcon.png which is the default name by ios, and AppIcon1024x1024.png which matches the name in offical Expo repo
  9. I added <key>CFBundleIconName</key> <string>AppIcon</string> to ios/app/info.Plist

Possible causes?

  1. I am using expo prebuild. However, when if I delete ios folder and try to generate it again using expo prebuild, it DOES NOT generate. not sure why. the only reason why I do have ios folder is because I started a new expo project using expo init --template bare-minimum. I have tried everything to get ``iosfolder generated but no success. **BUT**, when I edited files in the folder like addingCFBundleVersion 19andPRODUCT_BUNDLE_IDENTIFIER = com.lab.app;` and it did actually reflect on the build.

  2. My app name includes - like I have in package.json: "name": "app-name". But when I created it using expo init --template bare-minimum, it removed the - so folders in ios are named: appname & `appname.xcodeproj.

Mo Algh
  • 71
  • 3
  • 15

2 Answers2

2

I had a similar issue, but also setting the path to the icon i app.config.js (not only in app.json) made me able to create a build that I could later submit using "eas submit -p ios".

app.config.js:

export default {
  icon: "./app/assets/logo.png",
  // Other config...
};
snubbus
  • 387
  • 1
  • 2
  • 8
  • app.config.js overrides app.json completely. In order to have both and still honor app.json settings, you need to import them in app.config.ts by returning a function, not an object, like `module.exports = config => ({...config, newValue: ...});` If you do that you should be able to only specify icon in app.json (the static config) not app.config.ts (the dynamic config). This is not very clear from the docs – Freewalker May 31 '23 at 21:29
0

so expo prebuild for ios apps doesn't even work on windows

expo prebuild -p ios

Ejecting is unsupported locally on windows, use eas build instead
⚠️  Skipping generating the iOS native project files. Run expo eject again from macOS or Linux to generate the iOS project.
Mo Algh
  • 71
  • 3
  • 15