diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.Tooling.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.Tooling.targets index b34844b4b95..0642a552b6e 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.Tooling.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.Tooling.targets @@ -37,6 +37,7 @@ called for "legacy" projects in Xamarin.Android.Legacy.targets. AndroidUseAapt2="$(AndroidUseAapt2)" AotAssemblies="$(AotAssemblies)" Aapt2ToolPath="$(Aapt2ToolPath)" + CommandLineToolsVersion="$(AndroidCommandLineToolsVersion)" SequencePointsMode="$(_AndroidSequencePointsMode)" ProjectFilePath="$(MSBuildProjectFullPath)" LintToolPath="$(LintToolPath)" diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.props b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.props index 816d775a459..f520b43d877 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.props +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.props @@ -4,6 +4,7 @@ true + 1.0 1.8.0 1.8.0 false diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs index a19c4e820ab..e62ce998190 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs @@ -13,6 +13,8 @@ public class CalculateProjectDependencies : AndroidTask const int DefaultMinSDKVersion = 11; + public string CommandLineToolsVersion { get; set; } + [Required] public string TargetFrameworkVersion { get; set; } @@ -58,6 +60,9 @@ public override bool RunTask () if (!string.IsNullOrEmpty (PlatformToolsVersion)) { dependencies.Add (CreateAndroidDependency ("platform-tools", PlatformToolsVersion)); } + if (!string.IsNullOrEmpty (CommandLineToolsVersion)) { + dependencies.Add (CreateAndroidDependency ($"cmdline-tools/{CommandLineToolsVersion}", CommandLineToolsVersion)); + } if (!string.IsNullOrEmpty (ToolsVersion)) { dependencies.Add (CreateAndroidDependency ("tools", ToolsVersion)); } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/Lint.cs b/src/Xamarin.Android.Build.Tasks/Tasks/Lint.cs index fda5a3ea03b..d1ee15cbfcc 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/Lint.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/Lint.cs @@ -195,17 +195,19 @@ public override bool RunTask () return false; } + bool fromCmdlineTools = ToolPath.IndexOf ("cmdline-tools", StringComparison.OrdinalIgnoreCase) >= 0; + Version lintToolVersion = GetLintVersion (GenerateFullPathToTool ()); Log.LogDebugMessage (" LintVersion: {0}", lintToolVersion); foreach (var issue in DisabledIssuesByVersion) { - if (lintToolVersion >= issue.Value) { + if (fromCmdlineTools || lintToolVersion >= issue.Value) { if (string.IsNullOrEmpty (DisabledIssues) || !DisabledIssues.Contains (issue.Key)) DisabledIssues = issue.Key + (!string.IsNullOrEmpty (DisabledIssues) ? "," + DisabledIssues : ""); } } foreach (var issue in DisabledIssuesByVersion) { - if (lintToolVersion < issue.Value) { + if (!fromCmdlineTools || (lintToolVersion < issue.Value)) { DisabledIssues = CleanIssues (issue.Key, lintToolVersion, DisabledIssues, nameof (DisabledIssues)); EnabledIssues = CleanIssues (issue.Key, lintToolVersion, EnabledIssues, nameof (EnabledIssues) ); } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs index 4f9731f251f..063c8bacba1 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs @@ -23,6 +23,8 @@ public class ResolveAndroidTooling : AndroidTask public string AndroidSdkBuildToolsVersion { get; set; } + public string CommandLineToolsVersion { get; set; } + public string ProjectFilePath { get; set; } public string SequencePointsMode { get; set; } @@ -80,8 +82,13 @@ public override bool RunTask () string toolsZipAlignPath = Path.Combine (AndroidSdkPath, "tools", ZipAlign); bool findZipAlign = (string.IsNullOrEmpty (ZipAlignPath) || !Directory.Exists (ZipAlignPath)) && !File.Exists (toolsZipAlignPath); + var commandLineToolsDir = MonoAndroidHelper.AndroidSdk.GetCommandLineToolsPaths (CommandLineToolsVersion) + .FirstOrDefault () ?? ""; + var lintPaths = new string [] { LintToolPath ?? string.Empty, + commandLineToolsDir, + Path.Combine (commandLineToolsDir, "bin"), Path.Combine (AndroidSdkPath, "tools"), Path.Combine (AndroidSdkPath, "tools", "bin"), }; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs index 96d73e22fc7..9bb97632aa6 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs @@ -43,6 +43,11 @@ public class ResolveSdks : AndroidTask public string [] ReferenceAssemblyPaths { get; set; } + public string CommandLineToolsVersion { get; set; } + + [Output] + public string CommandLineToolsPath { get; set; } + [Output] public string AndroidNdkPath { get; set; } @@ -94,6 +99,10 @@ public override bool RunTask () AndroidSdkPath = MonoAndroidHelper.AndroidSdk.AndroidSdkPath; JavaSdkPath = MonoAndroidHelper.AndroidSdk.JavaSdkPath; + CommandLineToolsPath = MonoAndroidHelper.AndroidSdk.GetCommandLineToolsPaths (CommandLineToolsVersion) + .FirstOrDefault () ?? + Path.Combine (AndroidSdkPath, "tools"); + if (string.IsNullOrEmpty (AndroidSdkPath)) { Log.LogCodedError ("XA5300", Properties.Resources.XA5300_Android_SDK); return false; diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in index 6e5ebd1ed88..aea2b1056b0 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in @@ -9,6 +9,7 @@ true 1.8.0 1.6.0 + 1.0 {abi}{versionCode:D5} UpdateGeneratedFiles True diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 6674db836dc..c230c44e5ae 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -657,10 +657,6 @@ because xbuild doesn't support framework reference assemblies. - - - - @@ -2849,6 +2845,7 @@ because xbuild doesn't support framework reference assemblies. +