快速构建apk发包测试

34 阅读1分钟
#!/bin/bash

# 计时器
SECONDS=0

# 配置参数
buildName="3.1.10"
buildNumber="20190"
appEnv="dev"
apkName="app_v${buildName}_${buildNumber}.apk"
update_description="1.更新描述"

base_dir=$(pwd)
apk_output_dir="$base_dir/fast_android_app"
flutter_build_path="$base_dir/build/app/outputs/flutter-apk/app-debug.apk"

##==================================调试信息==================================
echo "当前工作目录:$base_dir"
echo "APK 输出路径:$apk_output_dir"
echo "Flutter 构建 APK 路径:$flutter_build_path"
##==================================输入更新内容==================================
while true; do
    read -p "请输入更新内容:" update_description
    if [ -n "$update_description" ]; then
        break
    else
        echo "更新内容不能为空,请重新输入"
    fi
done

##==================================构建 APK==================================
echo "开始构建 Flutter Android APK 包..."
flutter --version
flutter build apk --debug --build-name="$buildName" --build-number="$buildNumber" --dart-define=APP_ENV="$appEnv"

# 检查构建是否成功
if [ $? -eq 0 ]; then
    if [ -f "$flutter_build_path" ]; then
        mkdir -p "$apk_output_dir"
        cp -f "$flutter_build_path" "$apk_output_dir/$apkName"
        echo "🎉 构建成功!APK 文件已保存为:$apk_output_dir/$apkName"
    else
        echo "😭 错误:APK 文件未生成,请检查构建路径:$flutter_build_path"
        say "打包失败"
        exit 1
    fi
else
    echo "😭 错误:flutter build apk 构建失败,请检查错误日志"
    say "打包失败"
    exit 1
fi

##==================================上传蒲公英==================================
API_KEY="xxxxxxxxxxxxxxxxxxx"
APK_PATH="$apk_output_dir/$apkName"

echo "开始上传到蒲公英:$APK_PATH"
UPLOAD_RESULT=$(curl -F "file=@$APK_PATH" -F "_api_key=$API_KEY" -F "buildInstallType=1" -F "buildUpdateDescription=$update_description" https://www.pgyer.com/apiv2/app/upload)

echo "$UPLOAD_RESULT"
if [[ "$UPLOAD_RESULT" =~ \"code\":0 ]]; then
    echo "🎉 蒲公英上传成功"
    say "分发到蒲公英成功"
else
    echo "😭 蒲公英上传失败:$UPLOAD_RESULT"
    say "上传失败"
    exit 1
fi

# 打开生成目录
open "$apk_output_dir"

##==================================完成==================================
echo "📅 Finished. Elapsed time: ${SECONDS}s"