[Windows] Rework Android NDKs installation (#2555)

* Rework Android NDKs

* Minor fix

* Fix variable name

* Minor fixes

* Reword Android env vars table

* Remove Android env vars table from doc file

* Rework to use only major ndk versions in toolset

* Fix ndk paths

* Fix win2016 toolset

* Refactor

* Minor fix

* Fix ndk tests
This commit is contained in:
Vladimir Safonkin
2021-02-01 12:56:34 +03:00
committed by GitHub
parent 212431cc79
commit fa88926270
5 changed files with 57 additions and 9 deletions

View File

@@ -75,12 +75,36 @@ Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager `
-AndroidSDKRootPath $sdkRoot ` -AndroidSDKRootPath $sdkRoot `
-AndroidPackages $androidToolset.additional_tools -AndroidPackages $androidToolset.additional_tools
# NDKs
$ndkLTSMajorVersion = $androidToolset.ndk.lts
$ndkLatestMajorVersion = $androidToolset.ndk.latest
$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)
Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager `
-AndroidSDKRootPath $sdkRoot `
-AndroidPackages $androidNDKs
$ndkLTSVersion = $ndkLTSPackageName.Split(';')[1]
$ndkLatestVersion = $ndkLatestPackageName.Split(';')[1]
# Android NDK root path. # Android NDK root path.
$ndkRoot = "$sdkRoot\ndk-bundle" $ndkRoot = "$sdkRoot\ndk-bundle"
# This changes were added due to incompatibility with android ndk-bundle (ndk;22.0.7026061). # 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 virtual-environments: https://github.com/actions/virtual-environments/issues/2481
# Link issue xamarin-android: https://github.com/xamarin/xamarin-android/issues/5526 # Link issue xamarin-android: https://github.com/xamarin/xamarin-android/issues/5526
New-Item -Path $ndkRoot -ItemType SymbolicLink -Value "$sdkRoot\ndk\21.3.6528147" New-Item -Path $ndkRoot -ItemType SymbolicLink -Value "$sdkRoot\ndk\$ndkLTSVersion"
if (Test-Path $ndkRoot) { if (Test-Path $ndkRoot) {
setx ANDROID_HOME $sdkRoot /M setx ANDROID_HOME $sdkRoot /M
@@ -90,9 +114,16 @@ if (Test-Path $ndkRoot) {
setx ANDROID_NDK_ROOT $ndkRoot /M 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" (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 { } else {
Write-Host "NDK is not installed at path $ndk_root" Write-Host "LTS NDK $ndkLTSVersion is not installed at path $ndkRoot"
exit 1
}
$ndkLatestPath = "$sdkRoot\ndk\$ndkLatestVersion"
if (Test-Path $ndkLatestPath) {
setx ANDROID_NDK_LATEST_HOME $ndkLatestPath /M
} else {
Write-Host "Latest NDK $ndkLatestVersion is not installed at path $ndkLatestPath"
exit 1 exit 1
} }
Invoke-PesterTests -TestFile "Android" Invoke-PesterTests -TestFile "Android"

View File

@@ -80,7 +80,7 @@ function Build-AndroidTable {
}, },
@{ @{
"Package" = "NDK" "Package" = "NDK"
"Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk-bundle" "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk;"
}, },
@{ @{
"Package" = "SDK Patch Applier v4" "Package" = "SDK Patch Applier v4"

View File

@@ -5,6 +5,9 @@ Describe "Android SDK" {
$androidPackages = Get-AndroidPackages -AndroidSDKManagerPath (Get-AndroidSDKManagerPath) $androidPackages = Get-AndroidPackages -AndroidSDKManagerPath (Get-AndroidSDKManagerPath)
$androidInstalledPackages = Get-AndroidInstalledPackages $androidInstalledPackages = Get-AndroidInstalledPackages
$ndkLTSMajorVersion = $androidToolset.ndk.lts
$ndkLatestMajorVersion = $androidToolset.ndk.latest
$platformTestCases = @() $platformTestCases = @()
[int]$platformMinVersion = $androidToolset.platform_min_version [int]$platformMinVersion = $androidToolset.platform_min_version
$platformList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` $platformList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages `
@@ -66,4 +69,12 @@ Describe "Android SDK" {
It "Additional tool <additionalToolVersion> is installed" -TestCases $additionalToolsTestCases { It "Additional tool <additionalToolVersion> is installed" -TestCases $additionalToolsTestCases {
"$installedPackages" | Should -Match $additionalToolVersion "$installedPackages" | Should -Match $additionalToolVersion
} }
It "LTS NDK is installed" -TestCases @(@{ ndkLTSVersion = $ndkLTSMajorVersion; installedPackages = $androidInstalledPackages }) {
"$installedPackages" | Should -Match "ndk;$ndkLTSVersion"
}
It "Latest NDK is installed" -TestCases @(@{ ndkLatestVersion = $ndkLatestMajorVersion; installedPackages = $androidInstalledPackages }) {
"$installedPackages" | Should -Match "ndk;$ndkLatestVersion"
}
} }

View File

@@ -163,9 +163,12 @@
"cmake;3.6.4111459", "cmake;3.6.4111459",
"cmake;3.10.2.4988404", "cmake;3.10.2.4988404",
"patcher;v4", "patcher;v4",
"ndk;21.3.6528147",
"cmdline-tools;latest" "cmdline-tools;latest"
] ],
"ndk": {
"lts": "21",
"latest": "22"
}
}, },
"visualStudio": { "visualStudio": {
"version" : "2017", "version" : "2017",

View File

@@ -163,9 +163,12 @@
"cmake;3.6.4111459", "cmake;3.6.4111459",
"cmake;3.10.2.4988404", "cmake;3.10.2.4988404",
"patcher;v4", "patcher;v4",
"ndk;21.3.6528147",
"cmdline-tools;latest" "cmdline-tools;latest"
] ],
"ndk": {
"lts": "21",
"latest": "22"
}
}, },
"visualStudio": { "visualStudio": {
"version" : "2019", "version" : "2019",