Flutter macOS 一键打包 DMG 指南

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
阅读 — · 全站 —
🎸 我的歌单 0 首