#!/usr/bin/env bash # [打包] 把 adb 同步到 third_party/platform-tools,供安装包内置 set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" DEST="$ROOT/third_party/platform-tools" mkdir -p "$DEST" copy_from() { local src="$1" echo "→ 从 $src 复制" # 尽量拷整个 platform-tools 目录(含依赖),至少保证有 adb local dir dir="$(dirname "$src")" if [[ -d "$dir" ]] && [[ "$(basename "$dir")" == "platform-tools" ]]; then rsync -a --delete "$dir/" "$DEST/" else cp -f "$src" "$DEST/adb" chmod +x "$DEST/adb" fi } # 1) 本机已有 adb if command -v adb >/dev/null 2>&1; then ADB_BIN="$(command -v adb)" # brew 的 adb 常是 symlink,解析到真实 platform-tools if [[ -L "$ADB_BIN" ]]; then ADB_BIN="$(python3 -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$ADB_BIN")" fi copy_from "$ADB_BIN" echo "✓ 已同步到 $DEST" "$DEST/adb" version | head -2 exit 0 fi # 2) 下载 Google 官方 mac/linux/win 包(按当前系统) OS="$(uname -s)" case "$OS" in Darwin) ZIP_URL="https://dl.google.com/android/repository/platform-tools-latest-darwin.zip" ;; Linux) ZIP_URL="https://dl.google.com/android/repository/platform-tools-latest-linux.zip" ;; MINGW*|MSYS*|CYGWIN*) ZIP_URL="https://dl.google.com/android/repository/platform-tools-latest-windows.zip" ;; *) echo "请手动把对应平台的 platform-tools 放到 $DEST"; exit 1 ;; esac TMP="$(mktemp -d)" echo "→ 下载 $ZIP_URL" curl -L --fail -o "$TMP/pt.zip" "$ZIP_URL" unzip -q "$TMP/pt.zip" -d "$TMP" rsync -a --delete "$TMP/platform-tools/" "$DEST/" rm -rf "$TMP" chmod +x "$DEST/adb" 2>/dev/null || true echo "✓ 已下载并同步到 $DEST" "$DEST/adb" version | head -2