mirror of
https://github.com/actions/runner-images.git
synced 2025-12-12 12:06:59 +00:00
[Ubuntu] Switch android tools installation to use sdkmanager from command-line tools (#3650)
* Switch android tools installation to cmdline-tools * Replace deprecated sdkmanger from sdk-tools to the one from cmdline tools * Remove patcherv4 from toolsets as it's included in m2repository extras * Add tests to make sure both sdkmanagers exist * Return cmdline-tools to software readme * Get-AndroidInstalledPackages function now use list_installed param * Create a function to get sdkmanager version = cmdline tools version * Get rid of hardcoded path to ANDROID_HOME * Add reloadEtcEnvironment call to installation script * Use env variable ANDROID_HOME in tests * Modify software report to output any version * Change regex pattern to output the group * Currently the function returns 4. instead of 4.0, this change fixes it
This commit is contained in:
@@ -11,21 +11,13 @@ function Get-AndroidSDKRoot {
|
|||||||
|
|
||||||
function Get-AndroidSDKManagerPath {
|
function Get-AndroidSDKManagerPath {
|
||||||
$androidSDKDir = Get-AndroidSDKRoot
|
$androidSDKDir = Get-AndroidSDKRoot
|
||||||
return Join-Path $androidSDKDir "tools" "bin" "sdkmanager"
|
return Join-Path $androidSDKDir "cmdline-tools" "latest" "bin" "sdkmanager"
|
||||||
}
|
}
|
||||||
|
|
||||||
function Get-AndroidInstalledPackages {
|
function Get-AndroidInstalledPackages {
|
||||||
$androidSDKManagerPath = Get-AndroidSDKManagerPath
|
$androidSDKManagerPath = Get-AndroidSDKManagerPath
|
||||||
$androidSDKManagerList = Invoke-Expression "$androidSDKManagerPath --list --include_obsolete"
|
$androidSDKManagerList = Invoke-Expression "$androidSDKManagerPath --list_installed --include_obsolete"
|
||||||
$androidInstalledPackages = @()
|
return $androidSDKManagerList
|
||||||
foreach($packageInfo in $androidSDKManagerList) {
|
|
||||||
if($packageInfo -Match "Available Packages:") {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
$androidInstalledPackages += $packageInfo
|
|
||||||
}
|
|
||||||
return $androidInstalledPackages
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -34,7 +26,7 @@ function Build-AndroidTable {
|
|||||||
return @(
|
return @(
|
||||||
@{
|
@{
|
||||||
"Package" = "Android Command Line Tools"
|
"Package" = "Android Command Line Tools"
|
||||||
"Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android SDK Command-line Tools"
|
"Version" = Get-AndroidCommandLineToolsVersion
|
||||||
},
|
},
|
||||||
@{
|
@{
|
||||||
"Package" = "Android Emulator"
|
"Package" = "Android Emulator"
|
||||||
@@ -123,6 +115,13 @@ function Get-AndroidPlatformVersions {
|
|||||||
return ($versions -Join "<br>")
|
return ($versions -Join "<br>")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-AndroidCommandLineToolsVersion {
|
||||||
|
$commandLineTools = Get-AndroidSDKManagerPath
|
||||||
|
(& $commandLineTools --version | Out-String).Trim() -match "(?<version>^(\d+\.){1,}\d+$)" | Out-Null
|
||||||
|
$commandLineToolsVersion = $Matches.Version
|
||||||
|
return $commandLineToolsVersion
|
||||||
|
}
|
||||||
|
|
||||||
function Get-AndroidBuildToolVersions {
|
function Get-AndroidBuildToolVersions {
|
||||||
param (
|
param (
|
||||||
[Parameter(Mandatory)]
|
[Parameter(Mandatory)]
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ function Get-ToolsetValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Get-AndroidPackages {
|
function Get-AndroidPackages {
|
||||||
$androidSDKManagerPath = "/usr/local/lib/android/sdk/tools/bin/sdkmanager"
|
$androidSDKManagerPath = "/usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager"
|
||||||
$androidPackages = & $androidSDKManagerPath --list --verbose
|
$androidPackages = & $androidSDKManagerPath --list --verbose
|
||||||
return $androidPackages
|
return $androidPackages
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
# Source the helpers for use with the script
|
# Source the helpers for use with the script
|
||||||
source $HELPER_SCRIPTS/os.sh
|
source $HELPER_SCRIPTS/os.sh
|
||||||
source $HELPER_SCRIPTS/install.sh
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
source $HELPER_SCRIPTS/etc-environment.sh
|
||||||
|
|
||||||
function filter_components_by_version {
|
function filter_components_by_version {
|
||||||
minimumVersion=$1
|
minimumVersion=$1
|
||||||
@@ -26,9 +27,7 @@ function filter_components_by_version {
|
|||||||
|
|
||||||
function get_full_ndk_version {
|
function get_full_ndk_version {
|
||||||
majorVersion=$1
|
majorVersion=$1
|
||||||
|
|
||||||
ndkFullVersion=$($SDKMANAGER --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1)
|
ndkFullVersion=$($SDKMANAGER --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1)
|
||||||
|
|
||||||
echo "$ndkFullVersion"
|
echo "$ndkFullVersion"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +35,7 @@ function get_full_ndk_version {
|
|||||||
ANDROID_ROOT=/usr/local/lib/android
|
ANDROID_ROOT=/usr/local/lib/android
|
||||||
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
||||||
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
|
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
|
||||||
SDKMANAGER=${ANDROID_SDK_ROOT}/tools/bin/sdkmanager
|
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
|
||||||
echo "ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
|
echo "ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
|
||||||
|
|
||||||
# ANDROID_HOME is deprecated, but older versions of Gradle rely on it
|
# ANDROID_HOME is deprecated, but older versions of Gradle rely on it
|
||||||
@@ -51,14 +50,12 @@ mkdir -p ${ANDROID_SDK_ROOT}
|
|||||||
|
|
||||||
# Download the latest command line tools so that we can accept all of the licenses.
|
# Download the latest command line tools so that we can accept all of the licenses.
|
||||||
# See https://developer.android.com/studio/#command-tools
|
# See https://developer.android.com/studio/#command-tools
|
||||||
download_with_retries https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip "." android-sdk.zip
|
cmdlineTools="android-cmdline-tools.zip"
|
||||||
unzip -qq android-sdk.zip -d ${ANDROID_SDK_ROOT}
|
download_with_retries https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip "." $cmdlineTools
|
||||||
rm -f android-sdk.zip
|
unzip -qq $cmdlineTools -d ${ANDROID_SDK_ROOT}/cmdline-tools
|
||||||
|
# Command line tools need to be placed in ${ANDROID_SDK_ROOT}/sdk/cmdline-tools/latest to determine SDK root
|
||||||
if isUbuntu20 ; then
|
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest
|
||||||
# Sdk manager doesn't work with Java > 8, set version 8 explicitly
|
rm -f $cmdlineTools
|
||||||
sed -i "2i export JAVA_HOME=${JAVA_HOME_8_X64}" "$SDKMANAGER"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check sdk manager installation
|
# Check sdk manager installation
|
||||||
${SDKMANAGER} --list 1>/dev/null
|
${SDKMANAGER} --list 1>/dev/null
|
||||||
@@ -103,7 +100,13 @@ filter_components_by_version $minimumBuildToolVersion "${availableBuildTools[@]}
|
|||||||
|
|
||||||
echo "y" | $SDKMANAGER ${components[@]}
|
echo "y" | $SDKMANAGER ${components[@]}
|
||||||
|
|
||||||
|
# Old skdmanager from sdk tools doesn't work with Java > 8, set version 8 explicitly
|
||||||
|
if isUbuntu20; then
|
||||||
|
sed -i "2i export JAVA_HOME=${JAVA_HOME_8_X64}" ${ANDROID_SDK_ROOT}/tools/bin/sdkmanager
|
||||||
|
fi
|
||||||
|
|
||||||
# Add required permissions
|
# Add required permissions
|
||||||
chmod -R a+rwx ${ANDROID_SDK_ROOT}
|
chmod -R a+rwx ${ANDROID_SDK_ROOT}
|
||||||
|
|
||||||
|
reloadEtcEnvironment
|
||||||
invoke_tests "Android"
|
invoke_tests "Android"
|
||||||
|
|||||||
@@ -32,8 +32,6 @@ Describe "Android" {
|
|||||||
$androidPackages = $androidPackages | ForEach-Object { $_ }
|
$androidPackages = $androidPackages | ForEach-Object { $_ }
|
||||||
|
|
||||||
BeforeAll {
|
BeforeAll {
|
||||||
$ANDROID_SDK_DIR = "/usr/local/lib/android/sdk"
|
|
||||||
|
|
||||||
function Validate-AndroidPackage {
|
function Validate-AndroidPackage {
|
||||||
param (
|
param (
|
||||||
[Parameter(Mandatory=$true)]
|
[Parameter(Mandatory=$true)]
|
||||||
@@ -45,11 +43,28 @@ Describe "Android" {
|
|||||||
# 'cmake;3.6.4111459' -> 'cmake/3.6.4111459'
|
# 'cmake;3.6.4111459' -> 'cmake/3.6.4111459'
|
||||||
# 'patcher;v4' -> 'patcher/v4'
|
# 'patcher;v4' -> 'patcher/v4'
|
||||||
$PackageName = $PackageName.Replace(";", "/")
|
$PackageName = $PackageName.Replace(";", "/")
|
||||||
$targetPath = Join-Path $ANDROID_SDK_DIR $PackageName
|
$targetPath = Join-Path $env:ANDROID_HOME $PackageName
|
||||||
$targetPath | Should -Exist
|
$targetPath | Should -Exist
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Context "SDKManagers" {
|
||||||
|
$testCases = @(
|
||||||
|
@{
|
||||||
|
PackageName = "SDK tools"
|
||||||
|
Sdkmanager = "$env:ANDROID_HOME/tools/bin/sdkmanager"
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
PackageName = "Command-line tools"
|
||||||
|
Sdkmanager = "$env:ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
It "Sdkmanager from <PackageName> is available" -TestCases $testCases {
|
||||||
|
"$Sdkmanager --version" | Should -ReturnZeroExitCode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Context "Packages" {
|
Context "Packages" {
|
||||||
$testCases = $androidPackages | ForEach-Object { @{ PackageName = $_ } }
|
$testCases = $androidPackages | ForEach-Object { @{ PackageName = $_ } }
|
||||||
|
|
||||||
|
|||||||
@@ -96,9 +96,7 @@
|
|||||||
"additional_tools": [
|
"additional_tools": [
|
||||||
"cmake;3.10.2.4988404",
|
"cmake;3.10.2.4988404",
|
||||||
"cmake;3.18.1",
|
"cmake;3.18.1",
|
||||||
"patcher;v4",
|
"platform-tools"
|
||||||
"platform-tools",
|
|
||||||
"cmdline-tools;latest"
|
|
||||||
],
|
],
|
||||||
"ndk": {
|
"ndk": {
|
||||||
"lts": "21"
|
"lts": "21"
|
||||||
|
|||||||
@@ -92,9 +92,7 @@
|
|||||||
"additional_tools": [
|
"additional_tools": [
|
||||||
"cmake;3.10.2.4988404",
|
"cmake;3.10.2.4988404",
|
||||||
"cmake;3.18.1",
|
"cmake;3.18.1",
|
||||||
"patcher;v4",
|
"platform-tools"
|
||||||
"platform-tools",
|
|
||||||
"cmdline-tools;latest"
|
|
||||||
],
|
],
|
||||||
"ndk": {
|
"ndk": {
|
||||||
"lts": "21"
|
"lts": "21"
|
||||||
|
|||||||
@@ -88,9 +88,7 @@
|
|||||||
"additional_tools": [
|
"additional_tools": [
|
||||||
"cmake;3.10.2.4988404",
|
"cmake;3.10.2.4988404",
|
||||||
"cmake;3.18.1",
|
"cmake;3.18.1",
|
||||||
"patcher;v4",
|
"platform-tools"
|
||||||
"platform-tools",
|
|
||||||
"cmdline-tools;latest"
|
|
||||||
],
|
],
|
||||||
"ndk": {
|
"ndk": {
|
||||||
"lts": "21",
|
"lts": "21",
|
||||||
|
|||||||
Reference in New Issue
Block a user