首页 > 解决方案 > 多个命令产生框架问题(与 cocoapod 的使用有关)

问题描述

我有两个框架“GeneralABC”和“GeneralXYZ”。两者的接口相同,但业务逻辑不同。我在 podspec 中将他们的 module_name 定义为 General,因此使用我的框架的其他项目只需要在他们的 Podfile 中定义他们想要使用的通用框架(GeneralABC 或 GeneralXYZ),而无需更改其代码。(即在他们的代码文件中,他们总是可以说 import General)

在我的示例项目中,我有两个目标,每个目标使用不同的通用框架。我的 Podfile 如下:

target 'Example_ABC' do
    pod 'GeneralABC'
end

target 'Example_XYZ' do
     pod 'GeneralXYZ'
end

但是,当我尝试在 xcode 中构建我的目标之一时,我收到以下错误消息

Multiple commands produce '/MYPATH/General.framework':
1) Target 'GeneralABC' has create directory command with output 'MYPATH/General.framework'
2) Target 'GeneralXYZ' has create directory command with output 'MYPATH/General.framework'

Multiple commands produce '/MYPATH/General.framework':
1)Target 'GeneralABC' has link command with output 'MYPATH/General.framework'
2)Target 'GeneralXYZ' has link command with output 'MYPATH/General.framework'

可以通过两种方式解决:

  1. 将工作区设置更改为旧版构建系统。但是我认为这不是未来的解决方案。

  2. 删除 Podfile 中的一个目标,并且pod update每次我们构建目标。但是,对于维护和我们的构建过程来说,它并不是那么好。

是否有任何解决方案可以操纵我的 Podfile,以便我可以解决问题?

我非常感谢任何建议。感谢您的关注!

标签: iosxcodecocoapodspodspecpodfile

解决方案


我找不到我想要的确切解决方案(1 个 pod 文件维护所有目标)。然而,经过与我们的队友的一些讨论。我们提出了另一种解决方案,这样我们就不必担心已弃用的遗留构建系统。

解决方法如下:

创建 2 个 podfile(即 1 个用于目标“Example_ABC”,另一个用于“Example_XYZ”)

创建 2 个工作区文件(即 1 个用于目标“Example_ABC”,另一个用于“Example_XYZ”)

一个迷你 shell 脚本,它链接 Podfile_ABC 或 Podfile_XYZ,什么时候做 pod install/update/deintegrate


推荐阅读