Xcode 9.3 cannot submit build to App Store - ios

I've just updated to Xcode 9.3 and am having the following issue when submitting my app to the app store:
Invalid Bundle - The app cannot be processed because options not allowed to be embedded in bitcode are detected in the submission. It is likely that you are not building the app with the toolchain provided in Xcode. Rebuild your entire app with the latest GM Xcode and submit the app again.
I've double checked and all the frameworks linked to my project and they have all been compiled with bitcode enabled. Only one of these frameworks is a Carthage framework and I've ensured that it's been rebuilt using carthage update.
I'm completely stumped and don't know what else to try.
Thanks ahead for your help!

ITMS-90562: Invalid Bundle - The app cannot be processed because options not allowed to be embedded in bitcode are detected in the submission. It is likely that you are not building the app with the toolchain provided in Xcode. Rebuild your entire app with the latest GM Xcode and submit the app again.
This error might be caused by one of your external frameworks. You can try to rebuild the app from bitcode by yourself and that might give you some more informations. To do that in Xcode archive your app, then in organizer, in archives tab click "Distribute App", select "Development", and after that select "Rebuild from Bitcode" and proceed. After that Xcode will probably show more extended information about the problem which might help you solve it.

I had this problem, using Apple's latest toolchain, when including a dynamic framework built with hidden symbols (ld options -bitcode_bundle -bitcode_hide_symbols -r -x).
When the symbols weren't hidden, the app was processed by Apple as expected.

Related

WatchOS App for React-Native IOS app is not uploading to App Store Connect (ITMS-90496: Invalid Executable)

We have developed a Watch App for our React-Native IOS app using SwiftUI. After the the integrations are completed, we've tried to upload the build to TestFlight for testing purposes. In the process, since enabling bitcode is mandatory for WatchOS apps, it is enabled through Project Target -> Build Settings -> Build Options -> Enable Bitcode : Yes (And also tried to enable bitcode for Pods target). However, there is no other option to enable bitcode in the Watch Targets (both watch app and watchkit extension).
When we tried to upload the build to TestFlight, it got rejected with the error code ITMS-90496: Invalid Executable - The executable "{ProjectName}/Watch App WatchKit Extension.appex/WatchKit Extension" does not contain bitcode.
I have also read that in order to make the whole project bitcode enabled, you need to make sure that the libraries are also bitcode compatible. And since the app is a React-Native app, it contains a lot of 3rd party libraries. If anyone who tried to add a Watch App to an existing React-Native project and managed to upload it to TestFlight can help us during the process, it would be really helpful.
For those who are experiencing the same issue, our was in RN 0.63.* version, and the third party libraries were kind of old as well. After upgrading both RN and the third party library versions, the issue is gone and we're now able to upload to Testflight!
In my case it helped to open the project.pbxproj file in an editor outside of Xcode (e.g. VSCode) and remove all lines that contain ENABLE_BITCODE.
Seems the default settings of ENABLE_BITCODE are the right ones. Somehow Xcode puts in these lines without needing them.

Archive distribution problem for watch extension app

We've been developing and testing a Watchkit Extension app (iOS 12.1 and WatchOS 5.1) for the past few months and successfully testing it on a simulator and local, connected devices (iPhoneX + Watch 4) using xCode 10.1.
This past week we built an archive for posting to App Store Connect. We got stuck in the Archive Organizer after archiving for release. The "Validate Content" button was disabled, the Version is blank, the Identifier is blank, and the Type is "Generic Xcode Archive". Unfortunately, all we can do is export the .app files from the Archive Organizer; we can't push the archive to App Store Connect.
We made sure the build scheme was set to Release and we archived to a Generic iOS and WatchOS device. We also set Skip Install for the three targets (iOS app, Watch app, Watch extension) to No as we assumed none of those are static libraries. We even tried every permutation of Skip Install settings. We looked at the issue in the following link and we have no Header steps in the Build Phases of any targets:
https://developer.apple.com/library/archive/technotes/tn2215/_index.html#//apple_ref/doc/uid/DTS40011221-CH1-PROJ
We have two frameworks we included in the project using carthage. We thought maybe these were causing issues, but we rolled back to a branch before we added them and still have the same problem.
We made sure the build in the Scheme is set to a single target and cleared out the Derived Data folder. Still no dice.
I’m not 100% sure from your question, but are you trying to push an archive of the watch app to the App Store?
If so, that’s not how you submit the app. The Watch app is embedded in the “regular” iOS app, and to distribute it you need to archive and submit that app as usual.
If I’ve misunderstood, feel free to ignore this!
I had the exact same problem. When I changed Skip install on the watch app and watch app extension to YES, it suddenly worked. No idea why.

