ERROR ITMS-90502 App Store Upload - Xcode - ios

Suddenly our project is not uploading properly to the App Store and we are stopped at this point :
Error message:
ERROR ITMS-90502: "Invalid Bundle. Apps that only contain the arm64 slice must also have 'arm64' in the list of UIRequiredDeviceCapabilities in Info.plist."
We've tried all, this is our 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>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Optimio</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>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>2</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) upload your expense photos through camera and roll</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) upload your expense photos through camera and roll</string>
<key>UILaunchStoryboardName</key>
<string>Uploaders</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
Also we have this build settings:

It may be a change in iTC that's causing it, but there does actually seem to be a fix.
I corrected the plists of ALL extensions in my (iOS11 only) project to include arm64 as a requirement (UIRequiredDeviceCapabilities).
And then added this post install hook for cocoapods:
https://twitter.com/aaron_pearce/status/966530631608881153
Now uploaded successfully and going through processing.
EDIT:
Whilst this solution is valid, and worked perfectly well, it is no longer necessary. It seems that iTC has been "fixed", and now accepts (again) builds that have not had these changes made.
https://forums.developer.apple.com/message/296129

(I did try the post install hook as suggested here but that didn't work)
Add the following xml to your main target's info.plist file,
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Then add the same xml to all your info.plist files in your pods project (if you have a pods project of course).
You should now be able to upload to iTunes connect.

This looks to be a recent change that Apple made with ITC validation. Previously it was enough to flag your main project as restricted to arm64, but now it looks like you need to ensure that even embedded projects are flagged as well. Meaning that Pods.proj and any Internal.proj files need to be restricted along with the main project file.
Unfortunately right now Cocoapods, by default, builds frameworks that support arm64, armv7, and armv7s which causes an issue here. I was able to solve this problem by adding the following lines to my Podfile.
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings['VALID_ARCHS'] = 'arm64'
end
end
Hope this helps!
Source:
https://gist.github.com/alexpersian/e6ab115dc12f3d48eee0e7f27dfb567d
Edit: (2/23/2018)
This issue looks to have been resolved on the iTC side based on the following forum thread. https://forums.developer.apple.com/message/296129

Related

Invalid Image Path - No image found at the path referenced under key 'CFBundleIcons':'AppIcon20x20' [duplicate]

This question already has answers here:
App Store Validation Issue - CFBundleIcons App Icon20x20
(2 answers)
Closed 5 years ago.
REPOSTING SINCE I AM GETTING NO ANSWERS ON THIS.
I have been struggling with this issue for over a week. Whenever I try to validate a build or use application loader lately I have been getting this error:
iTunes Store operation failed.
Invalid Image Path - No image found at the path referenced under key 'CFBundleIcons':'AppIcon20x20'
Now, the problem is there is no AppIcon20x20 key in my plist.
Here's my AppIcon asset and attributes settings:
AppIcon, Attributes
Nowhere is a 20x20 asset even mentioned in my Plist, as seen by the source code version here :
<?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>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon603x.png</string>
<string>icon602x.png</string>
<string>icon403x.png</string>
<string>icon402x.png</string>
<string>icon293x.png</string>
<string>icon292x.png</string>
<string>icon203x.png</string>
<string>icon203x.png</string>
</array>
</dict>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>https://millsfitnessapparel.myshopify.com/</key>
<string></string>
</dict>
</dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</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>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
And lastly, I have googled the heck out of this topic and they all say to just add CFBundleIcons to your plist, which I did, but it's still throwing the error. I have also done this in versions of this project where there are pods, no pods, workspaces, regular xcproj. files, and even with 1 view controller and just some icons [this latest build].
I have also tried to achive this build in xcode versions 8.1, 8.2, and 8.3, all receiving the same error.
Any help here would be greatly appreciated. These are apps for a client and I am currently late on delivering because of this issue. Thanks.
you can simply create your app icons asset using https://makeappicon.com/. You have to supply a 1536x1536px image for the best result. It will automatically create all the app icons for your project
Also please refer to the following:-
Check the icon file's name is exactly same as the name in your info.plist. It's fine while running debug mode though, It doesn't work while you upload/ validate the build.
Please check your app's bundle identifier is correct.

App Store Validation Issue - CFBundleIcons App Icon20x20

I have been struggling with this issue for over a week. Whenever I try to validate a build or use application loader lately I have been getting this error:
iTunes Store operation failed.
Invalid Image Path - No image found at the path referenced under key 'CFBundleIcons':'AppIcon20x20'
Now, the problem is there is no AppIcon20x20 key in my plist.
Here's my AppIcon asset and attributes settings:
AppIcon, Attributes
Nowhere is a 20x20 asset even mentioned in my Plist, as seen by the source code version here :
<?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>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon603x.png</string>
<string>icon602x.png</string>
<string>icon403x.png</string>
<string>icon402x.png</string>
<string>icon293x.png</string>
<string>icon292x.png</string>
<string>icon203x.png</string>
<string>icon203x.png</string>
</array>
</dict>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>https://millsfitnessapparel.myshopify.com/</key>
<string></string>
</dict>
</dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</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>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
And lastly, I have googled the heck out of this topic and they all say to just add CFBundleIcons to your plist, which I did, but it's still throwing the error. I have also done this in versions of this project where there are pods, no pods, workspaces, regular xcproj. files, and even with 1 view controller and just some icons [this latest build].
I have also tried to achive this build in xcode versions 8.1, 8.2, and 8.3, all receiving the same error.
Any help here would be greatly appreciated. These are apps for a client and I am currently late on delivering because of this issue. Thanks.
Its basically, that the 120px icon is not exactly 120px, I ended up recreating the icon and finally was able to get the app submitted to Apple Store.
Okay non of the steps online worked for me so I'm gonna post how I resolved my problem, I had a very old project which was originally created before iOS 5 but it was upgraded up until iOS 9 but it carried over old icon system.
Even though I didn't have CFBundleIcons nowhere in my plist file and have everything properly setup in the asset manager under AppIcon key but it was giving this message so this is what I did
I created CFBundleIcons key in the plist file by typing the exact key ( CFBundleIcons ) without selecting anything from suggestion window as that key no longer exist in the suggestion window.
After you hit enter Xcode translates you key into 'Icon Files ( iOS 5 )'
Then go to your project's target node where you can see the project's target settings.
In there you should see the Migrate button shows up in from of the 'App Icon Source'
Click to Migrate to the new Icon system ( eve though you may have
already done it before )
After you migrated create a new icon set in the assets manager or
point to an existing one if you have already created one.
This should clear out that issue, basically we just needed re-invoke the migration process to clean up what was left over.

UIRequiredDeviceCapabilities is invalid for iOS application

I'm trying to upload an iOS application to iTunes Connect, however every time I attempt to upload the application I get the following message:
Performance - 2.3
We were unable to install the app. The UIRequiredDeviceCapabilities
key in the Info.plist is set in such a way that the app will not
install.
Next Steps
Please check the UIRequiredDeviceCapabilities key to verify that it
contains only the attributes required for your app features or the
attributes that must not be present on the device. Attributes
specified by a dictionary should be set to true if they are required
and false if they must not be present on the device.
I don't understand what I'm doing wrong with the UIRequiredDeviceCapabilities.
My application requires the device to have a camera as it involves reading a QR code.
The following is my 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>UIRequiredDeviceCapabilities</key>
<array>
<string>still-camera</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>pw.whatsyourwifi.ios</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>5</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
I have looked at a number of resources provided by Apple such as:
Expected App Behaviours
List of Possible Values
Any help is appreciated, just don't know what I'm doing wrong at this point.
FYI, this was resolved for me when I simply replied to the app rejection stating that my plist file was correct per the docs (assuming yours is correct to your app and the docs). They accepted me.
The contents of UIRequiredDeviceCapabilities must be a dictionary, not an array; the capability is used as a key in the dictionary, and the value must be set to a boolean true or false to indicate whether the device must have the capability, or must not have the capability.
(The utility of prohibiting capabilities in an app is a little questionable. I'm not sure why it'd make sense to have an app that would refuse to install on a device with a camera, for instance. But that's what Apple put in there, so…)
In your case, this would look like:
<key>UIRequiredDeviceCapabilities</key>
<dict>
<key>still-camera</key>
<true/>
</dict>

Xcode : Submission Failed - Invalid IPA

After many hours of research, I don't know why I can't submit my application from xCode (6.1).
At the end of the submission an error is returned:
ERROR ITMS-90072: "The IPA is invalid It does not include a Payload directory."
The two responses that I've read are located in the info.plist file
Two keys must be added :
- LSRequiresIPhoneOS: YES (Boolean)
- CFBundleInfoDictionaryVersion: 6.0 (String)
The project has been cleaned.
This is the contents of my file 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>LSRequiresIPhoneOS</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>fr_FR</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.forprodis.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>UILaunchStoryboardName</key>
<string>Main</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
I have generated the IPA and unzip it. The folder contains two subfolders :
- Applications
- Symbols
Only the Payload folder should appear, isn't it ? (the wrapper)
Wikipedia describes the content like this :
An IPA has a built-in structure for iTunes and AppStore to recognize,
The example below shows the structure of an IPA:
/Payload/
/Payload/Application.app
/iTunesArtwork
/iTunesMetadata.plist
I just had the very same problem. It turned out that a missing entitlement for in-app purchases was the culprit.
Select your target and go to 'Capabilities'. Xcode highlighted the missing entitlement and offered to fix it. Then it finally worked.
I hope this works for you as well. I have spent the last couple of hours tearing my hair out.
I faced the same problem on an application that I've successfully submitted many times over the past few years. To correct it, I had to edit the Info.plist file to set:
Application requires iPhone environment = YES
Mine was set to NO. This does not restrict the application from deploying to iPad or iPod.

Can't install iOS app

I'm trying to test out an .ipa file but when i install it with xCode i get the following error: Please include the kCFBundleIdentifierKey in the options dictionary when installing an app.
I've checked and re checked my bundle ID and it is matching the ad hoc profile i got so what's wrong here? if i install the app with iTunes the app icon just gets grayed out and if i press the app to open it, it just writes "installing..." and keeps saying that.
Any help is appreciated, been stuck with this for 5 hours now:(
Heres my .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>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>GolfBox</string>
<key>CFBundleExecutable</key>
<string>GP Mobil</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon.png</string>
<string>icon#2x.png</string>
</array>
</dict>
</dict>
<key>CFBundleIdentifier</key>
<string>dk.golferportal.golfersDK</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>dk.golferportal.golfersDK</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.7</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.7.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainWindow</string>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
SOLUTION: Don't use " "(space) in the file name of the .ipa file
It sounds like your app doesn't have a bundle identifier
Do this:
Right click on your .plist file,
Click open as -> Source Code
Copy and paste that code onto your post so we can take a look at your plist configuration. Chances are something is missing and that something needs to be added such as your bundle identifier key
Once youve updated your post and i've had a chance to take a look at it, I can update my post to help correct your situation
UPDATE
It turns out that the problem occurred due to a space character found in the filename which must not occur. Taking out the space character solves the problem.

Resources