diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GetJavaPlatformJar.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GetJavaPlatformJar.cs index 5586e0c2ec9..2757d54b138 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GetJavaPlatformJar.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GetJavaPlatformJar.cs @@ -23,6 +23,8 @@ public class GetJavaPlatformJar : AndroidTask public string AndroidManifest { get; set; } + public bool DesignTimeBuild { get; set; } + [Output] public string JavaPlatformJarPath { get; set; } @@ -84,12 +86,11 @@ public override bool RunTask () } platform = GetTargetSdkVersion (platform, target_sdk); - JavaPlatformJarPath = MonoAndroidHelper.TryGetAndroidJarPath (Log, platform); + JavaPlatformJarPath = MonoAndroidHelper.TryGetAndroidJarPath (Log, platform, designTimeBuild: DesignTimeBuild); + TargetSdkVersion = MonoAndroidHelper.SupportedVersions.GetApiLevelFromId (platform).ToString (); if (JavaPlatformJarPath == null) return !Log.HasLoggedErrors; - TargetSdkVersion = MonoAndroidHelper.SupportedVersions.GetApiLevelFromId (platform).ToString (); - return !Log.HasLoggedErrors; } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs index f2d51942134..3e777babfde 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs @@ -1365,6 +1365,8 @@ public void IfAndroidJarDoesNotExistThrowXA5207 () if (!Builder.UseDotNet) proj.TargetFrameworkVersion = builder.LatestTargetFrameworkVersion (); builder.ThrowOnBuildFailure = false; + Assert.IsTrue (builder.DesignTimeBuild (proj), "DesignTime build should succeed."); + Assert.IsFalse (builder.LastBuildOutput.ContainsText ("error XA5207:"), "XA5207 should not have been raised."); builder.Target = "AndroidPrepareForBuild"; Assert.IsFalse (builder.Build (proj, parameters: new string [] { $"AndroidSdkBuildToolsVersion=24.0.1", diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs index e28d3e5d6d6..73485dffb91 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs @@ -443,13 +443,15 @@ public static IEnumerable Executables (string executable) yield return executable; } - public static string TryGetAndroidJarPath (TaskLoggingHelper log, string platform) + public static string TryGetAndroidJarPath (TaskLoggingHelper log, string platform, bool designTimeBuild = false) { var platformPath = MonoAndroidHelper.AndroidSdk.TryGetPlatformDirectoryFromApiLevel (platform, MonoAndroidHelper.SupportedVersions); if (platformPath == null) { - var expectedPath = MonoAndroidHelper.AndroidSdk.GetPlatformDirectoryFromId (platform); - var sdkManagerMenuPath = OS.IsWindows ? Properties.Resources.XA5207_SDK_Manager_Windows : Properties.Resources.XA5207_SDK_Manager_macOS; - log.LogCodedError ("XA5207", Properties.Resources.XA5207, platform, Path.Combine (expectedPath, "android.jar"), sdkManagerMenuPath); + if (!designTimeBuild) { + var expectedPath = MonoAndroidHelper.AndroidSdk.GetPlatformDirectoryFromId (platform); + var sdkManagerMenuPath = OS.IsWindows ? Properties.Resources.XA5207_SDK_Manager_Windows : Properties.Resources.XA5207_SDK_Manager_macOS; + log.LogCodedError ("XA5207", Properties.Resources.XA5207, platform, Path.Combine (expectedPath, "android.jar"), sdkManagerMenuPath); + } return null; } return Path.Combine (platformPath, "android.jar"); diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Tooling.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Tooling.targets index 6b35cf16088..73af03e487f 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Tooling.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Tooling.targets @@ -99,7 +99,9 @@ projects. + AndroidManifest="$(_AndroidManifestAbs)" + DesignTimeBuild="$(DesignTimeBuild)" + >