Flutter iOS真机安装失败:提示未找到代码签名(No code signature found)
Flutter iOS真机安装失败:提示未找到代码签名(No code signature found)
我太懂你被这个问题卡好几天的抓狂感了——模拟器跑的好好的,一到真机就栽在签名上,还是个grpcpp.framework的无签名错误,手动加嵌入还会重复,确实闹心。咱们从根源入手,一步步解决:
核心问题分析
这个错误的本质是grpcpp.framework没有被正确签名,而且你手动添加「Embed and Sign」时触发重复签名,说明CocoaPods和Xcode的嵌入/签名配置冲突了——CocoaPods已经在管理这个框架的嵌入,手动操作反而打乱了规则。
针对性解决方案
1. 修复Podfile的签名配置(最关键)
你的Podfile目前的post_install钩子只做了基础的Flutter配置,我们需要给grpcpp相关的Pod单独加签名规则,避免冲突。修改你的Podfile的post_install块:
post_install do |installer| installer.pods_project.targets.each do |target| # 专门处理gRPC-C++/grpcpp的签名和嵌入逻辑 if target.name == 'gRPC-C++' || target.name == 'grpcpp' target.build_configurations.each do |config| # 禁止Pod自己处理签名,交给Xcode统一管理 config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO' # 确保框架能被正确识别为可嵌入的二进制 config.build_settings['EMBEDDED_CONTENT_CONTAINS_SWIFT'] = 'YES' end end flutter_additional_ios_build_settings(target) end end
修改完Podfile后,执行以下清理&重建步骤:
- 删掉项目根目录下的
Podfile.lock、Pods文件夹 - 执行
flutter clean清空Flutter缓存 - 执行
pod install重新安装依赖 - 关闭Xcode,重新打开
Runner.xcworkspace(注意是xcworkspace不是xcodeproj)
2. 修正Xcode的框架嵌入设置
之前手动添加grpcpp.framework导致重复嵌入,现在要改回来:
- 在Xcode里打开Runner项目,切换到「General」标签
- 找到「Frameworks, Libraries, and Embedded Content」区域
- 如果里面有
grpcpp.framework,把它的「Embed」选项改成Do Not Embed(因为CocoaPods已经会自动处理嵌入了,手动加会重复) - 确认其他依赖框架的Embed选项都是CocoaPods默认设置的,不要手动调整
3. 重置Xcode签名缓存
自动签名偶尔会抽风,重置一下:
- 切换到「Signing & Capabilities」标签
- 先关掉「Automatically manage signing」,等几秒再重新打开
- 确认你的开发Team已经正确选中,Bundle Identifier是唯一的(不要和别人重复)
- 按下
Command+Shift+K清理项目,再重新Build
4. 升级依赖版本(兜底方案)
如果上面的方法都不管用,可能是Flutter或CocoaPods版本兼容性问题:
- 执行
flutter upgrade升级到最新稳定版Flutter - 执行
sudo gem install cocoapods升级到最新版CocoaPods - 再重复步骤1的清理&重建流程
验证步骤
做完上面的操作后,先不要急着直接Run:
- 在Xcode里选中你的真机设备
- 点击菜单栏「Product」→「Build For」→「Running」,确认Build成功
- 再点击「Product」→「Run」,应该就能正常安装到真机了
内容来源于stack exchange
相关产品推荐
相关产品推荐

