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:
@@ -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})"
|
||||
|
||||
Reference in New Issue
Block a user