feat: 发布v5.3.0正式版本,完善跨平台适配与功能优化

本次更新包含多项核心改进:
1. 新增统一跨平台导航扩展,替换原有GoRouter调用,适配鸿蒙平台路由逻辑
2. 重构状态初始化逻辑,使用Future.microtask避免BuildContext异常
3. 完善Linux桌面端支持,添加桌面文件、AppData配置与WSL构建脚本
4. 修复鸿蒙平台动画渲染异常问题,移除平台特判逻辑
5. 优化NFC配对扫描参数,精简不必要的配置项
6. 更新依赖版本与项目版本号
7. 修复Drift数据库缓存问题,移除冗余的表检测逻辑
8. 添加路由观察者日志,优化鸿蒙端路由调试体验
9. 完善签到与文章发布后的用户数据刷新逻辑
10. 删除冗余的子模块与日志文件,清理项目结构
This commit is contained in:
Developer
2026-05-18 08:58:36 +08:00
parent 1bca322600
commit a60957cc0e
94 changed files with 3957 additions and 5358 deletions

View File

@@ -0,0 +1,151 @@
#!/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

View File

@@ -0,0 +1,126 @@
#!/bin/bash
# ============================================================
# 闲言APP — Linux打包脚本 (AppImage)
# 创建时间: 2026-05-18
# 更新时间: 2026-05-18
# 作用: 将Flutter Linux构建产物打包为AppImage通用安装包
# 上次更新: 初始创建
# ============================================================
set -e
APP_NAME="xianyan"
APP_DISPLAY_NAME="闲言"
APP_ID="com.example.xianyan"
APP_VERSION="5.2.0"
BUILD_DIR="build/linux/x64/release/bundle"
OUTPUT_DIR="dist"
APPDIR="${OUTPUT_DIR}/appimage_staging/${APP_NAME}.AppDir"
echo "=========================================="
echo " ${APP_DISPLAY_NAME} — AppImage 打包"
echo "=========================================="
if [ ! -d "${BUILD_DIR}" ]; then
echo "❌ 构建产物不存在,请先运行: flutter build linux --release"
exit 1
fi
which appimagetool > /dev/null 2>&1 || {
echo "📥 下载 appimagetool..."
ARCH=$(uname -m)
wget -q "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${ARCH}.AppImage" -O /tmp/appimagetool
chmod +x /tmp/appimagetool
APPIMAGETOOL="/tmp/appimagetool"
}
APPIMAGETOOL="${APPIMAGETOOL:-appimagetool}"
rm -rf "${APPDIR}"
mkdir -p "${APPDIR}/usr/bin"
mkdir -p "${APPDIR}/usr/lib"
mkdir -p "${APPDIR}/usr/share/applications"
mkdir -p "${APPDIR}/usr/share/metainfo"
mkdir -p "${APPDIR}/usr/share/icons/hicolor/scalable/apps"
mkdir -p "${APPDIR}/usr/share/icons/hicolor/256x256/apps"
echo "📦 复制构建产物..."
cp -r "${BUILD_DIR}"/* "${APPDIR}/usr/bin/"
chmod +x "${APPDIR}/usr/bin/${APP_NAME}"
echo "📝 创建AppRun入口..."
cat > "${APPDIR}/AppRun" << 'EOF'
#!/bin/bash
SELF=$(readlink -f "$0")
HERE=${SELF%/*}
export PATH="${HERE}/usr/bin:${PATH}"
export LD_LIBRARY_PATH="${HERE}/usr/lib:${HERE}/usr/bin/lib:${LD_LIBRARY_PATH}"
export XDG_DATA_DIRS="${HERE}/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas:${GSETTINGS_SCHEMA_DIR}"
# GSTREAMER插件路径
export GST_PLUGIN_SYSTEM_PATH="${HERE}/usr/lib/gstreamer-1.0:${GST_PLUGIN_SYSTEM_PATH:-}"
exec "${HERE}/usr/bin/xianyan" "$@"
EOF
chmod +x "${APPDIR}/AppRun"
echo "🖥️ 创建desktop文件..."
if [ -f "linux/${APP_ID}.desktop" ]; then
cp "linux/${APP_ID}.desktop" "${APPDIR}/"
sed -i "s|Exec=xianyan|Exec=${APP_NAME}|g" "${APPDIR}/${APP_ID}.desktop"
sed -i "s|Icon=com.example.xianyan|Icon=${APP_ID}|g" "${APPDIR}/${APP_ID}.desktop"
else
cat > "${APPDIR}/${APP_ID}.desktop" << EOF
[Desktop Entry]
Type=Application
Version=1.5
Name=${APP_DISPLAY_NAME}
Name[zh_CN]=${APP_DISPLAY_NAME}
Name[en]=Xianyan
Comment=文字阅读更纯粹
Icon=${APP_ID}
Exec=${APP_NAME}
Terminal=false
StartupNotify=true
Categories=Utility;Literature;Graphics;
StartupWMClass=${APP_NAME}
EOF
fi
echo "📋 复制AppStream元数据..."
if [ -f "linux/${APP_ID}.appdata.xml" ]; then
cp "linux/${APP_ID}.appdata.xml" "${APPDIR}/usr/share/metainfo/"
fi
echo "🎨 创建占位图标..."
SVG_ICON="${APPDIR}/usr/share/icons/hicolor/scalable/apps/${APP_ID}.svg"
cat > "${SVG_ICON}" << 'SVGEOF'
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1a1a2e"/>
<stop offset="100%" style="stop-color:#16213e"/>
</linearGradient>
</defs>
<rect width="256" height="256" rx="56" fill="url(#bg)"/>
<text x="128" y="160" text-anchor="middle" font-size="120" font-family="serif" fill="#e8e8e8">言</text>
</svg>
SVGEOF
mkdir -p "${APPDIR}/.DirIcon"
cp "${SVG_ICON}" "${APPDIR}/.DirIcon" 2>/dev/null || true
mkdir -p "${OUTPUT_DIR}"
APPIMAGE_FILE="${OUTPUT_DIR}/${APP_NAME}_${APP_VERSION}_x86_64.AppImage"
echo "🔨 构建AppImage..."
${APPIMAGETOOL} "${APPDIR}" "${APPIMAGE_FILE}"
APPIMAGE_SIZE=$(du -sh "${APPIMAGE_FILE}" | cut -f1)
echo ""
echo "✅ AppImage 打包完成!"
echo " 文件: ${APPIMAGE_FILE}"
echo " 大小: ${APPIMAGE_SIZE}"
echo ""
echo "运行命令: chmod +x ${APPIMAGE_FILE} && ./${APPIMAGE_FILE}"
rm -rf "${APPDIR}"

View File

@@ -0,0 +1,151 @@
#!/bin/bash
# ============================================================
# 闲言APP — Linux打包脚本 (Debian/Ubuntu .deb)
# 创建时间: 2026-05-18
# 更新时间: 2026-05-18
# 作用: 将Flutter Linux构建产物打包为.deb安装包
# 上次更新: 初始创建
# ============================================================
set -e
APP_NAME="xianyan"
APP_DISPLAY_NAME="闲言"
APP_ID="com.example.xianyan"
APP_VERSION="5.2.0"
APP_ARCH="amd64"
BUILD_DIR="build/linux/x64/release/bundle"
OUTPUT_DIR="dist"
DEB_ROOT="${OUTPUT_DIR}/deb_staging"
echo "=========================================="
echo " ${APP_DISPLAY_NAME} — .deb 打包"
echo "=========================================="
if [ ! -d "${BUILD_DIR}" ]; then
echo "❌ 构建产物不存在,请先运行: flutter build linux --release"
exit 1
fi
rm -rf "${DEB_ROOT}"
mkdir -p "${DEB_ROOT}/DEBIAN"
mkdir -p "${DEB_ROOT}/opt/${APP_NAME}"
mkdir -p "${DEB_ROOT}/usr/bin"
mkdir -p "${DEB_ROOT}/usr/share/applications"
mkdir -p "${DEB_ROOT}/usr/share/metainfo"
mkdir -p "${DEB_ROOT}/usr/share/icons/hicolor/scalable/apps"
mkdir -p "${DEB_ROOT}/usr/share/icons/hicolor/256x256/apps"
mkdir -p "${DEB_ROOT}/usr/share/icons/hicolor/128x128/apps"
mkdir -p "${DEB_ROOT}/usr/share/icons/hicolor/64x64/apps"
mkdir -p "${DEB_ROOT}/usr/share/icons/hicolor/48x48/apps"
mkdir -p "${DEB_ROOT}/usr/share/doc/${APP_NAME}"
echo "📦 复制构建产物..."
cp -r "${BUILD_DIR}"/* "${DEB_ROOT}/opt/${APP_NAME}/"
chmod +x "${DEB_ROOT}/opt/${APP_NAME}/${APP_NAME}"
echo "📝 创建符号链接..."
ln -sf "/opt/${APP_NAME}/${APP_NAME}" "${DEB_ROOT}/usr/bin/${APP_NAME}"
echo "📋 创建控制文件..."
cat > "${DEB_ROOT}/DEBIAN/control" << EOF
Package: ${APP_NAME}
Version: ${APP_VERSION}
Section: utils
Priority: optional
Architecture: ${APP_ARCH}
Depends: libgtk-3-0 (>= 3.24), libglib2.0-0 (>= 2.58), libpango-1.0-0 (>= 1.42), libharfbuzz0b (>= 2.0), libcairo2 (>= 1.16), libgdk-pixbuf-2.0-0 (>= 2.38), libgstreamer1.0-0 (>= 1.14), libgstreamer-plugins-base1.0-0 (>= 1.14), libasound2 (>= 1.1), libsecret-1-0 (>= 0.18), libbluetooth3 (>= 5.48), libnotify4 (>= 0.7), libmpv2 (>= 0.29) | libmpv1
Recommends: gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-libav
Suggests: fonts-noto-cjk, fonts-noto-color-emoji
Maintainer: 闲言 <xianyan@example.com>
Description: ${APP_DISPLAY_NAME} — 文字阅读更纯粹
句子阅读与壁纸制作应用,提供精选句子每日推荐、
壁纸制作与分享、卡片式阅读体验等功能。
Installed-Size: $(du -sk "${DEB_ROOT}/opt/${APP_NAME}" | cut -f1)
EOF
echo "📋 创建postinst脚本..."
cat > "${DEB_ROOT}/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
update-desktop-database /usr/share/applications 2>/dev/null || true
gtk-update-icon-cache /usr/share/icons/hicolor 2>/dev/null || true
update-mime-database /usr/share/mime 2>/dev/null || true
EOF
chmod 755 "${DEB_ROOT}/DEBIAN/postinst"
echo "📋 创建postrm脚本..."
cat > "${DEB_ROOT}/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
update-desktop-database /usr/share/applications 2>/dev/null || true
gtk-update-icon-cache /usr/share/icons/hicolor 2>/dev/null || true
EOF
chmod 755 "${DEB_ROOT}/DEBIAN/postrm"
echo "🖥️ 创建桌面快捷方式..."
if [ -f "linux/${APP_ID}.desktop" ]; then
cp "linux/${APP_ID}.desktop" "${DEB_ROOT}/usr/share/applications/"
else
cat > "${DEB_ROOT}/usr/share/applications/${APP_ID}.desktop" << EOF
[Desktop Entry]
Type=Application
Version=1.5
Name=${APP_DISPLAY_NAME}
Name[zh_CN]=${APP_DISPLAY_NAME}
Name[en]=Xianyan
Comment=文字阅读更纯粹
Comment[zh_CN]=文字阅读更纯粹
Comment[en]=Pure reading
Icon=${APP_ID}
Exec=/opt/${APP_NAME}/${APP_NAME}
Terminal=false
StartupNotify=true
Categories=Utility;Literature;Graphics;
Keywords=reading;sentence;wallpaper;
StartupWMClass=${APP_NAME}
MimeType=text/plain;x-scheme-handler/xianyan;
X-GNOME-UsesNotifications=true
EOF
fi
echo "📋 创建AppStream元数据..."
if [ -f "linux/${APP_ID}.appdata.xml" ]; then
cp "linux/${APP_ID}.appdata.xml" "${DEB_ROOT}/usr/share/metainfo/"
fi
echo "📄 创建版权文件..."
cat > "${DEB_ROOT}/usr/share/doc/${APP_NAME}/copyright" << EOF
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: ${APP_NAME}
Upstream-Contact: xianyan@example.com
Files: *
Copyright: 2026 闲言
License: proprietary
EOF
echo "📋 注册URL Scheme..."
cat > "${DEB_ROOT}/usr/share/applications/${APP_ID}-url.desktop" << EOF
[Desktop Entry]
Type=Application
Name=${APP_DISPLAY_NAME} URL Handler
NoDisplay=true
Exec=/opt/${APP_NAME}/${APP_NAME} %u
MimeType=x-scheme-handler/xianyan;
EOF
mkdir -p "${OUTPUT_DIR}"
DEB_FILE="${OUTPUT_DIR}/${APP_NAME}_${APP_VERSION}_${APP_ARCH}.deb"
dpkg-deb --build "${DEB_ROOT}" "${DEB_FILE}"
DEB_SIZE=$(du -sh "${DEB_FILE}" | cut -f1)
echo ""
echo "✅ .deb 打包完成!"
echo " 文件: ${DEB_FILE}"
echo " 大小: ${DEB_SIZE}"
echo ""
echo "安装命令: sudo dpkg -i ${DEB_FILE}"
echo "卸载命令: sudo dpkg -r ${APP_NAME}"
rm -rf "${DEB_ROOT}"

View File

@@ -0,0 +1,146 @@
#!/bin/bash
# ============================================================
# 闲言APP — Linux打包脚本 (tar.gz 便携包)
# 创建时间: 2026-05-18
# 更新时间: 2026-05-18
# 作用: 将Flutter Linux构建产物打包为tar.gz便携压缩包
# 上次更新: 初始创建
# ============================================================
set -e
APP_NAME="xianyan"
APP_DISPLAY_NAME="闲言"
APP_ID="com.example.xianyan"
APP_VERSION="5.2.0"
BUILD_DIR="build/linux/x64/release/bundle"
OUTPUT_DIR="dist"
TAR_ROOT="${OUTPUT_DIR}/tarball_staging/${APP_NAME}_${APP_VERSION}_linux_x64"
echo "=========================================="
echo " ${APP_DISPLAY_NAME} — tar.gz 便携包打包"
echo "=========================================="
if [ ! -d "${BUILD_DIR}" ]; then
echo "❌ 构建产物不存在,请先运行: flutter build linux --release"
exit 1
fi
rm -rf "${TAR_ROOT}"
mkdir -p "${TAR_ROOT}"
echo "📦 复制构建产物..."
cp -r "${BUILD_DIR}"/* "${TAR_ROOT}/"
chmod +x "${TAR_ROOT}/${APP_NAME}"
echo "📋 复制桌面集成文件..."
if [ -f "linux/${APP_ID}.desktop" ]; then
cp "linux/${APP_ID}.desktop" "${TAR_ROOT}/"
fi
if [ -f "linux/${APP_ID}.appdata.xml" ]; then
cp "linux/${APP_ID}.appdata.xml" "${TAR_ROOT}/"
fi
echo "📝 创建启动脚本..."
cat > "${TAR_ROOT}/run.sh" << 'EOF'
#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
export LD_LIBRARY_PATH="${SCRIPT_DIR}/lib:${LD_LIBRARY_PATH}"
export XDG_DATA_DIRS="${SCRIPT_DIR}/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
exec "${SCRIPT_DIR}/xianyan" "$@"
EOF
chmod +x "${TAR_ROOT}/run.sh"
echo "📝 创建安装脚本..."
cat > "${TAR_ROOT}/install.sh" << 'EOF'
#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_DIR="/opt/xianyan"
DESKTOP_FILE="/usr/share/applications/com.example.xianyan.desktop"
echo "🔧 安装闲言到 ${INSTALL_DIR}..."
sudo cp -r "${SCRIPT_DIR}" "${INSTALL_DIR}"
sudo chmod +x "${INSTALL_DIR}/xianyan"
echo "🖥️ 创建桌面快捷方式..."
sudo tee "${DESKTOP_FILE}" > /dev/null << DESKTOP
[Desktop Entry]
Type=Application
Version=1.5
Name=闲言
Name[zh_CN]=闲言
Name[en]=Xianyan
Comment=文字阅读更纯粹
Icon=com.example.xianyan
Exec=/opt/xianyan/xianyan
Terminal=false
StartupNotify=true
Categories=Utility;Literature;Graphics;
StartupWMClass=xianyan
DESKTOP
sudo update-desktop-database /usr/share/applications 2>/dev/null || true
echo "✅ 安装完成! 可从应用菜单启动「闲言」"
echo " 卸载: sudo rm -rf ${INSTALL_DIR} ${DESKTOP_FILE}"
EOF
chmod +x "${TAR_ROOT}/install.sh"
echo "📝 创建卸载脚本..."
cat > "${TAR_ROOT}/uninstall.sh" << 'EOF'
#!/bin/bash
set -e
echo "🗑️ 卸载闲言..."
sudo rm -rf /opt/xianyan
sudo rm -f /usr/share/applications/com.example.xianyan.desktop
sudo update-desktop-database /usr/share/applications 2>/dev/null || true
echo "✅ 卸载完成"
EOF
chmod +x "${TAR_ROOT}/uninstall.sh"
echo "📝 创建README..."
cat > "${TAR_ROOT}/README.txt" << EOF
${APP_DISPLAY_NAME} v${APP_VERSION} — Linux 便携版
========================================
快速启动:
./run.sh
安装到系统:
./install.sh
从系统卸载:
./uninstall.sh
系统要求:
- Linux x86_64 (Ubuntu 20.04+ / Debian 11+ / Fedora 35+)
- GTK 3.24+
- GStreamer 1.14+
- ALSA / PulseAudio
- 至少 2GB 内存
依赖安装 (Ubuntu/Debian):
sudo apt install libgtk-3-0 libglib2.0-0 libgstreamer1.0-0 \\
libgstreamer-plugins-base1.0-0 libasound2 libsecret-1-0 \\
gstreamer1.0-plugins-good gstreamer1.0-libav fonts-noto-cjk
EOF
mkdir -p "${OUTPUT_DIR}"
TAR_FILE="${OUTPUT_DIR}/${APP_NAME}_${APP_VERSION}_linux_x64.tar.gz"
echo "🔨 压缩打包..."
cd "${OUTPUT_DIR}/tarball_staging"
tar -czf "../$(basename ${TAR_FILE})" "${APP_NAME}_${APP_VERSION}_linux_x64/"
cd - > /dev/null
TAR_SIZE=$(du -sh "${TAR_FILE}" | cut -f1)
echo ""
echo "✅ tar.gz 打包完成!"
echo " 文件: ${TAR_FILE}"
echo " 大小: ${TAR_SIZE}"
echo ""
echo "使用方法:"
echo " 解压: tar -xzf $(basename ${TAR_FILE})"
echo " 运行: cd ${APP_NAME}_${APP_VERSION}_linux_x64 && ./run.sh"
rm -rf "${OUTPUT_DIR}/tarball_staging"

View File

@@ -0,0 +1,75 @@
#!/bin/bash
# ============================================================
# 闲言APP — WSL环境初始化脚本
# 创建时间: 2026-05-18
# 更新时间: 2026-05-18
# 作用: 在Windows WSL中初始化Flutter Linux构建环境
# 上次更新: 初始创建
# ============================================================
set -e
echo "=========================================="
echo " 闲言 — WSL 构建环境初始化"
echo "=========================================="
echo ""
echo "📦 更新系统包..."
sudo apt update && sudo apt upgrade -y
echo "📦 安装构建工具和系统依赖..."
sudo apt install -y \
clang cmake ninja-build pkg-config \
libgtk-3-dev liblzma-dev libstdc++-12-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-good1.0-dev \
libgstreamer-plugins-bad1.0-dev \
libgstreamer1.0-libav \
libasound2-dev libsecret-1-dev libbluetooth-dev \
libnotify-dev libmpv-dev libx11-dev \
curl unzip xz-utils zip dpkg-dev fakeroot \
fonts-noto-cjk fonts-noto-color-emoji \
git wget
echo ""
echo "🔍 检查 Flutter SDK..."
if command -v flutter &> /dev/null; then
echo "✅ Flutter 已安装: $(flutter --version | head -1)"
else
echo "📥 安装 Flutter SDK..."
git clone https://github.com/flutter/flutter.git -b stable --depth 1 "$HOME/flutter"
echo "" >> "$HOME/.bashrc"
echo "export PATH=\"\$HOME/flutter/bin:\$PATH\"" >> "$HOME/.bashrc"
export PATH="$HOME/flutter/bin:$PATH"
flutter doctor
fi
echo ""
echo "🔧 启用 Linux 桌面支持..."
flutter config --enable-linux-desktop
echo ""
echo "📋 Flutter Doctor..."
flutter doctor -v
echo ""
echo "=========================================="
echo " ✅ WSL 环境初始化完成!"
echo "=========================================="
echo ""
echo "下一步:"
echo " 1. 将项目复制到WSL本地(加速构建):"
echo " cp -r /mnt/e/project/flutter/f/xianyan ~/xianyan"
echo ""
echo " 2. 进入项目目录:"
echo " cd ~/xianyan"
echo ""
echo " 3. 一键构建打包:"
echo " bash linux/packaging/build_all.sh"
echo ""
echo " 或者分步执行:"
echo " flutter pub get"
echo " flutter build linux --release"
echo " bash linux/packaging/build_tarball.sh"
echo " bash linux/packaging/build_deb.sh"
echo " bash linux/packaging/build_appimage.sh"