diff --git a/images/macos/provision/core/android-toolsets.sh b/images/macos/provision/core/android-toolsets.sh index a39e4474f..6b8f4ef58 100755 --- a/images/macos/provision/core/android-toolsets.sh +++ b/images/macos/provision/core/android-toolsets.sh @@ -17,6 +17,13 @@ function filter_components_by_version { done } +function get_full_ndk_version { + majorVersion=$1 + ndkVersion=$(${SDKMANAGER} --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1) + + echo "$ndkVersion" +} + components=() ANDROID_PLATFORM=($(get_toolset_value '.android.platform_min_version')) @@ -24,7 +31,8 @@ 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')) # Get the latest command line tools from https://developer.android.com/studio/index.html # Release note: https://developer.android.com/studio/releases/sdk-tools.html ANDROID_OSX_SDK_LOCATION="https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip" @@ -65,11 +73,15 @@ echo "Installing latest CMake..." echo y | $SDKMANAGER "cmake;3.6.4111459" echo "Installing latest ndk..." -echo y | $SDKMANAGER "ndk;21.3.6528147" +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" # 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/21.3.6528147 $ANDROID_HOME/ndk-bundle +ln -s $ANDROID_HOME/ndk/$ndkLtsLatest $ANDROID_HOME/ndk-bundle +ANDROID_NDK_LATEST_HOME=$ANDROID_HOME/ndk/$ndkLatest +echo "export ANDROID_NDK_LATEST_HOME=$ANDROID_NDK_LATEST_HOME" >> "${HOME}/.bashrc" availablePlatforms=($(${ANDROID_HOME}/tools/bin/sdkmanager --list | grep "platforms;android-" | cut -d"|" -f 1 | sort -u)) filter_components_by_version $ANDROID_PLATFORM "${availablePlatforms[@]}" diff --git a/images/macos/tests/Android.Tests.ps1 b/images/macos/tests/Android.Tests.ps1 index 7f8171a50..eb18461cc 100644 --- a/images/macos/tests/Android.Tests.ps1 +++ b/images/macos/tests/Android.Tests.ps1 @@ -8,6 +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 $platforms = (($androidSdkManagerPackages | Where-Object { "$_".StartsWith("platforms;") }) -replace 'platforms;', '' | Where-Object { [int]$_.Split("-")[1] -ge $platformMinVersion } | Sort-Object { [int]$_.Split("-")[1] } -Unique | @@ -23,6 +27,8 @@ Describe "Android" { "tools/proguard", "ndk-bundle", "cmake", + "ndk/$ndkLatestFullVersion", + "ndk/$ndkLtsFullVersion", $platforms, $buildTools, (Get-ToolsetValue "android.extra-list" | ForEach-Object { "extras/${_}" }), diff --git a/images/macos/toolsets/toolset-10.13.json b/images/macos/toolsets/toolset-10.13.json index a25add4f4..4d55ebffb 100644 --- a/images/macos/toolsets/toolset-10.13.json +++ b/images/macos/toolsets/toolset-10.13.json @@ -189,7 +189,11 @@ ], "addon-list": [ "addon-google_apis-google-24", "addon-google_apis-google-23", "addon-google_apis-google-22", "addon-google_apis-google-21" - ] + ], + "ndk": { + "lts": "21", + "latest": "22" + } }, "powershellModules": [ { diff --git a/images/macos/toolsets/toolset-10.14.json b/images/macos/toolsets/toolset-10.14.json index e82682e66..14776ccf4 100644 --- a/images/macos/toolsets/toolset-10.14.json +++ b/images/macos/toolsets/toolset-10.14.json @@ -212,7 +212,11 @@ ], "additional-tools": [ "cmdline-tools;latest" - ] + ], + "ndk": { + "lts": "21", + "latest": "22" + } }, "powershellModules": [ { diff --git a/images/macos/toolsets/toolset-10.15.json b/images/macos/toolsets/toolset-10.15.json index b37f5abc5..5ecc75a33 100644 --- a/images/macos/toolsets/toolset-10.15.json +++ b/images/macos/toolsets/toolset-10.15.json @@ -150,7 +150,11 @@ ], "additional-tools": [ "cmdline-tools;latest" - ] + ], + "ndk": { + "lts": "21", + "latest": "22" + } }, "powershellModules": [ { diff --git a/images/macos/toolsets/toolset-11.0.json b/images/macos/toolsets/toolset-11.0.json index 6aa690d21..18e8509da 100644 --- a/images/macos/toolsets/toolset-11.0.json +++ b/images/macos/toolsets/toolset-11.0.json @@ -83,7 +83,11 @@ "addon-list": [], "additional-tools": [ "cmdline-tools;latest" - ] + ], + "ndk": { + "lts": "21", + "latest": "22" + } }, "powershellModules": [ {