M1芯片Mac下Flutter应用iOS构建失败及签名配置问题求助
首先明确:你看到的两条
AMSupportURLConnectionDelegate/AMSupportURLSession类冲突属于M1芯片搭配Xcode 13及以上版本的通用良性警告,完全不是导致构建失败的根因,不需要在这两个警告上反复排查,真正卡停构建的是最后抛出的provisioning profile缺失的签名错误。你之前尝试的修复操作没有生效,大概率是操作顺序漏了M1环境下的特殊要求,且没有触发Xcode自动签名的核心配置。
可落地修复步骤
1. 清理全链路缓存,解决旧配置残留导致的配置不生效
之前多次修改配置、执行pod install都没生效,首先要清干净所有遗留的编译、依赖、签名缓存,不要带着旧缓存改配置:
- 项目根目录执行命令清理Flutter编译缓存、Xcode派生数据、旧的Pod依赖:
flutter clean rm -rf ~/Library/Developer/Xcode/DerivedData/* rm -rf ios/Pods rm -rf ios/Podfile.lock - 进入
ios目录,注意M1芯片的特殊运行要求,不要直接执行pod install,要在Rosetta转译环境下拉取依赖,避免拉到x86架构的二进制包导致架构冲突:arch -x86_64 pod install --repo-update
2. 修正Runner Target的核心签名配置,解决描述文件匹配失败的问题
你之前把Debug/Release配置下的Code Signing identity设置为"any iOS SDK"没有生效,是因为没有开启自动签名的总开关,单改签名身份在自动签名流程下是无效的:
- 打开项目时一定要选
ios/Runner.xcworkspace文件,不要直接打开.xcodeproj格式的工程文件 - 选中左侧导航栏最顶部的
Runner项目,切换到Signing & Capabilities标签页,选中Runner Target - 勾选
Automatically manage signing选项(这就是报错里提到的“自动签名处于禁用状态”的根因) - 选择自己已经在Xcode中登录的开发者团队(如果没有登录,先在Xcode的Settings -> Accounts页面添加自己的Apple ID,免费个人开发者账号也支持真机调试)
- 检查Bundle Identifier字段:不要直接沿用原有报错里的
juniorsdelivery.juniors-app,换成自己团队下无权限冲突的标识——如果该Bundle ID对应的权限归属其他开发者团队,就算开了自动签名也无法拉取到匹配的描述文件
3. 适配Flutter调用xcodebuild的签名权限,解决跨工具链的构建阻断
Xcode里配置好自动签名还不够,Flutter命令行构建时调用xcodebuild如果没有授权参数,依然会卡在签名环节:
- 首先跑模拟器构建验证基础链路是否正常,模拟器构建不需要真机签名,可快速排除其他问题干扰:
如果该命令能正常完成构建,说明之前的AMS类冲突警告完全不影响App运行,剩下的问题全部集中在真机签名链路flutter build ios --simulator --no-codesign - 真机调试时不需要每次手动给命令传参数,只需要在
ios目录下对应的Debug/Release配置文件(Debug.xcconfig/Release.xcconfig)中补充两行配置:
保存配置后重新执行CODE_SIGN_STYLE = Automatic DEVELOPMENT_TEAM = 你的Apple ID对应的团队IDflutter run,Flutter会自动给xcodebuild传入-allowProvisioningUpdates参数,触发自动签名流程拉取匹配的描述文件。
常见注意事项
- 之前删掉的Runner相关自动生成配置不需要手动恢复,只要开启Xcode的自动签名开关,工具链会自动重新生成所有需要的签名配置
- 只要模拟器构建能正常跑通,就算控制台继续输出AMS开头的类冲突警告也可以直接忽略,该警告是系统框架与私有库重复引入同名类导致的,不会影响App功能和稳定性
- 不要强行将Code Signing identity设置为"any iOS SDK",该设置在自动签名模式下会被自动覆盖,反而会导致签名流程混乱
内容的提问来源于stack exchange,提问作者Andrew Villegas
相关产品推荐
相关产品推荐

