1 Star 0 Fork 0

coderxslee/book_store_app

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
archive_build_app.sh 7.20 KB
一键复制 编辑 原始数据 按行查看 历史
coderxslee 提交于 2024-09-03 18:09 . no message
#!/bin/bash
cd ~/workspace/projects/auto_shop/auto_shop_staff || { echo "无法进入工作目录"; exit 1; }
# 设置iTerm2窗口标题
echo -ne "\033]0;李雪松App打包脚本\007"
# 修改当前工作目录
echo -e "${GREEN}当前工作目录:~/workspace/projects/auto_shop/auto_shop_staff"
echo ""
clear
# 定义颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
GRAY='\033[1;30m'
GOLD='\033[38;5;220m' # 闪耀版的金色
BRIGHT_BLUE='\033[38;5;39m'
NC='\033[0m' # No Color
APP_NAME="e车联"
PROJECT_NAME="auto_shop_server"
VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}')
File_Name="${APP_NAME}_${VERSION}"
Ad_Hoc_File_Name="${APP_NAME}_Ad_v${VERSION}"
App_Store_File_Name="${APP_NAME}_St_v${VERSION}"
Android_File_Path="archive/android/${File_Name}.apk"
iOS_Ad_Hoc_File_Path="archive/ios/AdHoc/${Ad_Hoc_File_Name}.ipa"
iOS_App_Store_File_Path="archive/ios/AppStore/"${App_Store_File_Name}".ipa"
# API Key from Pgyer
API_KEY="5bce8816cc52da76dc4e7ae5d7d30ff1"
# 更新日志文件的绝对路径
LOG_FILE="archive_update_log.md"
# 初始化上传路径数组
upload_paths=()
# 用户选择打包选项
echo -e "${BRIGHT_BLUE}欢迎使用 App 打包脚本${NC}"
echo ""
echo -e "${GRAY}作者:${GRAY}李雪松${NC}"
echo -e "${GRAY}微信:${GRAY}CoderXSLee${NC}"
echo -e "${GRAY}如需帮助,请联系作者${NC}"
echo ""
echo -e "${GREEN}请选择要打包的平台:${NC}"
echo "1. Android"
echo "2. iOS Ad Hoc"
echo "3. iOS App Store"
echo "4. 全部"
echo -e "${GREEN}支持多选,请用空格分开。${GREEN}例如:${NC}1 3"
read -p "请输入你的选择: " choices
# 询问是否上传到 Pgyer
echo ""
echo -e "${GREEN}是否将应用上传到 Pgyer?:${NC}"
echo "1. 上传"
echo "2. 不上传"
read -p "请输入你的选择: " upload_to_pgyer
echo ""
# ============================================================================================
# Android 平台
# ============================================================================================
# 打包 Android 平台
if [[ "$choices" == *"1"* ]] || [[ "$choices" == *"4"* ]]; then
echo -e "${GREEN}正在打包 Android 平台 ${APP_NAME}.apk 文件...${NC}"
# # 将日志保存到一个临时文件
# temp_log=$(mktemp)
# # 执行打包命令并将标准错误重定向到临时文件
# flutter build apk --release 2> "$temp_log"
# # 过滤掉特定的警告信息
# grep -v -E "已过时的 API|未经检查或不安全的操作|使用 -Xlint:deprecation" "$temp_log" >&2
# # 删除临时文件
# rm "$temp_log"
flutter build apk --release
if [ -f build/app/outputs/flutter-apk/app-release.apk ]; then
mkdir -p archive/android
echo -e "正在将 apk 文件移动到目录:archive/android/"
mv build/app/outputs/flutter-apk/app-release.apk "${Android_File_Path}"
echo -e "已成功将 apk 文件移动到 ${Android_File_Path}"
echo -e "${BRIGHT_BLUE}Android 平台 ${APP_NAME}.apk 打包完成!${NC}\n"
open -R "${Android_File_Path}"
upload_paths+=("${Android_File_Path}") # 保存要上传的路径
else
echo -e "${RED}apk 文件生成失败。${NC}\n"
fi
fi
# ============================================================================================
# iOS 平台 Ad Hoc 测试分发版
# ============================================================================================
if [[ "$choices" == *"2"* ]] || [[ "$choices" == *"4"* ]]; then
echo -e "${GREEN}正在打包 iOS 平台 Ad Hoc 测试分发版 ${Ad_Hoc_File_Name}.ipa 文件...${NC}"
flutter build ipa --release --export-method ad-hoc
if [ -f build/ios/ipa/${PROJECT_NAME}.ipa ]; then
mkdir -p archive/ios/AdHoc
echo -e "\n正在将 ${PROJECT_NAME}.ipa 文件移动到目录:archive/ios/AdHoc/"
mv build/ios/ipa/${PROJECT_NAME}.ipa ${iOS_Ad_Hoc_File_Path}
echo -e "已成功将 ipa 文件已移动到 ${iOS_Ad_Hoc_File_Path}"
echo -e "${BRIGHT_BLUE}iOS 平台 Ad Hoc 版 ${APP_NAME}.ipa 打包完成!${NC}\n"
open -R ${iOS_Ad_Hoc_File_Path}
upload_paths+=("${iOS_Ad_Hoc_File_Path}") # 保存要上传的路径
else
echo -e "${RED}ipa 文件生成失败。${NC}\n"
fi
fi
# ============================================================================================
# iOS 平台 App Store 版
# ============================================================================================
if [[ "$choices" == *"3"* ]] || [[ "$choices" == *"4"* ]]; then
echo -e "${GREEN}正在打包 iOS 平台 App Store 版 ${App_Store_File_Name}.ipa 文件...${NC}"
flutter build ipa --release --export-method app-store
if [ -f build/ios/ipa/${PROJECT_NAME}.ipa ]; then
mkdir -p archive/ios/AppStore
echo -e "\n正在将 ${PROJECT_NAME}.ipa 文件移动到目录:archive/ios/AppStore/"
mv build/ios/ipa/${PROJECT_NAME}.ipa ${iOS_App_Store_File_Path}
echo -e "已成功将 ipa 文件已移动到 ${iOS_App_Store_File_Path}"
echo -e "${BRIGHT_BLUE}iOS 平台 App Store 版 ${APP_NAME} 打包完成!${NC}\n"
open -R ${iOS_App_Store_File_Path}
else
echo -e "${RED}ipa 文件生成失败。${NC}\n"
fi
fi
# ============================================================================================
# 读取更新日志
# ============================================================================================
echo -e "${GREEN}正在读取更新日志...${NC}"
UPDATE_LOG=$(awk '
BEGIN {RS=""; FS="\n"; count=0}
{
for (i=1; i<=NF; i++) {
if ($i ~ /^## \[/) {
count++
if (count == 2) {
exit
}
}
if (count < 2) {
# 过滤掉 # 号
line = $i
gsub(/#/, "", line)
print line
}
}
}
' "$LOG_FILE")
# 检查是否成功读取内容
if [[ -z "$UPDATE_LOG" ]]; then
echo "未能读取到更新日志内容,请检查文件内容。"
exit 1
fi
# ============================================================================================
# 上传到 Pgyer
# ============================================================================================
if [[ "$upload_to_pgyer" == *"1"* ]] && [[ "$choices" == *"1"* ]] || [[ "$choices" == *"2"* ]] || [[ "$choices" == *"4"* ]]; then
for path in "${upload_paths[@]}"; do
echo -e "${GOLD}正在将 ${GRAY}${path} ${GREEN}上传到 Pgyer...${NC}"
response=$(curl -F "file=@${path}" \
-F "_api_key=${API_KEY}" \
-F "buildUpdateDescription=${UPDATE_LOG}" \
https://www.pgyer.com/apiv2/app/upload)
# 提取并显示上传结果
upload_status=$(echo "$response" | grep -o '"code":[0-9]*')
if [[ $upload_status == *"0"* ]]; then
echo -e "${GREEN}应用上传成功!${NC}\n"
else
echo "!"
echo -e "${RED}应用上传失败!${NC}"
echo -e "${RED}响应信息:$response${NC}"
fi
done
fi
# ============================================================================================
# 终端打印更新日志
# ============================================================================================
echo -e "${GREEN}更新内容${NC}"
echo -e "${GOLD}$UPDATE_LOG${NC}\n"
read -p "Press [Enter] key to close this window..."
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Dart
1
https://gitee.com/coderxslee/book_store_app.git
git@gitee.com:coderxslee/book_store_app.git
coderxslee
book_store_app
book_store_app
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385