feat(scripts): local_test.sh 增加 --android——编译 APK 并装到 USB Android 设备

照 --ios 分支模式:flutter build apk --release(无 key.properties 时 Gradle 回退 debug
签名可本地安装)→ adb 检测已授权设备(awk 取状态=device 的首台,排除 unauthorized/offline,
adb 优先 PATH 回退常见 SDK 位置)→ install -r → monkey 拉起 com.yanmei.jiu。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-07-11 12:30:52 +08:00
parent 709e59b1b7
commit e6660614ce
+46
View File
@@ -5,6 +5,7 @@
# sh scripts/local_test.sh # 编译 macOS + 启动
# sh scripts/local_test.sh --no-open # 只编译 macOS 不启动
# sh scripts/local_test.sh --ios # 编译 iOS 并装到 USB iPhone(开发签名)
# sh scripts/local_test.sh --android # 编译 APK 并装到 USB Android 设备(无密钥回退 debug 签名)
#
# 后端固定指向生产 https://jiu.51yanmei.com(与 CI compile 脚本一致)。
# 版本号 = 最新 client-v* tag 的 patch+1 加 -dev 后缀(如 v1.1.4-dev),
@@ -80,6 +81,51 @@ if [ "${1:-}" = "--ios" ]; then
exit 0
fi
if [ "${1:-}" = "--android" ]; then
# ── Androidrelease 构建(无 key.properties 时 Gradle 回退 debug 签名,可本地安装,
# 见 android/app/build.gradle.kts+ adb 装到 USB Android 设备并拉起 ──
echo "==> 编译 Android APK(线上后端,版本 v${VER}"
cd client
flutter build apk --release "${DEFINES[@]}"
cd "$REPO_ROOT"
APK="client/build/app/outputs/flutter-apk/app-release.apk"
if [ ! -f "$APK" ]; then
echo "!! 找不到构建产物 $APK" >&2
exit 1
fi
# 解析 adb:优先 PATH,回退常见 Android SDK 位置
ADB="$(command -v adb || true)"
if [ -z "$ADB" ]; then
for c in "$HOME/Library/Android/sdk/platform-tools/adb" \
"${ANDROID_HOME:-}/platform-tools/adb" \
"${ANDROID_SDK_ROOT:-}/platform-tools/adb"; do
if [ -x "$c" ]; then ADB="$c"; break; fi
done
fi
if [ -z "$ADB" ]; then
echo "!! 未找到 adb(装 Android SDK platform-tools,或将其加入 PATH" >&2
exit 1
fi
# 取第一台「已授权」设备(状态列 = device,排除 unauthorized/offline/未授权)
AD_ID="$("$ADB" devices | awk 'NR>1 && $2=="device" {print $1; exit}')"
if [ -z "$AD_ID" ]; then
echo "!! 未检测到已授权的 Android 设备(插线、解锁、允许「USB 调试」授权后重试)" >&2
exit 1
fi
echo "==> 安装到 Android${AD_ID}"
# -r 覆盖安装保留数据;若曾装过不同签名(如商店版)会报 INSTALL_FAILED_UPDATE_INCOMPATIBLE
# 需先在设备上卸载旧版再重试(本地 debug 签名与商店 release 签名不同)。
"$ADB" -s "$AD_ID" install -r "$APK"
echo "==> 拉起 岩美酒库"
"$ADB" -s "$AD_ID" shell monkey -p com.yanmei.jiu -c android.intent.category.LAUNCHER 1 >/dev/null 2>&1 || true
echo "==> 完成:Android 上打开 岩美酒库(版本 v${VER}"
exit 0
fi
APP="client/build/macos/Build/Products/Release/jiu_client.app"
echo "==> 编译 macOS app(线上后端,版本 v${VER}"