diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets index 79acb792e7..81bc50820f 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets @@ -563,6 +563,7 @@ Copyright (C) 2014 Xamarin. All rights reserved. ToolExe="$(ACToolExe)" ToolPath="$(ACToolPath)" AppManifest="$(_AppManifest)" + EnableOnDemandResources="false" ImageAssets="@(ImageAsset)" OptimizePngs="false" OutputPath="$(OutputPath)" @@ -611,6 +612,7 @@ Copyright (C) 2014 Xamarin. All rights reserved. ToolExe="$(IBToolExe)" ToolPath="$(IBToolPath)" AppManifest="$(_AppManifest)" + EnableOnDemandResources="false" InterfaceDefinitions="@(InterfaceDefinition)" IntermediateOutputPath="$(IntermediateOutputPath)" SdkPlatform="MacOSX" diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs index 32d5679736..d634c0803a 100644 --- a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs @@ -26,6 +26,8 @@ namespace Xamarin.MacDev.Tasks public string DeviceOSVersion { get; set; } + public bool EnableOnDemandResources { get; set; } + [Required] public ITaskItem[] ImageAssets { get; set; } @@ -156,7 +158,7 @@ namespace Xamarin.MacDev.Tasks if (AppleSdkSettings.XcodeVersion.Major >= 7) { if (!string.IsNullOrEmpty (outputSpecs)) - args.Add ("--enable-on-demand-resources", "YES"); + args.Add ("--enable-on-demand-resources", EnableOnDemandResources ? "YES" : "NO"); if (!string.IsNullOrEmpty (DeviceModel)) args.Add ("--filter-for-device-model", DeviceModel); @@ -258,6 +260,7 @@ namespace Xamarin.MacDev.Tasks Log.LogTaskProperty ("AppManifest", AppManifest); Log.LogTaskProperty ("DeviceModel", DeviceModel); Log.LogTaskProperty ("DeviceOSVersion", DeviceOSVersion); + Log.LogTaskProperty ("EnableOnDemandResources", EnableOnDemandResources); Log.LogTaskProperty ("ImageAssets", ImageAssets); Log.LogTaskProperty ("IntermediateOutputPath", IntermediateOutputPath); Log.LogTaskProperty ("IsWatchApp", IsWatchApp); diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ComputeBundleResourceOutputPathsTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ComputeBundleResourceOutputPathsTaskBase.cs index a7b080e941..0dbf896c6d 100644 --- a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ComputeBundleResourceOutputPathsTaskBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ComputeBundleResourceOutputPathsTaskBase.cs @@ -21,6 +21,8 @@ namespace Xamarin.MacDev.Tasks public ITaskItem[] BundleResources { get; set; } + public bool EnableOnDemandResources { get; set; } + [Required] public string IntermediateOutputPath { get; set; } @@ -36,6 +38,7 @@ namespace Xamarin.MacDev.Tasks Log.LogTaskProperty ("AppBundleDir", AppBundleDir); Log.LogTaskProperty ("BundleIdentifier", BundleIdentifier); Log.LogTaskProperty ("BundleResources", BundleResources); + Log.LogTaskProperty ("EnableOnDemandResources", EnableOnDemandResources); Log.LogTaskProperty ("IntermediateOutputPath", IntermediateOutputPath); Log.LogTaskProperty ("OutputPath", OutputPath); @@ -47,10 +50,10 @@ namespace Xamarin.MacDev.Tasks foreach (var item in BundleResources) { var logicalName = item.GetMetadata ("LogicalName"); var outputPath = item.GetMetadata ("OutputPath"); - var tags = AssetPackUtils.GetResourceTags (item); + IList tags; string hash; - if (tags != null) { + if (EnableOnDemandResources && (tags = AssetPackUtils.GetResourceTags (item)) != null) { var assetpack = AssetPackUtils.GetAssetPackDirectory (OutputPath, BundleIdentifier, tags, out hash); if (packs.Add (hash)) { diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/IBToolTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/IBToolTaskBase.cs index c487acd8dc..f846c55021 100644 --- a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/IBToolTaskBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/IBToolTaskBase.cs @@ -16,7 +16,9 @@ namespace Xamarin.MacDev.Tasks PDictionary plist; #region Inputs - + + public bool EnableOnDemandResources { get; set; } + [Required] public ITaskItem[] InterfaceDefinitions { get; set; } @@ -208,7 +210,7 @@ namespace Xamarin.MacDev.Tasks expected.SetMetadata ("LogicalName", bundleName); expected.SetMetadata ("Optimize", "false"); - if (!string.IsNullOrEmpty (resourceTags)) + if (EnableOnDemandResources && !string.IsNullOrEmpty (resourceTags)) expected.SetMetadata ("ResourceTags", resourceTags); if (UseCompilationDirectory) { @@ -398,6 +400,7 @@ namespace Xamarin.MacDev.Tasks { Log.LogTaskName ("IBTool"); Log.LogTaskProperty ("AppManifest", AppManifest); + Log.LogTaskProperty ("EnableOnDemandResources", EnableOnDemandResources); Log.LogTaskProperty ("InterfaceDefinitions", InterfaceDefinitions); Log.LogTaskProperty ("IntermediateOutputPath", IntermediateOutputPath); Log.LogTaskProperty ("IsWatchApp", IsWatchApp); diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.props b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.props index 574efad90d..c3497501c5 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.props +++ b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.props @@ -85,8 +85,9 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. ARMv7 - - + true + + true @@ -98,7 +99,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. - + diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets index c449357d6c..594819bb81 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets +++ b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets @@ -438,6 +438,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. AppBundleDir="$(AppBundleDir)" BundleIdentifier="$(_BundleIdentifier)" BundleResources="@(_BundleResourceWithLogicalName)" + EnableOnDemandResources="$(EnableOnDemandResources)" IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)" OutputPath="$(DeviceSpecificOutputPath)" > @@ -1163,7 +1164,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. Inputs="@(ImageAsset);$(_AppManifest)" Outputs="$(_ACTool_PartialAppManifestCache);$(_ACTool_BundleResourceCache)" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_BeforeCoreCompileImageAssets"> - + - + - + @@ -1969,7 +1972,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. - + <_PayloadDir>$(DeviceSpecificIntermediateOutputPath)ipa\Payload\ <_IpaAppBundleDir>$(_PayloadDir)$(_AppBundleName).app\ diff --git a/msbuild/tests/Xamarin.iOS.Tasks.Tests/TaskTests/IBToolTaskTests.cs b/msbuild/tests/Xamarin.iOS.Tasks.Tests/TaskTests/IBToolTaskTests.cs index a9b44d5f30..cf9faf4bcc 100644 --- a/msbuild/tests/Xamarin.iOS.Tasks.Tests/TaskTests/IBToolTaskTests.cs +++ b/msbuild/tests/Xamarin.iOS.Tasks.Tests/TaskTests/IBToolTaskTests.cs @@ -125,6 +125,8 @@ namespace Xamarin.iOS.Tasks storyboard.SetMetadata ("ResourceTags", tag); } + ibtool.EnableOnDemandResources = true; + Assert.IsTrue (ibtool.Execute (), "Execution of IBTool task failed."); foreach (var bundleResource in ibtool.BundleResources) { @@ -141,6 +143,8 @@ namespace Xamarin.iOS.Tasks bundleResources.Add (bundleName); } + ibtool.EnableOnDemandResources = true; + string[] expected = { "Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib", "Base.lproj/LaunchScreen.storyboardc/Info.plist", @@ -200,6 +204,8 @@ namespace Xamarin.iOS.Tasks storyboard.SetMetadata ("ResourceTags", tag); } + ibtool.EnableOnDemandResources = true; + Assert.IsTrue (ibtool.Execute (), "Execution of IBTool task failed."); foreach (var bundleResource in ibtool.BundleResources) {