From bfec77c3983f10cd7a7b8bfec7808991d5ccc25c Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Wed, 10 Nov 2021 15:39:16 +0000 Subject: [PATCH 1/3] Update MaximumCompatibleNDKMajorVersion to be 22 Fixes https://work.azdo.io/1433453 Users are reporting the following error when trying to use NDK 22 ``` MSB4044: The "MakeBundleNativeCodeExternal" task was not given a value for the required parameter "AndroidNdkDirectory". ``` Earlier in the logs we see this message ``` Skipping NDK in 'C:\ProgramData\Android\android-sdk dk\22.1.7171670': version 22.1.7171670 is out of the accepted range (major version must be between 16 and 21 ``` We need to update the `MaximumCompatibleNDKMajorVersion` to match our new upper limit. --- .../Sdks/AndroidSdkBase.cs | 2 +- .../AndroidSdkInfoTests.cs | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs index c76fe9b..6c4c2ee 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs @@ -11,7 +11,7 @@ abstract class AndroidSdkBase { // When this changes, update the test: Xamarin.Android.Tools.Tests.AndroidSdkInfoTests.Ndk_MultipleNdkVersionsInSdk const int MinimumCompatibleNDKMajorVersion = 16; - const int MaximumCompatibleNDKMajorVersion = 21; + const int MaximumCompatibleNDKMajorVersion = 22; static readonly char[] SourcePropertiesKeyValueSplit = new char[] { '=' }; diff --git a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs index d195092..889a65f 100644 --- a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs +++ b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs @@ -71,7 +71,7 @@ public void Ndk_MultipleNdkVersionsInSdk () { // Must match like-named constants in AndroidSdkBase const int MinimumCompatibleNDKMajorVersion = 16; - const int MaximumCompatibleNDKMajorVersion = 21; + const int MaximumCompatibleNDKMajorVersion = 22; CreateSdks(out string root, out string jdk, out string ndk, out string sdk); @@ -91,6 +91,7 @@ public void Ndk_MultipleNdkVersionsInSdk () "21.2.6472646", "21.3.6528147", "22.0.7026061", + "22.1.7171670", }; string expectedVersion = "21.3.6528147"; string expectedNdkPath = Path.Combine (sdk, "ndk", expectedVersion); @@ -137,7 +138,7 @@ public void Ndk_PathInSdk() File.WriteAllText(Path.Combine(ndkPath, $"ndk-stack{extension}"), ""); var info = new AndroidSdkInfo(logger, androidSdkPath: sdk, androidNdkPath: null, javaSdkPath: jdk); - + Assert.AreEqual(ndkPath, info.AndroidNdkPath, "AndroidNdkPath not found inside sdk!"); } finally @@ -308,7 +309,7 @@ public void Sdk_GetCommandLineToolsPaths () var latestToolsVersion = "latest"; var toolsVersion = "2.1"; var higherToolsVersion = "11.2"; - + void recreateCmdlineToolsDirectory () { Directory.Delete (cmdlineTools, recursive: true); Directory.CreateDirectory (cmdlineTools); @@ -324,7 +325,7 @@ void recreateCmdlineToolsDirectory () { Assert.AreEqual (toolsPaths.Count (), 1, "Incorrect number of elements"); Assert.AreEqual (toolsPaths.First (), Path.Combine (sdk, "cmdline-tools", toolsVersion), "Incorrect command line tools path"); - + // Test that cmdline-tools is preferred over tools recreateCmdlineToolsDirectory(); CreateFauxAndroidSdkToolsDirectory (sdk, createToolsDir: true, toolsVersion: latestToolsVersion, createOldToolsDir: true); @@ -347,7 +348,7 @@ void recreateCmdlineToolsDirectory () { && toolsPathsList [1].Equals (Path.Combine (sdk, "cmdline-tools", higherToolsVersion), StringComparison.Ordinal) && toolsPathsList [2].Equals (Path.Combine (sdk, "cmdline-tools", toolsVersion), StringComparison.Ordinal) && toolsPathsList [3].Equals (Path.Combine (sdk, "tools"), StringComparison.Ordinal); - + Assert.IsTrue (isOrderCorrect, "Tools order is not descending"); } finally { Directory.Delete (root, recursive: true); @@ -386,10 +387,10 @@ static void CreateFauxAndroidSdkToolsDirectory (string androidSdkDirectory, bool if (createToolsDir) { string androidSdkToolsPath = Path.Combine (androidSdkDirectory, "cmdline-tools", toolsVersion ?? "1.0"); string androidSdkToolsBinPath = Path.Combine (androidSdkToolsPath, "bin"); - + Directory.CreateDirectory (androidSdkToolsPath); Directory.CreateDirectory (androidSdkToolsBinPath); - + File.WriteAllText (Path.Combine (androidSdkToolsBinPath, IsWindows ? "lint.bat" : "lint"), ""); } @@ -399,7 +400,7 @@ static void CreateFauxAndroidSdkToolsDirectory (string androidSdkDirectory, bool Directory.CreateDirectory (androidSdkToolsPath); Directory.CreateDirectory (androidSdkToolsBinPath); - + File.WriteAllText (Path.Combine (androidSdkToolsBinPath, IsWindows ? "lint.bat" : "lint"), ""); } @@ -414,7 +415,7 @@ static void CreateFauxAndroidSdkDirectory ( ApiInfo[] apiLevels = null) { CreateFauxAndroidSdkToolsDirectory (androidSdkDirectory, createToolsDir, toolsVersion, createOldToolsDir); - + var androidSdkPlatformToolsPath = Path.Combine (androidSdkDirectory, "platform-tools"); var androidSdkPlatformsPath = Path.Combine (androidSdkDirectory, "platforms"); var androidSdkBuildToolsPath = Path.Combine (androidSdkDirectory, "build-tools", buildToolsVersion); From 15ed26b506b150e31da7594eab5a91b9543cf9bf Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Wed, 10 Nov 2021 15:56:52 +0000 Subject: [PATCH 2/3] Update to 23 --- src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs | 2 +- .../AndroidSdkInfoTests.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs index 6c4c2ee..2f03b6e 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs @@ -11,7 +11,7 @@ abstract class AndroidSdkBase { // When this changes, update the test: Xamarin.Android.Tools.Tests.AndroidSdkInfoTests.Ndk_MultipleNdkVersionsInSdk const int MinimumCompatibleNDKMajorVersion = 16; - const int MaximumCompatibleNDKMajorVersion = 22; + const int MaximumCompatibleNDKMajorVersion = 23; static readonly char[] SourcePropertiesKeyValueSplit = new char[] { '=' }; diff --git a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs index 889a65f..9b9c3e0 100644 --- a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs +++ b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs @@ -71,7 +71,7 @@ public void Ndk_MultipleNdkVersionsInSdk () { // Must match like-named constants in AndroidSdkBase const int MinimumCompatibleNDKMajorVersion = 16; - const int MaximumCompatibleNDKMajorVersion = 22; + const int MaximumCompatibleNDKMajorVersion = 23; CreateSdks(out string root, out string jdk, out string ndk, out string sdk); @@ -92,6 +92,7 @@ public void Ndk_MultipleNdkVersionsInSdk () "21.3.6528147", "22.0.7026061", "22.1.7171670", + "23.1.7779620", }; string expectedVersion = "21.3.6528147"; string expectedNdkPath = Path.Combine (sdk, "ndk", expectedVersion); From f1904c658bb93e9fb279d8ae7947be22e271bdb0 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Wed, 10 Nov 2021 16:04:29 +0000 Subject: [PATCH 3/3] Update to 23 --- .../AndroidSdkInfoTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs index 9b9c3e0..a3a3ede 100644 --- a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs +++ b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidSdkInfoTests.cs @@ -94,7 +94,7 @@ public void Ndk_MultipleNdkVersionsInSdk () "22.1.7171670", "23.1.7779620", }; - string expectedVersion = "21.3.6528147"; + string expectedVersion = "23.1.7779620"; string expectedNdkPath = Path.Combine (sdk, "ndk", expectedVersion); try {