感谢Stephanie老哥,我贴一下答案吧。 最后发现是由于podfile中多个target都有 pod 'LBFoundation', :path => './Specs/foundation' 例如我有个主工程 project1, 同时有两个target 'NotificationService'和'project1WidgetExtension'。主工程依赖这两个target。 cocoapods在install LBFoundation时会生成两个target, 'LBFoundation.common'和'LBFoundation.common-Service'. 这可能是由于依赖的两个工程里只引用了LBFoundation中的某个部分,比如LBFoundation/Service有关。 所以install的时候会生成两个不一样的target, 然后archive时两个target又都会生成LBFoundation.framework导致冲突(这个不清楚内部逻辑,感觉是这样) 解决方案是再单独pod一下LBFoundation/Service,最终podfile如下(隐藏了无关信息): ``` c++ source 'https://github.com/CocoaPods/Specs.git' platform :ios, "12.0" inhibit_all_warnings! def private_develop_share_pods # 省略 pod 'LBFoundation', :path => './Specs/foundation' pod 'LBFoundation/Service', :path => './Specs/foundation' # 省略 end target 'project1' do project 'project1.xcodeproj' use_frameworks! private_develop_share_pods # 省略 end target 'NotificationService' do project 'project1.xcodeproj' use_frameworks! private_develop_share_pods # 省略 end target 'project1WidgetExtension' do project 'project1.xcodeproj' use_frameworks! private_develop_share_pods # 省略 end ``` # 省略 这个模块具体看你库里用的什么模块,我看github上也有老哥是这样解决的。 然后再pod install,就可以看到pods下只剩下一个LBFoundation的target了。此时archive就不会报Multiple commands produce的错误了