diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs b/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs index 7f0e4062c0e0..7d5bd060e072 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs +++ b/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs @@ -298,6 +298,23 @@ void ValidateWatchExtension (string path, string watchAppBundleIdentifier, strin } else { Log.LogError ("The Watch Extension '{0}' has an invalid Info.plist: the NSExtensionAttributes dictionary must contain a WKAppBundleIdentifier.", name); } + + PObject requiredDeviceCapabilities; + + if (plist.TryGetValue ("UIRequiredDeviceCapabilities", out requiredDeviceCapabilities)) { + var requiredDeviceCapabilitiesDictionary = requiredDeviceCapabilities as PDictionary; + var requiredDeviceCapabilitiesArray = requiredDeviceCapabilities as PArray; + + if (requiredDeviceCapabilitiesDictionary != null) { + PBoolean watchCompanion; + + if (requiredDeviceCapabilitiesDictionary.TryGetValue ("watch-companion", out watchCompanion)) + Log.LogError ("The WatchKit Extension '{0}' has an invalid Info.plist: the UIRequiredDeviceCapabilities dictionary should not contain the 'watch-companion' capability.", name); + } else if (requiredDeviceCapabilitiesArray != null) { + if (requiredDeviceCapabilitiesArray.OfType ().Any (x => x.Value == "watch-companion")) + Log.LogError ("The WatchKit Extension '{0}' has an invalid Info.plist: the UIRequiredDeviceCapabilities array should not contain the 'watch-companion' capability.", name); + } + } } void ValidateWatchOS1App (string path, string extensionName, string mainBundleIdentifier, string wkAppBundleIdentifier)