diff --git a/images/macos/provision/core/android-toolsets.sh b/images/macos/provision/core/android-toolsets.sh index 6efe09c7..7bcb2fcb 100755 --- a/images/macos/provision/core/android-toolsets.sh +++ b/images/macos/provision/core/android-toolsets.sh @@ -26,13 +26,14 @@ function get_full_ndk_version { components=() -ANDROID_PLATFORM=($(get_toolset_value '.android.platform_min_version')) -ANDROID_BUILD_TOOL=($(get_toolset_value '.android.build_tools_min_version')) +ANDROID_PLATFORM=$(get_toolset_value '.android.platform_min_version') +ANDROID_BUILD_TOOL=$(get_toolset_value '.android.build_tools_min_version') ANDROID_EXTRA_LIST=($(get_toolset_value '.android."extra-list"[]')) ANDROID_ADDON_LIST=($(get_toolset_value '.android."addon-list"[]')) ANDROID_ADDITIONAL_TOOLS=($(get_toolset_value '.android."additional-tools"[]')) -ANDROID_NDK_MAJOR_LTS=($(get_toolset_value '.android.ndk.lts')) -ANDROID_NDK_MAJOR_LATEST=($(get_toolset_value '.android.ndk.latest')) +ANDROID_NDK_MAJOR_VERSIONS=($(get_toolset_value '.android.ndk."versions"[]')) +ANDROID_NDK_MAJOR_DEFAULT=$(get_toolset_value '.android.ndk.default') +ANDROID_NDK_MAJOR_LATEST=$(get_toolset_value '.android.ndk."versions"[-1]') # Get the latest command line tools from https://developer.android.com/studio#cmdline-tools ANDROID_OSX_SDK_URL="https://dl.google.com/android/repository/commandlinetools-mac-7302050_latest.zip" ANDROID_HOME=$HOME/Library/Android/sdk @@ -59,13 +60,17 @@ echo "Installing latest tools & platform tools..." echo y | $SDKMANAGER "tools" "platform-tools" echo "Installing latest ndk..." -ndkLtsLatest=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LTS) -ndkLatest=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LATEST) -echo y | $SDKMANAGER "ndk;$ndkLtsLatest" "ndk;$ndkLatest" +for ndk_version in "${ANDROID_NDK_MAJOR_VERSIONS[@]}" +do + ndk_full_version=$(get_full_ndk_version $ndk_version) + echo y | $SDKMANAGER "ndk;$ndk_full_version" +done # 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 -ln -s $ANDROID_HOME/ndk/$ndkLtsLatest $ANDROID_HOME/ndk-bundle +ndkDefault=$(get_full_ndk_version $ANDROID_NDK_MAJOR_DEFAULT) +ndkLatest=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LATEST) +ln -s $ANDROID_HOME/ndk/$ndkDefault $ANDROID_HOME/ndk-bundle ANDROID_NDK_LATEST_HOME=$ANDROID_HOME/ndk/$ndkLatest echo "export ANDROID_NDK_LATEST_HOME=$ANDROID_NDK_LATEST_HOME" >> "${HOME}/.bashrc" diff --git a/images/macos/software-report/SoftwareReport.Android.psm1 b/images/macos/software-report/SoftwareReport.Android.psm1 index 7617e733..ab7a2aa2 100644 --- a/images/macos/software-report/SoftwareReport.Android.psm1 +++ b/images/macos/software-report/SoftwareReport.Android.psm1 @@ -1,4 +1,5 @@ Import-Module "$PSScriptRoot/../helpers/SoftwareReport.Helpers.psm1" -DisableNameChecking +Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" function Split-TableRowByColumns { param( @@ -184,8 +185,13 @@ function Get-AndroidNDKVersions { $ndkFolderPath = Join-Path (Get-AndroidSDKRoot) "ndk" $versions += Get-ChildItem -Path $ndkFolderPath -Name + $ndkDefaultVersion = Get-ToolsetValue "android.ndk.default" + $ndkDefaultFullVersion = Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkDefaultVersion.*" -Name | Select-Object -Last 1 - return ($versions -Join "
") + return ($versions | ForEach-Object { + $defaultPostfix = ( $_ -eq $ndkDefaultFullVersion ) ? " (default)" : "" + $_ + $defaultPostfix + } | Join-String -Separator "
") } function Get-IntelHaxmVersion { diff --git a/images/macos/tests/Android.Tests.ps1 b/images/macos/tests/Android.Tests.ps1 index 303a271f..2550d549 100644 --- a/images/macos/tests/Android.Tests.ps1 +++ b/images/macos/tests/Android.Tests.ps1 @@ -8,10 +8,10 @@ Describe "Android" { $androidSdkManagerPackages = Get-AndroidPackages [int]$platformMinVersion = Get-ToolsetValue "android.platform_min_version" [version]$buildToolsMinVersion = Get-ToolsetValue "android.build_tools_min_version" - [string]$ndkLatestVersion = Get-ToolsetValue "android.ndk.latest" - [string]$ndkLtsVersion = Get-ToolsetValue "android.ndk.lts" - $ndkLatestFullVersion = (Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkLatestVersion.*" | Select-Object -Last 1).Name - $ndkLtsFullVersion = (Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkLtsVersion.*" | Select-Object -Last 1).Name + [array]$ndkVersions = Get-ToolsetValue "android.ndk.versions" + [string]$ndkDefaultVersion = Get-ToolsetValue "android.ndk.default" + $ndkFullVersions = $ndkVersions | ForEach-Object { Get-ChildItem "$env:ANDROID_HOME/ndk/${_}.*" -Name | Select-Object -Last 1} | ForEach-Object { "ndk/${_}" } + $ndkDefaultFullVersion = Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkDefaultVersion.*" -Name | Select-Object -Last 1 $platformVersionsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("platforms;") }) -replace 'platforms;android-', '' $platformNumericList = $platformVersionsList | Where-Object { $_ -match "\d+" } | Where-Object { [int]$_ -ge $platformMinVersion } | Sort-Object -Unique @@ -28,10 +28,9 @@ Describe "Android" { "tools/proguard", "ndk-bundle", "cmake", - "ndk/$ndkLatestFullVersion", - "ndk/$ndkLtsFullVersion", $platforms, $buildTools, + $ndkFullVersions, (Get-ToolsetValue "android.extra-list" | ForEach-Object { "extras/${_}" }), (Get-ToolsetValue "android.addon-list" | ForEach-Object { "add-ons/${_}" }), (Get-ToolsetValue "android.additional-tools") @@ -76,11 +75,18 @@ Describe "Android" { Context "Packages" { $testCases = $androidPackages | ForEach-Object { @{ PackageName = $_ } } + $defaultNdkTestCase = @{ NdkDefaultFullVersion = $ndkDefaultFullVersion } It "" -TestCases $testCases { param ([string] $PackageName) Validate-AndroidPackage $PackageName } + + It "ndk-bundle points to the default NDK version" -TestCases $defaultNdkTestCase { + $ndkLinkTarget = (Get-Item $env:ANDROID_NDK_HOME).Target + $ndkVersion = Split-Path -Path $ndkLinkTarget -Leaf + $ndkVersion | Should -BeExactly $NdkDefaultFullVersion + } } It "HAXM is installed" -Skip:($os.IsBigSur) { diff --git a/images/macos/toolsets/toolset-10.14.json b/images/macos/toolsets/toolset-10.14.json index 3f1637c8..a21440e7 100644 --- a/images/macos/toolsets/toolset-10.14.json +++ b/images/macos/toolsets/toolset-10.14.json @@ -215,8 +215,10 @@ "cmake;3.18.1" ], "ndk": { - "lts": "21", - "latest": "22" + "default": "21", + "versions": [ + "21", "22", "23" + ] } }, "powershellModules": [ diff --git a/images/macos/toolsets/toolset-10.15.json b/images/macos/toolsets/toolset-10.15.json index 832cafa7..9e980d34 100644 --- a/images/macos/toolsets/toolset-10.15.json +++ b/images/macos/toolsets/toolset-10.15.json @@ -167,8 +167,10 @@ "cmake;3.18.1" ], "ndk": { - "lts": "21", - "latest": "22" + "default": "21", + "versions": [ + "21", "22", "23" + ] } }, "powershellModules": [ diff --git a/images/macos/toolsets/toolset-11.json b/images/macos/toolsets/toolset-11.json index f70c9040..0c24f649 100644 --- a/images/macos/toolsets/toolset-11.json +++ b/images/macos/toolsets/toolset-11.json @@ -115,8 +115,10 @@ "cmake;3.18.1" ], "ndk": { - "lts": "21", - "latest": "22" + "default": "21", + "versions": [ + "21", "22", "23" + ] } }, "powershellModules": [