无需互联网!LocalSend macOS DMG安装器制作全攻略
你是否在为开源项目打包macOS应用时遭遇过流程繁琐、依赖复杂的问题?本文将以LocalSend项目为例,详解如何从零构建安全可靠的DMG安装器,全程无需互联网连接,完美适配离线开发环境。读完本文你将掌握:应用编译、代码签名、DMG制作、苹果公证全流程,以及本地化资源配置技巧。
准备工作与环境配置
在开始打包前需确保系统已安装:
- Xcode Command Line Tools
- Flutter SDK(推荐使用FVM版本管理)
- create-dmg工具(可通过
brew install create-dmg安装)
项目核心配置文件:
- 应用版本定义:pubspec.yaml
- macOS构建配置:app/macos/Runner.xcodeproj/project.pbxproj
- 打包脚本入口:scripts/compile_mac_dmg.sh
应用编译流程解析
Flutter项目构建步骤
# 清理构建缓存
fvm flutter clean
# 安装依赖包
fvm flutter pub get
# 编译Release版本应用
fvm flutter build macos
编译产物路径:app/build/macos/Build/Products/Release/LocalSend.app
代码签名配置
项目采用Apple Developer ID签名机制,关键配置如下:
SIGN_ID="Developer ID Application: Tien Do Nam (3W7H4PYMCV)"
codesign --deep --force --verbose --options runtime \
--entitlements macos/Runner/Release.entitlements \
--sign "$SIGN_ID" build/macos/Build/Products/Release/LocalSend.app
签名权限配置文件:app/macos/Runner/Release.entitlements
DMG安装器制作详解
定制化DMG布局设计
LocalSend采用自定义背景图片和图标排列,实现专业级安装界面:
核心布局参数(位于scripts/compile_mac_dmg.sh第22-30行):
create-dmg \
--volname "LocalSend" \
--window-size 500 300 \
--background "../scripts/dmg/background.png" \
--icon LocalSend.app 130 110 \
--app-drop-link 360 110 \
LocalSend.dmg \
build/macos/Build/Products/Release/LocalSend.app
DMG制作参数说明
| 参数 | 作用 | 推荐值 |
|---|---|---|
| --volname | 磁盘卷标名称 | LocalSend |
| --window-size | 窗口尺寸(宽×高) | 500 300 |
| --icon | 应用图标位置 | 130 110 |
| --app-drop-link | 拖拽安装区域 | 360 110 |
苹果公证与分发流程
自动化公证实现
项目集成苹果NotaryTool工具链,实现一键公证:
xcrun notarytool submit LocalSend.dmg \
--wait \
--apple-id $DEV_EMAIL \
--password "$APP_PASSWORD" \
--team-id "$TEAM_ID"
公证结果处理
公证完成后需执行stapler命令附加票据:
xcrun stapler staple LocalSend.dmg
最终产物校验:
- 公证状态查询:
xcrun stapler validate LocalSend.dmg - 签名信息查看:
codesign -dv --verbose=4 LocalSend.dmg
常见问题解决方案
签名失败排查路径
- 检查钥匙串中是否安装对应Developer ID证书
- 验证 entitlements 文件权限配置
- 确认应用沙箱设置:app/macos/Runner/DebugProfile.entitlements
DMG体积优化技巧
- 清理构建产物:
rm -rf app/build/macos - 移除调试符号:在Xcode构建设置中设置
STRIP_INSTALLED_PRODUCT=YES - 压缩资源文件:使用app/util/file_size_helper.dart中的压缩算法
本地化资源配置
多语言支持文件位于:app/assets/i18n/,包含30+种语言翻译。DMG安装器会自动读取系统语言设置,展示对应语言的欢迎界面。
推荐使用项目提供的翻译校验工具:
dart run scripts/contributions_digester.dart
总结与后续优化
通过本文介绍的流程,你已掌握LocalSend macOS应用从编译到分发的全链路能力。建议后续关注:
- 自动化构建:集成GitHub Actions实现CI/CD
- 签名密钥管理:使用苹果钥匙串加密存储证书
- 体积优化:采用core/src/util/compress.rs中的LZMA压缩算法
完整打包脚本已开源,欢迎社区贡献优化方案:scripts/compile_mac_dmg.sh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




