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": {