Flutter macOS 一键打包 DMG 指南
1. 准备工具
需要先安装 create-dmg,只需安装一次:
brew install create-dmg
2. 编写一键打包脚本
在 Flutter 项目根目录新建文件 build_dmg.sh,粘贴以下内容:
#!/bin/bash
# 一键构建 Flutter macOS DMG
# 用法:bash build_dmg.sh
# 前置条件:已安装 create-dmg (brew install create-dmg)
set -e
# 从 pubspec.yaml 读取版本号
VERSION=$(grep '^version:' pubspec.yaml | sed 's/version: //' | tr -d '[:space:]')
if [ -z "$VERSION" ]; then
VERSION="1.0.0"
fi
APP_NAME=$(grep '^name:' pubspec.yaml | sed 's/name: //' | tr -d '[:space:]')
if [ -z "$APP_NAME" ]; then
APP_NAME="MyApp"
fi
echo "📦 构建 $APP_NAME v$VERSION"
# 清理并构建 Release
echo "🔧 正在构建 Flutter Release..."
flutter clean
flutter pub get
flutter build macos --release
# 定义路径
BUILD_DIR="build/macos/Build/Products/Release"
APP_PATH="$BUILD_DIR/$APP_NAME.app"
DMG_NAME="${APP_NAME}_${VERSION}.dmg"
# 检查 .app 是否存在
if [ ! -d "$APP_PATH" ]; then
echo "❌ 错误:找不到 $APP_PATH"
echo " 请检查 pubspec.yaml 中的 name 字段是否正确"
exit 1
fi
# 创建 DMG
echo "💿 正在创建 DMG..."
create-dmg \
--volname "$APP_NAME" \
--window-size 700 450 \
--icon-size 100 \
--icon "$APP_NAME.app" 180 220 \
--app-drop-link 520 220 \
--hide-extension "$APP_NAME.app" \
--no-internet-enable \
"$DMG_NAME" \
"$APP_PATH"
echo "✅ 完成!生成:$DMG_NAME"
open -R "$DMG_NAME"
3. 赋予执行权限
chmod +x build_dmg.sh
4. 一键出包
每次要发包时,在项目根目录执行:
bash build_dmg.sh
5. 脚本做了什么
- 自动读取版本号:从
pubspec.yaml的version字段读取版本,找不到时回退为1.0.0 - 自动读取 App 名:从
pubspec.yaml的name字段读取应用名,找不到时回退为MyApp - 构建 Release:依次执行
flutter clean、flutter pub get、flutter build macos --release - 生成 DMG:文件名格式为
你的App名_版本号.dmg,例如my_app_1.0.0.dmg - 窗口布局:经典安装样式——左边 App 图标,右边 /Applications 箭头,用户拖拽即可安装
- 构建完成后:自动在 Finder 中选中生成的 DMG
6. 注意事项
- 未公证警告:这个脚本生成的 DMG 没有经过 Apple 公证,用户首次打开需要右键 → 打开来信任
- 签名与公证:如果以后买了开发者账号,想加上代码签名(
codesign)和公证(notarytool)流程,需要升级脚本 - 仅限 macOS 平台:该脚本只适用于 macOS 桌面端构建,不适用于 iOS / Android
阅读 —
·
全站 —