Skip to content

Android:sdkmanager

Download script

#!/usr/bin/env bash

ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" || exit; pwd)

ANDROID_SDK_URL="https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip"
ANDROID_SDK_CHECKSUM="$ROOT_DIR/android.checksum"
ANDROID_SDK_DIST="$ROOT_DIR/commandlinetools-linux-9477386_latest.zip"
ANDROID_SDK_ROOT="$ROOT_DIR/android_sdk"
ANDROID_SDK_CMDLINE_TOOLS_DIR="$ANDROID_SDK_ROOT/cmdline-tools"
ANDROID_SDK_CMDLINE_TOOLS_LATEST_DIR="$ANDROID_SDK_ROOT/cmdline-tools/latest"

SDKMANAGER_CMD="$ANDROID_SDK_CMDLINE_TOOLS_LATEST_DIR/bin/sdkmanager"

function print_error
{
    # shellcheck disable=SC2145
    echo -e "\033[31m$@\033[0m" 1>&2
}

function print_message
{
    # shellcheck disable=SC2145
    echo -e "\033[32m$@\033[0m"
}

trap 'cancel_black' INT

function cancel_black
{
    print_error "An interrupt signal was detected."
    exit 1
}

function download_android_sdk
{
    if [[ ! -f "$ANDROID_SDK_DIST" ]]; then
        curl -o "$ANDROID_SDK_DIST" "$ANDROID_SDK_URL"
    fi

    if ! sha256sum -c "$ANDROID_SDK_CHECKSUM" &> /dev/null; then
        print_error "Checksum error detected"
        exit 1
    fi

    if [[ ! -d "$ANDROID_SDK_CMDLINE_TOOLS_DIR" ]]; then
        mkdir -vp "$ANDROID_SDK_CMDLINE_TOOLS_DIR"
    fi

    if [[ ! -d "$ANDROID_SDK_CMDLINE_TOOLS_LATEST_DIR" ]]; then
        echo "Unzip '$ANDROID_SDK_DIST' ..."
        unzip -q "$ANDROID_SDK_DIST" -d "$ANDROID_SDK_CMDLINE_TOOLS_DIR"
        mv -v "$ANDROID_SDK_CMDLINE_TOOLS_DIR/cmdline-tools" "$ANDROID_SDK_CMDLINE_TOOLS_LATEST_DIR"
    fi

    if [[ ! -x "$SDKMANAGER_CMD" ]]; then
        print_error "Not found sdkmanager executable"
        exit 1
    fi

    yes | "$SDKMANAGER_CMD" --licenses > /dev/null
    "$SDKMANAGER_CMD" 'ndk;25.2.9519653'
}

download_android_sdk

See also

Favorite site