Files
runner-images/images/linux/scripts/installers/android.sh
T

110 lines
4.0 KiB
Bash
Raw Normal View History

2020-10-07 13:49:40 +05:00
#!/bin/bash -e
2020-05-26 18:45:48 +03:00
################################################################################
## File: android.sh
## Desc: Installs Android SDK
################################################################################
# Source the helpers for use with the script
source $HELPER_SCRIPTS/os.sh
2020-10-01 13:08:53 +03:00
source $HELPER_SCRIPTS/install.sh
2020-05-26 18:45:48 +03:00
2020-10-01 16:33:20 +03:00
function filter_components_by_version {
2020-10-01 11:03:39 +03:00
minimumVersion=$1
2020-09-29 17:26:59 +03:00
shift
toolsArr=("$@")
for item in ${toolsArr[@]}
do
2020-10-05 10:46:06 +03:00
# take the last argument after spliting string by ';'' and '-''
2020-10-01 11:03:39 +03:00
version=$(echo "${item##*[-;]}")
if verlte $minimumVersion $version
2020-09-29 17:26:59 +03:00
then
2020-10-01 16:33:20 +03:00
components+=($item)
2020-09-29 17:26:59 +03:00
fi
done
}
2021-02-04 13:34:30 +03:00
function get_full_ndk_version {
majorVersion=$1
ndkFullVersion=$($SDKMANAGER --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1)
echo "$ndkFullVersion"
}
2020-05-26 18:45:48 +03:00
# Set env variable for SDK Root (https://developer.android.com/studio/command-line/variables)
ANDROID_ROOT=/usr/local/lib/android
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
2021-02-04 13:34:30 +03:00
SDKMANAGER=${ANDROID_SDK_ROOT}/tools/bin/sdkmanager
2020-05-26 18:45:48 +03:00
echo "ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
# ANDROID_HOME is deprecated, but older versions of Gradle rely on it
echo "ANDROID_HOME=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
# Set env variables for NDK Root
echo "ANDROID_NDK_HOME=${ANDROID_NDK_ROOT}" | tee -a /etc/environment
echo "ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT}" | tee -a /etc/environment
2020-05-26 18:45:48 +03:00
# Create android sdk directory
mkdir -p ${ANDROID_SDK_ROOT}
# Download the latest command line tools so that we can accept all of the licenses.
# 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
unzip -qq android-sdk.zip -d ${ANDROID_SDK_ROOT}
2020-05-26 18:45:48 +03:00
rm -f android-sdk.zip
if isUbuntu20 ; then
# Sdk manager doesn't work with Java > 8, set version 8 explicitly
2021-02-04 13:34:30 +03:00
sed -i "2i export JAVA_HOME=${JAVA_HOME_8_X64}" "$SDKMANAGER"
2020-05-26 18:45:48 +03:00
fi
# Check sdk manager installation
2021-02-04 13:34:30 +03:00
${SDKMANAGER} --list 1>/dev/null
2020-05-26 18:45:48 +03:00
if [ $? -eq 0 ]
then
echo "Android SDK manager was installed"
else
echo "Android SDK manager was not installed"
exit 1
fi
minimumBuildToolVersion=$(get_toolset_value '.android.build_tools_min_version')
minimumPlatformVersion=$(get_toolset_value '.android.platform_min_version')
extras=$(get_toolset_value '.android.extra_list[]|"extras;" + .')
addons=$(get_toolset_value '.android.addon_list[]|"add-ons;" + .')
additional=$(get_toolset_value '.android.additional_tools[]')
2021-02-04 13:34:30 +03:00
ANDROID_NDK_MAJOR_LTS=($(get_toolset_value '.android.ndk.lts'))
ndkLTSFullVersion=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LTS)
2021-02-04 13:34:30 +03:00
components=("${extras[@]}" "${addons[@]}" "${additional[@]}" "ndk;$ndkLTSFullVersion")
if isUbuntu20 ; then
ANDROID_NDK_MAJOR_LATEST=($(get_toolset_value '.android.ndk.latest'))
ndkLatestFullVersion=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LATEST)
components+=("ndk;$ndkLatestFullVersion")
fi
2020-05-26 18:45:48 +03:00
2021-01-21 11:32:27 +03:00
# 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
2021-02-04 13:34:30 +03:00
ln -s $ANDROID_SDK_ROOT/ndk/$ndkLTSFullVersion $ANDROID_NDK_ROOT
if isUbuntu20; then
echo "ANDROID_NDK_LATEST_HOME=$ANDROID_SDK_ROOT/ndk/$ndkLatestFullVersion" | tee -a /etc/environment
fi
2021-01-21 11:32:27 +03:00
2021-02-04 13:34:30 +03:00
availablePlatforms=($($SDKMANAGER --list | sed -n '/Available Packages:/,/^$/p' | grep "platforms;android-" | cut -d"|" -f 1))
allBuildTools=($($SDKMANAGER --list | grep "build-tools;" | cut -d"|" -f 1 | sort -u))
2020-10-02 13:54:37 +03:00
availableBuildTools=$(echo ${allBuildTools[@]//*rc[0-9]/})
2020-10-01 16:33:20 +03:00
filter_components_by_version $minimumPlatformVersion "${availablePlatforms[@]}"
filter_components_by_version $minimumBuildToolVersion "${availableBuildTools[@]}"
2021-02-04 13:34:30 +03:00
echo "y" | $SDKMANAGER ${components[@]}
2020-08-28 16:17:22 +03:00
# Add required permissions
chmod -R a+rwx ${ANDROID_SDK_ROOT}
invoke_tests "Android"