From 65da2f8781b5cae348a655f61365191c1b679ec1 Mon Sep 17 00:00:00 2001
From: Nikita Bykov <49442273+nikita-bykov@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:14:42 +0300
Subject: [PATCH] [macOS] Add Android NDK r23 (#4032)
---
.../macos/provision/core/android-toolsets.sh | 21 ++++++++++++-------
.../SoftwareReport.Android.psm1 | 8 ++++++-
images/macos/tests/Android.Tests.ps1 | 18 ++++++++++------
images/macos/toolsets/toolset-10.14.json | 6 ++++--
images/macos/toolsets/toolset-10.15.json | 6 ++++--
images/macos/toolsets/toolset-11.json | 6 ++++--
6 files changed, 44 insertions(+), 21 deletions(-)
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": [