From a20a503a89f472b477e7b7daf6c0296fbdf2bd74 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Tue, 1 Nov 2016 17:24:14 -0400 Subject: [PATCH] [msbuild] Validate that WatchOS2 App Extensions do not have watch-companion set --- .../Tasks/ValidateAppBundleTaskBase.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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)