update curl -O https://gist.githubusercontent.com/Hu-Wentao/32a4f27807bda9d7871fe41317297c84/raw/ScriptFlutter.md VS Code-run bash in MD plugin: https://marketplace.visualstudio.com/items?itemName=renathossain.markdown-runner
fvm flutter clean
fvm flutter pub get
find . -type f \( -name "*.g.dart" -o -name "*.mapper.dart" \) -delete
fvm dart run build_runner build -d
cd ios && pod install && cd ..
if [ -f "pubspec.yaml" ] && grep -q '^[^#]*intl\s*:' pubspec.yaml; then
if [ -d "lib/l10n" ] && ls lib/l10n/*.arb 1>/dev/null 2>&1; then
if ! fvm dart pub global list | grep -q 'intl_utils'; then
echo "activate intl_utils ..."
fvm dart pub global activate intl_utils
fi
fvm dart pub global run intl_utils:generate
else
echo "intl 已引用,但无 l10n/arb,跳过 intl_utils 生成"
fi
fi
if [ -f "pubspec.yaml" ] && grep -q '^[^#]*slang\s*:' pubspec.yaml; then
echo "run slang build ..."
fvm dart run slang
fifvm flutter clean
fvm flutter pub get
find . -type f -name "*.g.dart" -print0 | xargs -0 rm
fvm dart run build_runner build -d
fvm flutter test .
fvm flutter build apk
# fvm flutter build appbundlefvm flutter clean && \
cd android && ./gradlew clean && \
fvm flutter pub get && ./gradlew buildfvm dart pub global run dhttpd --path=build/app/outputs/flutter-apk --port 8091 --host=0.0.0.0if ! fvm dart pub global list | grep -q 'intl_utils'; then
echo "activate intl_utils ..."
fvm dart pub global activate intl_utils
fi
fvm dart pub global run intl_utils:generateadb shell wm size 375x812 && \
sleep 1 && \
adb shell wm density 158adb shell wm size reset && \
sleep 1 && \
adb shell wm density reset- ADB截屏并拉取
ASSETS_DIR=${ASSETS_DIR:-dev}
TARGET_DIR="${ASSETS_DIR}/screenshots"
DEVICE_PATH="/sdcard/scr_temp.png"
LOCAL_FILE="${TARGET_DIR}/ss_$(date +%Y%m%d_%H%M%S).png"
[ ! -d "$TARGET_DIR" ] && mkdir -p "$TARGET_DIR" || true
command -v adb &>/dev/null || { echo "ADB未安装"; exit 1; }
adb shell screencap -p "$DEVICE_PATH" || { echo "截屏失败"; exit 1; }
adb pull "$DEVICE_PATH" "$LOCAL_FILE" && adb shell rm "$DEVICE_PATH"
echo "✅ 保存至: $(realpath "$LOCAL_FILE")"- ADB录屏并拉取(最大300s, Ctrl+C终止)
ASSETS_DIR=${ASSETS_DIR:-dev}
TARGET_DIR="${ASSETS_DIR}/records"
DEVICE_VIDEO="/sdcard/rec_temp.mp4"
LOCAL_VIDEO="${TARGET_DIR}/sr_$(date +%Y%m%d_%H%M%S).mp4"
DURATION=300
[ ! -d "$TARGET_DIR" ] && mkdir -p "$TARGET_DIR" || true
# 捕获Ctrl+C:延迟拉取确保文件完整
trap 'sleep 2; adb pull "$DEVICE_VIDEO" "$LOCAL_VIDEO" && adb shell rm "$DEVICE_VIDEO"; [ -s "$LOCAL_VIDEO" ] && echo "保存至: $(realpath $LOCAL_VIDEO)" || echo "文件损坏"; exit' SIGINT
command -v adb &>/dev/null || { echo "ADB未安装"; exit 1; }
adb shell screenrecord --time-limit $DURATION --bit-rate 2000000 "$DEVICE_VIDEO"
sleep 2 && adb pull "$DEVICE_VIDEO" "$LOCAL_VIDEO" && adb shell rm "$DEVICE_VIDEO"
[ -s "$LOCAL_VIDEO" ] && echo "✅ 保存至: $(realpath $LOCAL_VIDEO)" || { echo "❌ 视频损坏"; rm -f "$LOCAL_VIDEO"; exit 1; }#!/bin/bash
IP=192.168.86.3
PORT=40649
adb connect $IP:$PORT && adb tcpip 5555
sleep 1
adb disconnect $IP:$PORT && adb connect $IP:5555- set
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn- unset
unset PUB_HOSTED_URL
unset FLUTTER_STORAGE_BASE_URLcurl -O https://gist.githubusercontent.com/Hu-Wentao/32a4f27807bda9d7871fe41317297c84/raw/ScriptFlutter.md
usage: run at project root