Uploading iOS apps with special characters to App Store Connect

2 min read
Solving the error 'Invalid Signature. A sealed resource is missing or invalid'.
Post cover image

Suppose you have an Xcode project where the product name includes special characters like an umlaut 'ü':

Using Xcode to create an iOS project with the product name set to "Dümmy".

If you try to archive it and upload it to App Store Connect you might be faced with the following mysterious error:

ERROR ITMS-90035: "Invalid Signature. A sealed resource is missing or invalid. The file at path [Dümmy.app/Dümmy] is not properly signed. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level).

ERROR ITMS-90035: "Invalid Signature. A sealed resource is missing or invalid. The file at path [Dümmy.app/Dümmy] is not properly signed. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level).

This happens because the default Xcode configuration uses the same variable to set both the names of the .app package and the .ipa archive - both of which may not have special characters. And in this case it is set to "Dümmy".

The Info.plist file will have the following keys:

  • PRODUCT_NAME: the name of the .app bundle and executable file.
  • CFBundleName: the app name when CFBundleDisplayName isn't set.

The tricky part is CFBundleName which is set to the value of $(PRODUCT_NAME) by default. What Apple docs do not mention is that starting with Xcode 12 and beyond it also represents the .ipa file name.

The solution is to set both PRODUCT_NAME and CFBundleName to values with no special characters and to explicitly set the display name under Project Navigator → General → Display Name. This will generate a new key CFBundleDisplayName whose value will be preferred over CFBundleName for the app name.

Now you can keep the app name with special characters, but remove them from the file names for the app package and archive.

Discuss on Bluesky