name: Setup Android toolchain description: Set up the pinned Java and Android SDK toolchain used by OpenClaw builds. runs: using: composite steps: - name: Setup Java uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5 with: distribution: temurin # Keep sdkmanager on the stable JDK path for Linux CI runners. java-version: 17 cache: gradle cache-dependency-path: | apps/android/**/*.gradle* apps/android/**/gradle-wrapper.properties apps/android/gradle/libs.versions.toml - name: Cache Android SDK uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5 with: path: ~/.android-sdk key: ${{ runner.os }}-android-sdk-v1-cmdline-14742923-platform-37.0-build-tools-36.0.0 restore-keys: | ${{ runner.os }}-android-sdk-v1- - name: Setup Android SDK command-line tools shell: bash run: | set -euo pipefail ANDROID_SDK_ROOT="$HOME/.android-sdk" CMDLINE_TOOLS_VERSION="14742923" ARCHIVE="commandlinetools-linux-${CMDLINE_TOOLS_VERSION}_latest.zip" URL="https://dl.google.com/android/repository/${ARCHIVE}" if [[ ! -x "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" ]]; then mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" curl -fsSL --connect-timeout 10 --max-time 300 "${URL}" -o "${RUNNER_TEMP}/${ARCHIVE}" rm -rf "${ANDROID_SDK_ROOT}/cmdline-tools/latest" unzip -q "${RUNNER_TEMP}/${ARCHIVE}" -d "${ANDROID_SDK_ROOT}/cmdline-tools" mv "${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools" "${ANDROID_SDK_ROOT}/cmdline-tools/latest" fi echo "ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}" >> "${GITHUB_ENV}" echo "ANDROID_HOME=${ANDROID_SDK_ROOT}" >> "${GITHUB_ENV}" echo "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin" >> "${GITHUB_PATH}" echo "${ANDROID_SDK_ROOT}/platform-tools" >> "${GITHUB_PATH}" - name: Install Android SDK packages shell: bash run: | set -euo pipefail # sdkmanager closes stdin after accepting every license, which gives yes SIGPIPE. # Preserve sdkmanager's status so a real license failure still stops the job. yes | sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --licenses >/dev/null || [[ "${PIPESTATUS[1]}" -eq 0 ]] sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --install \ "platform-tools" \ "platforms;android-37.0" \ "build-tools;36.0.0"