CoolFace
Apppublic

xmeta-dev/agent-base

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes
install-android.sh141 linesDownload Raw Back to scripts
1#!/bin/sh2set -e3 4# ============================================================5# Android 开发环境安装脚本6# 安装 Android SDK 命令行工具 + 平台工具 + NDK7# 依赖: wget, ca-certificates, unzip, openjdk-21-jdk-headless8# 全局变量: ANDROID_HOME, ANDROID_SDK_ROOT, ANDROID_NDK_HOME,9#           ANDROID_EMULATOR_HOME, ANDROID_AVD_HOME, JAVA_HOME10# ============================================================11 12ANDROID_HOME="${ANDROID_HOME:-/opt/android-sdk}"13CMDLINE_TOOLS_VERSION="${CMDLINE_TOOLS_VERSION:-11076708}"14CMDLINE_TOOLS_FILE="commandlinetools-linux-${CMDLINE_TOOLS_VERSION}_latest.zip"15CMDLINE_TOOLS_URL="https://dl.google.com/android/repository/${CMDLINE_TOOLS_FILE}"16 17# Android SDK 组件版本18PLATFORM_VERSION="${PLATFORM_VERSION:-android-34}"19BUILD_TOOLS_VERSION="${BUILD_TOOLS_VERSION:-34.0.0}"20NDK_VERSION="${NDK_VERSION:-27.0.12077973}"21 22echo ">>> Installing Android SDK ..."23 24# ============================================================25# 安装 Java(Android cmdline-tools 依赖)26# 优先检测是否已有 Java 21+27# 然后尝试 apt 安装28# 最后兜底: 从 Adoptium 下载 JDK 2129# ============================================================30install_java_adoptium() {31    echo "    Downloading JDK 21 from Adoptium (Eclipse Temurin) ..."32    mkdir -p /opt/java33    wget -q -O /tmp/jdk21.tar.gz \34        "https://api.adoptium.net/v3/binary/latest/21/ga/linux/x64/jdk/hotspot/normal/eclipse"35    tar xzf /tmp/jdk21.tar.gz -C /opt/java36    rm -f /tmp/jdk21.tar.gz37    JDK_DIR="$(ls /opt/java | head -1)"38    ln -sf "/opt/java/${JDK_DIR}" /opt/java/jdk-2139    export JAVA_HOME=/opt/java/jdk-2140    export PATH="${JAVA_HOME}/bin:${PATH}"41    echo "    JDK 21 downloaded and configured at ${JAVA_HOME}"42}43 44if java -version 2>&1 | grep -qE 'version "(2[1-9]|[3-9][0-9])'; then45    echo "    Java 21+ already available, skipping installation."46else47    apt-get update -qq && apt-get install -y -qq --no-install-recommends openjdk-21-jdk-headless && {48        echo "    openjdk-21-jdk-headless installed via apt."49    } || {50        echo "    openjdk-21-jdk-headless not found in apt repos, falling back to Adoptium download..."51        install_java_adoptium52    }53fi54rm -rf /var/lib/apt/lists/*55 56# 获取 JAVA_HOME 真实路径57if [ -z "${JAVA_HOME}" ]; then58    JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(which java 2>/dev/null)" 2>/dev/null)" 2>/dev/null)" 2>/dev/null)" || true59    if [ -z "${JAVA_HOME}" ] || [ ! -f "${JAVA_HOME}/bin/java" ]; then60        JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd6461    fi62fi63echo "    JAVA_HOME=${JAVA_HOME}"64 65# 创建 SDK 目录66mkdir -p "${ANDROID_HOME}"67 68# 下载 Android 命令行工具69echo "    Downloading command-line tools ..."70wget -q "${CMDLINE_TOOLS_URL}" -O "/tmp/${CMDLINE_TOOLS_FILE}"71 72if [ ! -f "/tmp/${CMDLINE_TOOLS_FILE}" ]; then73    echo "Error: Failed to download Android command-line tools from ${CMDLINE_TOOLS_URL}"74    exit 175fi76 77# 解压命令行工具78mkdir -p /tmp/cmdline-tools79unzip -q "/tmp/${CMDLINE_TOOLS_FILE}" -d /tmp/cmdline-tools80mkdir -p "${ANDROID_HOME}/cmdline-tools"81mv /tmp/cmdline-tools/cmdline-tools "${ANDROID_HOME}/cmdline-tools/latest"82rm -rf /tmp/cmdline-tools83 84# 设置 sdkmanager 路径85SDKMANAGER="${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager"86 87# 接受 licenses88echo "    Accepting licenses ..."89yes | "${SDKMANAGER}" --licenses > /dev/null 2>&1 || true90 91# 安装核心 SDK 组件92echo "    Installing platform-tools ..."93"${SDKMANAGER}" "platform-tools" > /dev/null 2>&194 95echo "    Installing platform ${PLATFORM_VERSION} ..."96"${SDKMANAGER}" "platforms;${PLATFORM_VERSION}" > /dev/null 2>&197 98echo "    Installing build-tools ${BUILD_TOOLS_VERSION} ..."99"${SDKMANAGER}" "build-tools;${BUILD_TOOLS_VERSION}" > /dev/null 2>&1100 101echo "    Installing NDK ${NDK_VERSION} ..."102"${SDKMANAGER}" "ndk;${NDK_VERSION}" > /dev/null 2>&1103 104# 创建 Android 模拟器相关目录105mkdir -p /root/.android/emulator /root/.android/avd106 107# 写入 profile.d 环境变量(登录 shell 自动加载)108cat > /etc/profile.d/android.sh << ANDROIDEOF109# Android SDK 根目录110export ANDROID_HOME=${ANDROID_HOME}111export ANDROID_SDK_ROOT=\${ANDROID_HOME}112 113# NDK114export ANDROID_NDK_HOME=\${ANDROID_HOME}/ndk/${NDK_VERSION}115 116# 模拟器配置目录117export ANDROID_EMULATOR_HOME=/root/.android/emulator118export ANDROID_AVD_HOME=/root/.android/avd119 120# Java121export JAVA_HOME=${JAVA_HOME}122 123# PATH: 命令行工具 / 平台工具 / 构建工具124export PATH=\${ANDROID_HOME}/cmdline-tools/latest/bin:\${ANDROID_HOME}/platform-tools:\${ANDROID_HOME}/build-tools/${BUILD_TOOLS_VERSION}:\${PATH}125ANDROIDEOF126chmod +x /etc/profile.d/android.sh127 128# 当前构建会话也可用129export PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/build-tools/${BUILD_TOOLS_VERSION}:${PATH}"130export JAVA_HOME="${JAVA_HOME}"131 132# 清理下载文件133rm -f "/tmp/${CMDLINE_TOOLS_FILE}"134 135echo ">>> Android SDK installed successfully."136echo "    ANDROID_HOME=${ANDROID_HOME}"137echo "    JAVA_HOME=${JAVA_HOME}"138"${SDKMANAGER}" --list --sdk_root="${ANDROID_HOME}" 2>/dev/null \139    | grep -E 'installed|Installed' \140    | head -10 || true141