xmeta-dev/agent-base
0
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 