本次更新包含多项核心改进: 1. 新增统一跨平台导航扩展,替换原有GoRouter调用,适配鸿蒙平台路由逻辑 2. 重构状态初始化逻辑,使用Future.microtask避免BuildContext异常 3. 完善Linux桌面端支持,添加桌面文件、AppData配置与WSL构建脚本 4. 修复鸿蒙平台动画渲染异常问题,移除平台特判逻辑 5. 优化NFC配对扫描参数,精简不必要的配置项 6. 更新依赖版本与项目版本号 7. 修复Drift数据库缓存问题,移除冗余的表检测逻辑 8. 添加路由观察者日志,优化鸿蒙端路由调试体验 9. 完善签到与文章发布后的用户数据刷新逻辑 10. 删除冗余的子模块与日志文件,清理项目结构
152 lines
3.8 KiB
Bash
152 lines
3.8 KiB
Bash
#!/bin/bash
|
||
# ============================================================
|
||
# 闲言APP — Linux一键构建+打包脚本
|
||
# 创建时间: 2026-05-18
|
||
# 更新时间: 2026-05-18
|
||
# 作用: 在WSL/Linux中一键完成Flutter构建和所有格式打包
|
||
# 上次更新: 初始创建
|
||
# ============================================================
|
||
|
||
set -e
|
||
|
||
APP_NAME="xianyan"
|
||
APP_VERSION="5.2.0"
|
||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
PROJECT_DIR="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||
|
||
echo "=========================================="
|
||
echo " 闲言 v${APP_VERSION} — Linux 一键构建打包"
|
||
echo "=========================================="
|
||
echo ""
|
||
|
||
check_flutter() {
|
||
if ! command -v flutter &> /dev/null; then
|
||
echo "❌ Flutter 未安装,请先安装 Flutter SDK"
|
||
echo " 参考: https://docs.flutter.dev/get-started/install/linux"
|
||
exit 1
|
||
fi
|
||
echo "✅ Flutter: $(flutter --version | head -1)"
|
||
}
|
||
|
||
install_deps() {
|
||
echo ""
|
||
echo "📦 检查系统依赖..."
|
||
local deps=(
|
||
clang cmake ninja-build pkg-config
|
||
libgtk-3-dev liblzma-dev libstdc++-12-dev
|
||
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||
libasound2-dev libsecret-1-dev libbluetooth-dev
|
||
libnotify-dev libmpv-dev
|
||
curl unzip xz-utils zip dpkg-dev fakeroot
|
||
)
|
||
|
||
local missing=()
|
||
for dep in "${deps[@]}"; do
|
||
if ! dpkg -s "$dep" &> /dev/null 2>&1; then
|
||
missing+=("$dep")
|
||
fi
|
||
done
|
||
|
||
if [ ${#missing[@]} -gt 0 ]; then
|
||
echo "📥 安装缺失依赖: ${missing[*]}"
|
||
sudo apt update
|
||
sudo apt install -y "${missing[@]}" || {
|
||
echo "⚠️ 部分依赖安装失败,尝试继续构建..."
|
||
}
|
||
else
|
||
echo "✅ 所有系统依赖已安装"
|
||
fi
|
||
}
|
||
|
||
build_flutter() {
|
||
echo ""
|
||
echo "🔨 Flutter 构建 (Release)..."
|
||
cd "${PROJECT_DIR}"
|
||
|
||
flutter config --enable-linux-desktop
|
||
|
||
flutter pub get
|
||
|
||
flutter build linux --release
|
||
|
||
if [ ! -d "build/linux/x64/release/bundle" ]; then
|
||
echo "❌ 构建失败,bundle 目录不存在"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ Flutter 构建成功"
|
||
echo " 产物: build/linux/x64/release/bundle/"
|
||
}
|
||
|
||
package_all() {
|
||
echo ""
|
||
echo "📦 开始打包所有格式..."
|
||
cd "${PROJECT_DIR}"
|
||
|
||
mkdir -p dist
|
||
|
||
echo ""
|
||
echo "--- [1/3] tar.gz 便携包 ---"
|
||
bash linux/packaging/build_tarball.sh
|
||
|
||
echo ""
|
||
echo "--- [2/3] .deb 安装包 ---"
|
||
bash linux/packaging/build_deb.sh
|
||
|
||
echo ""
|
||
echo "--- [3/3] AppImage ---"
|
||
bash linux/packaging/build_appimage.sh
|
||
|
||
echo ""
|
||
echo "=========================================="
|
||
echo " ✅ 全部打包完成!"
|
||
echo "=========================================="
|
||
echo ""
|
||
echo "产物列表:"
|
||
ls -lh dist/ 2>/dev/null || echo " (无产物)"
|
||
echo ""
|
||
echo "安装方式:"
|
||
echo " .deb: sudo dpkg -i dist/${APP_NAME}_${APP_VERSION}_amd64.deb"
|
||
echo " AppImage: chmod +x dist/${APP_NAME}_${APP_VERSION}_x86_64.AppImage && ./dist/${APP_NAME}_${APP_VERSION}_x86_64.AppImage"
|
||
echo " tar.gz: tar -xzf dist/${APP_NAME}_${APP_VERSION}_linux_x64.tar.gz && cd ${APP_NAME}_${APP_VERSION}_linux_x64 && ./run.sh"
|
||
}
|
||
|
||
case "${1:-all}" in
|
||
deps)
|
||
install_deps
|
||
;;
|
||
build)
|
||
check_flutter
|
||
build_flutter
|
||
;;
|
||
deb)
|
||
bash linux/packaging/build_deb.sh
|
||
;;
|
||
appimage)
|
||
bash linux/packaging/build_appimage.sh
|
||
;;
|
||
tarball)
|
||
bash linux/packaging/build_tarball.sh
|
||
;;
|
||
package)
|
||
package_all
|
||
;;
|
||
all|"")
|
||
check_flutter
|
||
install_deps
|
||
build_flutter
|
||
package_all
|
||
;;
|
||
*)
|
||
echo "用法: $0 {deps|build|deb|appimage|tarball|package|all}"
|
||
echo ""
|
||
echo " deps — 仅安装系统依赖"
|
||
echo " build — 仅Flutter构建"
|
||
echo " deb — 仅打包.deb"
|
||
echo " appimage — 仅打包AppImage"
|
||
echo " tarball — 仅打包tar.gz"
|
||
echo " package — 打包所有格式(需先build)"
|
||
echo " all — 完整流程: 依赖→构建→打包(默认)"
|
||
;;
|
||
esac
|