On previous versions of Xcode, UIRequiredDeviceCapabilities was being automatically populated with "watch-companion". Instead, we had to manually add this property to our Info.plist file. Without it, we got the following error when submitting our app to the App Store:
ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'UIRequiredDeviceCapabilities' in bundle Foo.app/Plugins/FooWatchException.appex is required."
Can Xamarin include this property automatically for Watch apps (or make sure upgrades from Xcode 7 -> Xcode 8 work correctly?)
Please include all version informations.
The easiest way to get exact version information is to use the
"Xamarin Studio" menu, "About Xamarin Studio" item, "Show Details"
button and copy/paste the version informations (you can use the
"Copy Information" button).
Nevertheless this does look like a bug in Xamarin Studio rather than the iOS project.
Xamarin Studio Community
Version 6.1 (build 5441)
Installation UUID: affe5a6a-8341-420e-a6cd-2ceb617eb8d8
Mono 4.6.0 (mono-4.6.0-branch/746756c) (64-bit)
GTK+ 2.24.23 (Raleigh theme)
Package version: 406000245
Version: 220.127.116.11 (Xamarin Studio Community)
Android SDK: /Users/Sarah/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
4.0.3 (API level 15)
4.1 (API level 16)
4.2 (API level 17)
4.3 (API level 18)
4.4 (API level 19)
4.4.87 (API level 20)
5.0 (API level 21)
5.1 (API level 22)
6.0 (API level 23)
7.0 (API level 24)
SDK Tools Version: 25.1.7
SDK Platform Tools Version: 24.0.2
SDK Build Tools Version: 23.0.2
Java SDK: /usr
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Android Designer EPL code available here:
Xamarin Android Player
Apple Developer Tools
Xcode 8.0 (11246)
Version: 10.0.0.6 (Xamarin Studio Community)
Build date: 2016-09-09 13:01:32-0400
Version: 18.104.22.168 (Xamarin Studio Community)
Release ID: 601005441
Git revision: 68292d1ab289911c815ddc715dd7cc29a9752f9f
Build date: 2016-09-09 04:43:23-04
Xamarin addins: ed25d008672663eeb9db55f1ccecb3c24d2fd3b2
Build lane: monodevelop-lion-cycle8
Mac OS X 10.11.5
Darwin sarah-macbook-pro.local 15.5.0 Darwin Kernel Version 15.5.0
Tue Apr 19 18:36:36 PDT 2016
Jeff will take a look at this issue.
Strangely Apple's documentation for the UIRequiredDeviceCapabilities key does not even mention watch-companion (see docs here: https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW3)
When Googling for more info, I discovered reports like this http://stackoverflow.com/questions/32542240/watch-companion-in-plist-required-by-itunesconnect-breaks-watch-app. It seems that these reports are all from about a year or so ago, so the bug was *probably* fixed which means theoretically, at least, auto-injecting this into the user's compiled Info.plist *should* be safe to do now (for WatchKit extensions).
Did you end up using an Array or a Dictionary?
FWIW, Vincent and I were doing a bit more digging and Vincent discovered that watch-companion is for watchOS1 extensions.
For WatchOS2 Extensions, having this key breaks launching in the Simulator (it turns out that we *used to* auto-add watch-companion to the Info.plist of Watch Extensions until April or so in the MSBuild tasks until we discovered that it broke WatchOS2 Extensions).
This is the patch that removed the logic that added watch-companion: https://github.com/xamarin/xamarin-macios/commit/94e35a8570a52c5a927e24830b65a857a7986d8d
To fix this, we'll need something similar, but that only affects watchOS1 extensions.
was merged in xamarin-macios/master 5922215e72596e8397cd701fa67f0f2e36802849
Unfortunately, we don't have watchOS 1 apps pushed to the AppStore to perform a clean verification of this fix. However, I came up with two results:
1) https://gist.github.com/anonymous/5deb53e0f66124cd7e130df8489c9911 - with current stable, submission failure caused by a missing value of the `UIRequiredDeviceCapabilities` key.
2) https://gist.github.com/anonymous/899739d5fac81e24bdedf1b449afd196 - with the master builds of XI `UIRequiredDeviceCapabilities` is not listed as a reason for submission failure anymore even though publishing still fails because of the watchOS 1 restriction.
Testing submission of watchOS 2.x only apps is fine (there's nothing more, for submissions, that can be done) and should continue.
That can (like this bug) find issues because we're still supporting watchOS 1.x applications (e.g. for migration or for enterprise apps that don't go to the store).
*** Bug 46047 has been marked as a duplicate of this bug. ***