You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter终端构建macOS应用时CodeSign失败问题咨询

Flutter终端构建macOS应用签名失败,但XCode构建成功

问题详情

执行终端命令构建Flutter macOS应用:

flutter run -d macOS

构建失败,添加--verbose参数后相关日志如下:

[ +166 ms] CodeSign [项目目录]/build/macos/Build/Products/Debug/mail_app.app (in target 'Runner' from project 'Runner')
[ ] cd [项目目录]/macos
[ ] Signing Identity: "-"
[ ] /usr/bin/codesign --force --sign - --entitlements
[项目目录]/build/macos/Build/Intermediates.noindex/Runner.build/Debug/Runner.build/mail_app.app.xcent --timestamp=none --generate-entitlement-der
[项目目录]/build/macos/Build/Products/Debug/mail_app.app
[ +23 ms] [项目目录]/build/macos/Build/Products/Debug/mail_app.app: code object is not signed at all
[ ] In subcomponent: [项目目录]/build/macos/Build/Products/Debug/mail_app.app/Contents/Frameworks/App.framework
[ ] Command CodeSign failed with a nonzero exit code
[ +10 ms] ** BUILD FAILED **
[ ] The following build commands failed:
[ ] CodeSign [项目目录]/build/macos/Build/Products/Debug/mail_app.app (in target 'Runner' from project 'Runner')
[ ] (1 failure)

版本信息

  • Flutter:
    Flutter 3.10.3 • channel stable • ssh://git@github.com/flutter/flutter.git
    Framework • revision f92f44110e (4天前) • 2023-06-01 18:17:33 -0500
    Engine • revision 2a3401c9bb
    Tools • Dart 3.0.3 • DevTools 2.23.1
    
  • macOS: Ventura 13.4
  • XCode: 14.3.1

已完成操作

通过XCode打开[项目目录]/macos/Runner.xcworkspace可成功构建,XCode的Signing & Capabilites设置:

  • Automatically manage signing: 已勾选
  • Team: (我的名字) (Personal Team)
  • Provisioning Profile: Not Required
  • Signing Certificate: Sign to Run Locally
    本地存在有效签名证书,但终端构建仍失败。

解决方案

1. 终端构建时指定签名身份

直接在构建命令中传入签名相关参数,替换成你自己的签名身份和Team ID(可从XCode的Signing配置中复制):

flutter run -d macOS --dart-define=CODE_SIGN_IDENTITY="Apple Development: 你的名字 (XXXXXX)" --dart-define=DEVELOPMENT_TEAM=XXXXXX

2. 清理构建缓存后重试

清理Flutter和CocoaPods的缓存,重新构建:

flutter clean
cd macos
pod deintegrate
pod install
cd ..
flutter run -d macOS

3. 修改Podfile强制签名配置

编辑macos/Podfile,在post_install块中添加签名配置,确保子框架也能正确签名:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_macos_build_settings(target)
    # 配置签名参数
    target.build_configurations.each do |config|
      config.build_settings['CODE_SIGN_IDENTITY'] = 'Apple Development: 你的名字 (XXXXXX)'
      config.build_settings['DEVELOPMENT_TEAM'] = 'XXXXXX'
      config.build_settings['CODE_SIGN_STYLE'] = 'Manual'
    end
  end
end

修改后执行cd macos && pod install,再回到项目根目录执行flutter run -d macOS。

4. 手动签名子框架

先手动给App.framework签名,再执行构建:

codesign --force --sign "Apple Development: 你的名字 (XXXXXX)" [项目目录]/build/macos/Build/Products/Debug/mail_app.app/Contents/Frameworks/App.framework
flutter run -d macOS

问题原因

终端执行flutter run时,Flutter默认的构建配置未正确读取XCode的自动签名设置,采用了无签名(--sign -)的方式,但子组件App.framework需要有效的签名才能通过系统验证。而XCode构建时会自动处理所有子组件的签名流程,因此XCode能成功构建。

内容的提问来源于stack exchange,提问作者Shinnosuke Ono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:42:17