diff --git a/images/win/scripts/Installers/Install-AndroidSDK.ps1 b/images/win/scripts/Installers/Install-AndroidSDK.ps1 index acb6aefd5..427614d9a 100644 --- a/images/win/scripts/Installers/Install-AndroidSDK.ps1 +++ b/images/win/scripts/Installers/Install-AndroidSDK.ps1 @@ -96,34 +96,27 @@ Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` -AndroidPackages $androidToolset.additional_tools # NDKs -$ndkLTSMajorVersion = $androidToolset.ndk.lts -$ndkLatestMajorVersion = $androidToolset.ndk.latest +$ndkMajorVersions = $androidToolset.ndk.versions +$ndkDefaultMajorVersion = $androidToolset.ndk.default +$ndkLatestMajorVersion = $ndkMajorVersions | Select-Object -Last 1 -$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) +$androidNDKs = $ndkMajorVersions | Foreach-Object { + Get-AndroidPackagesByName -AndroidPackages $androidPackages -PrefixPackageName "ndk;$_" | Sort-Object -Unique | Select-Object -Last 1 +} Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` -AndroidSDKRootPath $sdkRoot ` -AndroidPackages $androidNDKs -$ndkLTSVersion = $ndkLTSPackageName.Split(';')[1] -$ndkLatestVersion = $ndkLatestPackageName.Split(';')[1] +$ndkDefaultVersion = ($androidNDKs | Where-Object { $_ -match "ndk;$ndkDefaultMajorVersion" }).Split(';')[1] +$ndkLatestVersion = ($androidNDKs | Where-Object { $_ -match "ndk;$ndkLatestMajorVersion" }).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\$ndkLTSVersion" +New-Item -Path $ndkRoot -ItemType SymbolicLink -Value "$sdkRoot\ndk\$ndkDefaultVersion" if (Test-Path $ndkRoot) { setx ANDROID_HOME $sdkRoot /M @@ -133,7 +126,7 @@ 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 "LTS NDK $ndkLTSVersion is not installed at path $ndkRoot" + Write-Host "Default NDK $ndkDefaultVersion is not installed at path $ndkRoot" exit 1 } diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 index 0c034b6f4..37baf4625 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 @@ -75,7 +75,7 @@ function Build-AndroidTable { }, @{ "Package" = "NDK" - "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk;" + "Version" = Get-AndroidNdkVersions -PackageInfo $packageInfo }, @{ "Package" = "SDK Patch Applier v4" @@ -158,6 +158,25 @@ function Get-AndroidGoogleAPIsVersions { return ($versions -Join "
") } +function Get-AndroidNdkVersions { + param ( + [Parameter(Mandatory)] + [object] $PackageInfo + ) + + $ndkLinkTarget = (Get-Item $env:ANDROID_NDK_HOME).Target + $ndkDefaultFullVersion = Split-Path -Path $ndkLinkTarget -Leaf + + $versions = $packageInfo | Where-Object { $_ -Match "ndk;" } | ForEach-Object { + $version = (Split-TableRowByColumns $_)[1] + if ($version -eq $ndkDefaultFullVersion) { + $version += " (default)" + } + $version + } + return ($versions -Join "
") +} + function Build-AndroidEnvironmentTable { $androidVersions = Get-Item env:ANDROID_* diff --git a/images/win/scripts/Tests/Android.Tests.ps1 b/images/win/scripts/Tests/Android.Tests.ps1 index 40af8c455..6ca51c2fe 100644 --- a/images/win/scripts/Tests/Android.Tests.ps1 +++ b/images/win/scripts/Tests/Android.Tests.ps1 @@ -5,8 +5,12 @@ Describe "Android SDK" { $androidPackages = Get-AndroidPackages -AndroidSDKManagerPath (Get-AndroidSDKManagerPath) $androidInstalledPackages = Get-AndroidInstalledPackages - $ndkLTSMajorVersion = $androidToolset.ndk.lts - $ndkLatestMajorVersion = $androidToolset.ndk.latest + $ndkDefaultMajorVersion = $androidToolset.ndk.default + $ndkDefaultFullVersion = Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkDefaultMajorVersion.*" -Name | Select-Object -Last 1 + $ndkVersions = $androidToolset.ndk.versions + $ndkPackagesTestCases = $ndkVersions | ForEach-Object { + @{ ndkPackage = $_; installedPackages = $androidInstalledPackages } + } $platformTestCases = @() [int]$platformMinVersion = $androidToolset.platform_min_version @@ -91,12 +95,14 @@ Describe "Android SDK" { "$installedPackages" | Should -Match $additionalToolVersion } - It "LTS NDK is installed" -TestCases @(@{ ndkLTSVersion = $ndkLTSMajorVersion; installedPackages = $androidInstalledPackages }) { - "$installedPackages" | Should -Match "ndk;$ndkLTSVersion" + It "NDK is installed" -TestCases $ndkPackagesTestCases { + "$installedPackages" | Should -Match "ndk;$ndkPackage" } - It "Latest NDK is installed" -TestCases @(@{ ndkLatestVersion = $ndkLatestMajorVersion; installedPackages = $androidInstalledPackages }) { - "$installedPackages" | Should -Match "ndk;$ndkLatestVersion" + It "ndk-bundle points to the default NDK version" -TestCases @{ ndkDefaultVersion = $ndkDefaultFullVersion } { + $ndkLinkTarget = (Get-Item $env:ANDROID_NDK_HOME).Target + $ndkVersion = Split-Path -Path $ndkLinkTarget -Leaf + $ndkVersion | Should -BeExactly $ndkDefaultVersion } } } diff --git a/images/win/toolsets/toolset-2016.json b/images/win/toolsets/toolset-2016.json index c85169ba6..e1f58c021 100644 --- a/images/win/toolsets/toolset-2016.json +++ b/images/win/toolsets/toolset-2016.json @@ -178,8 +178,10 @@ "patcher;v4" ], "ndk": { - "lts": "21", - "latest": "22" + "default": "21", + "versions": [ + "21", "22", "23" + ] } }, "MsysPackages": { diff --git a/images/win/toolsets/toolset-2019.json b/images/win/toolsets/toolset-2019.json index de2b45b90..415391440 100644 --- a/images/win/toolsets/toolset-2019.json +++ b/images/win/toolsets/toolset-2019.json @@ -178,8 +178,10 @@ "patcher;v4" ], "ndk": { - "lts": "21", - "latest": "22" + "default": "21", + "versions": [ + "21", "22", "23" + ] } }, "MsysPackages": { diff --git a/images/win/toolsets/toolset-2022.json b/images/win/toolsets/toolset-2022.json index f5b2d1686..ecf23ab21 100644 --- a/images/win/toolsets/toolset-2022.json +++ b/images/win/toolsets/toolset-2022.json @@ -132,8 +132,10 @@ "patcher;v4" ], "ndk": { - "lts": "21", - "latest": "22" + "default": "21", + "versions": [ + "21", "22", "23" + ] } }, "MsysPackages": {