Archive distribution problem for watch extension app - ios

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.

Related

ITMS-90428: Invalid Swift Support - The files libswift_Concurrency.dylib don’t match

I am trying to upload a new build of my app from the new Xcode 14.1 RC but it keeps failing with the below error:
ITMS-90428: Invalid Swift Support - The files libswift_Concurrency.dylib don’t match
/Payload/MY_APP.app/MY_APP_WatchOS.app/libswift_Concurrency.dylib.
Make sure the files are correct, rebuild your app, and resubmit it.
Don’t apply post-processing to /Payload/MY_APP.app/MY_APP_WatchOS.app/libswift_Concurrency.dylib.
My bundle contains a watchOS 4.3 app which I thought might have been an issue, so I tried increasing it to watchOS 7.0 but still got the error.
Bitcode is disabled for all targets.
I don't think I have any post-processing enabled either as I just use the standard Xcode submit to App Store.
The same problem here.
I changed nothing in my watch app since the last successful upload.
The only change is Xcode 14.0 -> 14.1.
Success.
I finally got a build to be accepted.
I set ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO for the watch target.
I don't know how this might affect the actual running of the watch app, as I no longer have an Apple Watch to test it on, but the iOS app is running fine through TestFlight.

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.

Apple Watch App Extension won't run on the simulator anymore

I'm creating my first Apple Watch app and upon first adding the Watch and Watch extension targets I was able to start building my interface and running on the simulator. Since then I've needed to update my iOS app while still working on the Watch app. So I used this advice to "disable" my watch app so I could submit a build for the new iOS version:
Prevent deploying (disable) WatchKit App with iOS iPhone App in Xcode
Simply, by removing the watch and extension in target dependencies and embedded watch content in Build Phases did the trick. Now I'm picking back up the work I put down but can't seem to get it to run on the simulator. I add back the target dependencies and the embedded watch content but I get the error: Error Launching 'App Name Extension' Invalid Bundle - No Apple Watch Binary
Can anyone explain what that means and why I am getting this error?
For anyone who comes across this problem seeking an answer. I found that I had been changing my version and build number to accommodate my current iPhone version and build number. This was creating that error, so to fix it I left the watch app and extension app version/build as default 1.0 and 1.

Impossible to run my Apple Watch application in iOS Simulator

I'm trying to run an Apple WatchKit target with my Universal app, using Xcode 6.2
I'm probably doing something wrong, but I can't access to the simulator in the scheme menu
Any idea ?
Have you tried to attach it in the iOS simulator?
This appears to be a bug that at times affects some Build Schemes for some reason. Fortunately, it is easy to fix.
In the menu that appears in your screenshot, select "New Scheme".
Select your WatchKit App as the target, and give it a name. Click 'OK'.
In the new entry in the Schemes menu, you should now be able to open your WatchKit app in the simulator.
You can also correct this issue via "Manage Schemes" and removing and re-adding your existing WatchKit App.
No luck?
For those who are still having a headache after doing this list of things:
Creating new schemes
Hacking Targeted Device Family
Autocreating schemes
Clearing Derived Data and Module Cache cleaning Project
Restarting Xcode, Mac
History
It took me about 3 hours to get rid of no targets (my case was My Mac target), I copied the project somewhere to keep my current data and I did these things to inspect:
Deleting current targets (AppExtension and WatchKit)
Creating them again (for my surprise the iOS Simulator this time came up)
Opening Product->Scheme->Edit Scheme
Selecting a scheme which target is WatchKit App
Under Build I see that my old scheme had only its own target (WatchKit one) while the new that was generated from new targets had 3 targets (MainApp, WatchKit and WatchExtension)
I did the same thing to my old ones by adding target, and the simulator came up, ran it and worked perfectly
Solution
Open Product->Scheme->Edit Scheme
Select your WatchKit Scheme
Select Build and if you see only one target, that could be the case, add the other required target (in my case were MainApp and WatchKit Extension)
If it works, cheers :)
Hope it helps somebody
This is likely the issue reported in the Xcode Release Notes whereby Xcode can't communicate with the simulator service if you rename Xcode.app. Please reboot your system.
Renaming Xcode.app after running any of the Xcode tools in that bundle
may cause iOS Simulator to be no longer be available. Either rename
Xcode.app back to what it was when first launched or restart your Mac.
(16646772)
If you open the Watch Kit project in lower versions of Xcode (6.1 and below) you wont get the simulator options.
Not sure if you have done the same, but I just observed this today.

iCloud container changes with release of iOS 8

Since the release of iOS 8 on the 17th, all my development and deployment profiles are showing as invalid in the Apple dev center. Also none of my apps using iCloud will run in either Xcode 5.1 or 6 GM on an actual device. Get a message stating entitlements do not match provisioning profile. The only acceptable iCloud containers now have to start with iCloud which do not recognize data already stored in iCloud using the previously require iCloud container naming structure.
Any solutions? I've searched the web and Apple dev site for hours with no solutions found. I can't be the only one having this problem. Very frustrating after just releasing an App on the App Store and now can't change any code to update it!
Click on Use Default Container
Click on Specify Custom Containers
Reselect your custom containers
Not sure this is the final answer, but I finally found a way to access the old iCloud information in my app on a device. I returned to Xcode 5.1.1, deleted the entitlements file in my project. Edited both the Development and Distribution profiles on iTunesConnect (using iCloud.xxxx settings that are only allowed now), downloaded and installed in Xcode 5.1.1. I checked the Key-Value Store: under iCloud capabilities and clicked the + under Ubiquity Containers and made sure the targets all had the same container (com.companyName.AppName) for each target in the app. Then attached an iOS device and ran the app. Errors appeared, returned to each target and clicked "fix" under Capabilities - iCloud. Had to click fix several times until no longer appeared. Then ran the app again, the previous iCloud data stored in the app before iOS 8 release showed up in the app and all appears to work.
The above resulted in a separate entitlements file for each target, previously there was only one entitlements file used by all targets.
I have not tried with with Xcode 6 again yet, but I finally have access to my app through Xcode 5.1.1 and can work the fixes and enhancements for my published app again.
Update (11/5/2014): Was able to upload to app store for beta testing without problems using Xcode 5 with the above method.
Hope this helps someone else.

Resources