From fa8892627067cb28cbcf24237ffaba530377e00a Mon Sep 17 00:00:00 2001 From: Vladimir Safonkin Date: Mon, 1 Feb 2021 12:56:34 +0300 Subject: [PATCH] [Windows] Rework Android NDKs installation (#2555) * Rework Android NDKs * Minor fix * Fix variable name * Minor fixes * Reword Android env vars table * Remove Android env vars table from doc file * Rework to use only major ndk versions in toolset * Fix ndk paths * Fix win2016 toolset * Refactor * Minor fix * Fix ndk tests --- .../scripts/Installers/Update-AndroidSDK.ps1 | 37 +++++++++++++++++-- .../SoftwareReport.Android.psm1 | 2 +- images/win/scripts/Tests/Android.Tests.ps1 | 13 ++++++- images/win/toolsets/toolset-2016.json | 7 +++- images/win/toolsets/toolset-2019.json | 7 +++- 5 files changed, 57 insertions(+), 9 deletions(-) diff --git a/images/win/scripts/Installers/Update-AndroidSDK.ps1 b/images/win/scripts/Installers/Update-AndroidSDK.ps1 index 0fed426f9..9d9d2f5f7 100644 --- a/images/win/scripts/Installers/Update-AndroidSDK.ps1 +++ b/images/win/scripts/Installers/Update-AndroidSDK.ps1 @@ -75,12 +75,36 @@ Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` -AndroidSDKRootPath $sdkRoot ` -AndroidPackages $androidToolset.additional_tools +# NDKs +$ndkLTSMajorVersion = $androidToolset.ndk.lts +$ndkLatestMajorVersion = $androidToolset.ndk.latest + +$ndkLTSPackageName = Get-AndroidPackagesByName -AndroidPackages $androidPackages ` + -PrefixPackageName "ndk;$ndkLTSMajorVersion" ` + | Sort-Object -Unique ` + | Select-Object -Last 1 + +$ndkLatestPackageName = Get-AndroidPackagesByName -AndroidPackages $androidPackages ` + -PrefixPackageName "ndk;$ndkLatestMajorVersion" ` + | Sort-Object -Unique ` + | Select-Object -Last 1 + +$androidNDKs = @($ndkLTSPackageName, $ndkLatestPackageName) + + +Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` + -AndroidSDKRootPath $sdkRoot ` + -AndroidPackages $androidNDKs + +$ndkLTSVersion = $ndkLTSPackageName.Split(';')[1] +$ndkLatestVersion = $ndkLatestPackageName.Split(';')[1] + # Android NDK root path. $ndkRoot = "$sdkRoot\ndk-bundle" # This changes were added due to incompatibility with android ndk-bundle (ndk;22.0.7026061). # Link issue virtual-environments: https://github.com/actions/virtual-environments/issues/2481 # Link issue xamarin-android: https://github.com/xamarin/xamarin-android/issues/5526 -New-Item -Path $ndkRoot -ItemType SymbolicLink -Value "$sdkRoot\ndk\21.3.6528147" +New-Item -Path $ndkRoot -ItemType SymbolicLink -Value "$sdkRoot\ndk\$ndkLTSVersion" if (Test-Path $ndkRoot) { setx ANDROID_HOME $sdkRoot /M @@ -90,9 +114,16 @@ if (Test-Path $ndkRoot) { setx ANDROID_NDK_ROOT $ndkRoot /M (Get-Content -Encoding UTF8 "${ndkRoot}\ndk-build.cmd").replace('%~dp0\build\ndk-build.cmd','"%~dp0\build\ndk-build.cmd"')|Set-Content -Encoding UTF8 "${ndkRoot}\ndk-build.cmd" } else { - Write-Host "NDK is not installed at path $ndk_root" + Write-Host "LTS NDK $ndkLTSVersion is not installed at path $ndkRoot" + exit 1 +} + +$ndkLatestPath = "$sdkRoot\ndk\$ndkLatestVersion" +if (Test-Path $ndkLatestPath) { + setx ANDROID_NDK_LATEST_HOME $ndkLatestPath /M +} else { + Write-Host "Latest NDK $ndkLatestVersion is not installed at path $ndkLatestPath" exit 1 } Invoke-PesterTests -TestFile "Android" - diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 index 1b8fdd8b4..14327ecf6 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 @@ -80,7 +80,7 @@ function Build-AndroidTable { }, @{ "Package" = "NDK" - "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk-bundle" + "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk;" }, @{ "Package" = "SDK Patch Applier v4" diff --git a/images/win/scripts/Tests/Android.Tests.ps1 b/images/win/scripts/Tests/Android.Tests.ps1 index d6c81db4a..02f0f4b53 100644 --- a/images/win/scripts/Tests/Android.Tests.ps1 +++ b/images/win/scripts/Tests/Android.Tests.ps1 @@ -5,6 +5,9 @@ Describe "Android SDK" { $androidPackages = Get-AndroidPackages -AndroidSDKManagerPath (Get-AndroidSDKManagerPath) $androidInstalledPackages = Get-AndroidInstalledPackages + $ndkLTSMajorVersion = $androidToolset.ndk.lts + $ndkLatestMajorVersion = $androidToolset.ndk.latest + $platformTestCases = @() [int]$platformMinVersion = $androidToolset.platform_min_version $platformList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` @@ -66,4 +69,12 @@ Describe "Android SDK" { It "Additional tool is installed" -TestCases $additionalToolsTestCases { "$installedPackages" | Should -Match $additionalToolVersion } -} \ No newline at end of file + + It "LTS NDK is installed" -TestCases @(@{ ndkLTSVersion = $ndkLTSMajorVersion; installedPackages = $androidInstalledPackages }) { + "$installedPackages" | Should -Match "ndk;$ndkLTSVersion" + } + + It "Latest NDK is installed" -TestCases @(@{ ndkLatestVersion = $ndkLatestMajorVersion; installedPackages = $androidInstalledPackages }) { + "$installedPackages" | Should -Match "ndk;$ndkLatestVersion" + } +} diff --git a/images/win/toolsets/toolset-2016.json b/images/win/toolsets/toolset-2016.json index 910687a38..77bcd6f1c 100644 --- a/images/win/toolsets/toolset-2016.json +++ b/images/win/toolsets/toolset-2016.json @@ -163,9 +163,12 @@ "cmake;3.6.4111459", "cmake;3.10.2.4988404", "patcher;v4", - "ndk;21.3.6528147", "cmdline-tools;latest" - ] + ], + "ndk": { + "lts": "21", + "latest": "22" + } }, "visualStudio": { "version" : "2017", diff --git a/images/win/toolsets/toolset-2019.json b/images/win/toolsets/toolset-2019.json index 4214db5d3..0b3435a08 100644 --- a/images/win/toolsets/toolset-2019.json +++ b/images/win/toolsets/toolset-2019.json @@ -163,9 +163,12 @@ "cmake;3.6.4111459", "cmake;3.10.2.4988404", "patcher;v4", - "ndk;21.3.6528147", "cmdline-tools;latest" - ] + ], + "ndk": { + "lts": "21", + "latest": "22" + } }, "visualStudio": { "version" : "2019",