diff --git a/scripts/local_test.sh b/scripts/local_test.sh index b42d303..3fe58f5 100755 --- a/scripts/local_test.sh +++ b/scripts/local_test.sh @@ -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 + # ── Android:release 构建(无 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})"