Xcode 14.XX添加Widget扩展后报错:多命令冲突及框架缺失怎么解决?
适配iOS16动态岛Widget扩展的编译错误解决办法
一、解决“Multiple commands produce”错误
这个错误通常源于资源或配置文件重复,按以下步骤排查修复:
- 检查两个Widget Extension的Info.plist,确保它们的
CFBundleIdentifier完全唯一,不能与主工程、已有Widget重复。 - 进入Xcode的Build Phases -> Copy Bundle Resources,逐个核查主工程和两个Widget扩展的资源列表,移除重复添加的文件(比如图片、本地化文件等)。
- 清理Xcode缓存:按下
Cmd+Shift+K清理构建文件夹,再按Cmd+Option+Shift+K清除Derived Data,之后重启Xcode再尝试编译。
二、解决“Framework not found FirebaseCore”错误
这个问题是新Widget Extension未正确引入Firebase依赖导致的,处理方式如下:
更新Podfile配置
打开项目根目录的Podfile,确保新的Widget Extension目标被添加到Pod配置中,示例如下:target 'YourMainApp' do use_frameworks! pod 'Firebase/Core' pod 'Firebase/Crashlytics' # 主工程其他依赖 end target 'ExistingWidget' do use_frameworks! pod 'Firebase/Core' pod 'Firebase/Crashlytics' # 已有Widget的依赖 end target 'DynamicIslandWidget' do use_frameworks! pod 'Firebase/Core' pod 'Firebase/Crashlytics' # 新Widget的依赖 end保存后在终端执行
pod install,让CocoaPods把Firebase框架安装到新Widget目标中。检查Build Settings配置
选中新Widget Extension目标,进入Build Settings:- 找到
Framework Search Paths,确认包含$(inherited)和${PODS_ROOT}/FirebaseCore/Frameworks(CocoaPods通常会自动配置,若缺失手动添加)。 - 找到
Other Linker Flags,确保包含$(inherited),这会自动继承Pods的链接配置。
- 找到
配置Crashlytics脚本(如果用到)
若新Widget需要Crashlytics支持,进入目标的Build Phases,添加Run Script,内容和主工程、已有Widget保持一致:"${PODS_ROOT}/FirebaseCrashlytics/run"同时勾选"Run script only when installing"选项,避免不必要的运行。
内容的提问来源于stack exchange,提问作者rony_y
相关产品推荐
相关产品推荐