Properly archive iOS app with extensions

I've just added a new RichNotification Extension to my project.
Now I've got "myApp" target and two targets for: "RichNotification" and "RichNotificationContent"
When I archive the main target for the App Store works fine but I get this error while trying to upload to the App Store:
ERROR ITMS-90700: "Incorrect Platform. You included the iOS arm64
executable
“myAPP.app/PlugIns/myAPPRichNotifications.appex/myAPPRichNotifications”
in your iOS bundle. Only iOS executables can be included."
Is there any special procedure to archive an app with multiple extensions / targets? Special build config?
Couldn't really find any information, I'm probably searching with the wrong terms.
I had the same problem. I just use pod update, rebuild project on another mac, and reupload build to AppStore and issue gone
We had this error when using Transporter to upload the application from a non-developer computer. The solution was installing Xcode on that Mac. After that the upload process went through without issues.
Thanks to #Mikhailo Karpenko
I solved the issue by re-installing pods
And I had to remove the setting 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES' from the project settings as this is set by pod iteself
I had a similar issue where uploading an app produced the same ITMS-90700 error but it was related to a watch app executable. In the end it turned out that I had an old watchOS target in the build settings which was causing the error.
Not completely related to this question, but this is the only question I found on SO that referenced error ITMS-90700. Hopefully it helps someone.
I solved this issue by making sure all of the build targets in my project were built for the same iOS Deployment Target.
We added an extension in our app and it defaulted this value to iOS 12 whereas the rest of our app was configured for iOS 10. Regardless of the valid architectures field in the build settings, the extension was only being built with 64-bit support, but the rest was being built with both 32-bit and 64-bit.
After making this change, I ran lipo -archs on the extension to validate that it was built for both arm64 and armv7.

My app (developed in Cordova) is not getting downloaded on iOS 10.0.1

I deployed a hybrid app (Cordova) on iTunes App Store. Now its available for use. If I try to update the same app, I gets an error - on iOS 10.0.1 version - saying that:
"This app is not compatible with your device".
Any help would be really appreciable.
Thanks. :)
The issue may be that you chose to build the architecture only for 64 bit devices; you did not include armv7. This issue is discussed here:
https://developer.apple.com/library/content/qa/qa1910/_index.html
Also, there is a scheme that defines how the Archive build is created. You edit that scheme by selecting 'edit scheme' in the drop down menu that appears when you are picking which device to run on from Xcode. Under 'Archive' you should chose 'Distribution'.

Xcode unsupported architecture armv7k

When trying to validate my new app using watchkit with xcode 6.2 I get a strange error:
iTunes Store operation failed.
Unsupported architectures. Your executable contains unsupported architectures '[armv7k]'.
What does armv7k even mean?
All my build settings (for the app and all extensions) look like the ones in the following screenshot:
Could the red color of my embedded binaries have something to do with the problem? Everything works great on my device and on the simulators.
Thanks in advance!
Update:
xCode 6.2 and iOS 8.2 was released. Problem is still there.
It's more than likely not passing validation as you can't actually submit watch apps yet.
Per https://developer.apple.com/watchkit/:
Please Note: Apps built with Xcode 6.2 and iOS 8.2 SDK may be submitted to the App Store. However, WatchKit extensions are not accepted at this time.
I think this is architecture of new Apple Watch. It is not architecture of your main app so you can't see it in build settings of your app. For sure it is impossible to submit app from Xcode beta.
I have the same issue but from Xcode 6.2 (not beta). May be itunesconnect does't support watchkit extensions yet.

Resources