错误:无法在Xcode Build中产生进程(参数列表过长)

Fal*_*uni 6 xcode compile-time swift

我收到此错误:

“错误:无法生成进程(参数列表过长)

**归档失败**

以下构建命令失败:CompileSwiftSources正常arm64 com.apple.xcode.tools.swift.compiler(1个失败)

退出代码= 65“

我通过以下链接: Xcode导出本地化引发错误“参数列表过长”

本文为指出减少路径层次结构的问题提供了一个很好的临时解决方案。但这似乎不是适当的方法。谁能为我提供不同的方法来解决这个问题?

屏幕截图已添加

bla*_*zku 14

就我而言,它是关于 .xcconfig 文件中的自定义配置。我的配置文件包括 Pods 配置,如:

// Development.xcconfig

#include "Pods/Target Support Files/Pods-MyProject/Pods-MyProject.debug (development).xcconfig"
#include "Pods/Target Support Files/Pods-MyProjectTests/Pods-MyProjectTests.debug (development).xcconfig"

#include "Pods/Target Support Files/Pods-MyProject/Pods-MyProject.release (development).xcconfig"
#include "Pods/Target Support Files/Pods-MyProjectTests/Pods-MyProjectTests.release (development).xcconfig"
Run Code Online (Sandbox Code Playgroud)
// Production.xcconfig

#include "Pods/Target Support Files/Pods-MyProject/Pods-MyProject.debug (production).xcconfig"
#include "Pods/Target Support Files/Pods-MyProjectTests/Pods-MyProjectTests.debug (production).xcconfig"

#include "Pods/Target Support Files/Pods-MyProject/Pods-MyProject.release (production).xcconfig"
#include "Pods/Target Support Files/Pods-MyProjectTests/Pods-MyProjectTests.release (production).xcconfig"
Run Code Online (Sandbox Code Playgroud)

当我将 Firebase pod 添加到我的 Podfile 中时,这产生了您提到的错误。

所以要再次编译,我必须:

  1. 删除所有包含 (#include ...)
  2. Project -> Info -> Configuration 中明确设置它们,如下所示:

解决方案

小建议:

如果您不想手动设置相应的目标配置(带有红色图标的配置),请将它们标记为None并运行pod install。这将自动为您更改。 小建议

  • 这为我解决了这个问题。我在 Cocoapods 中使用自定义 xcconfig 文件并遇到了这个问题。 (2认同)
  • 太感谢了!这对我有用,我很长时间以来一直在试图找出问题所在,同时我正在使用旧版构建系统...如果您在 cocoapods 中使用自定义 xcconfig 文件,这绝对是答案 (2认同)

Vla*_*nko 7

几天前,我面临着类似的挑战。我想提供详细信息并与SO社区分享我的研究。

首先,我找到了该线程,并按照提出的问题中的链接进行操作。
是的,没错,链接中标记的答案是正确的,但是该问题的解决方案不适合我。

问题

就我而言,当我更改项目中的文件夹层次结构以使其更方便且更适合我时,我遇到了这个问题。
@oOEric选项不适合我,因为根据规则,Xcode中组的层次结构应与系统中文件夹的层次结构一致。
但是我已经有大约1680个swift文件可以编译。

问题是我到编译文件的路径太长,并且它们的数量太大。

研究

然后,我开始研究,发现带有相同错误的快速jira。这里有一些链接:

  1. 主要
  2. 关联的问题1
  3. 关联问题2
  4. 关联问题3
  5. 打开雷达的错误

但是在这里我找不到适合我的解决方案。

最令我高兴的是,开发人员的迅速反应。

同样,这是Xcode方面的问题,而不是Swift方面的问题。在这里发表评论不会使Xcode工程师的工作更快!(苹果公司的人不尽相同。)

Okey,在得到这个答案之后,我终于确信,如果这是一个Xcode错误,那么应该在Xcode中寻求解决方案。

解决方案

  1. 临时解决方案

您需要将项目在系统层次结构中上移。

我选择这个是因为我有一个非常大的项目,而使用其他解决方案则需要一天以上的时间。

就我而言,我进行了一个实验,计算得出项目路径的长度应不超过50个字符。

但这是一个临时解决方案。如果您的项目进一步发展,则必须缩短路径或使用其他解决方案。

  1. 可可触控框架目标

此解决方案适用于不使用依赖项的文件。

首先,您需要将Cocoa Touch Framework添加为主要项目的目标。

在此处输入图片说明

该目标应自动添加到“ 嵌入式二进制文件”和“ 链接框架和库”中。

之后,您需要找到一些没有依赖性的文件,并将目标成员资格更改为“ TestTarget”。

在此处输入图片说明

不要忘记可可触摸框架中的类,属性,方法,枚举,协议应具有开放或公共访问权限。

并且不要忘记清理您的DerivedData文件夹。

  1. 模块化iOS

此解决方案具有更集成的方法。

如果要在Cocoa Touch框架中使用任何依赖项,则应转到本指南并为大型项目进行更复杂的重构!

链接到解决方案

我认为这是最好的解决方案。

我希望这个大答案能对某人有所帮助!


oOE*_*ric 2

我通过减少 Xcode 中组的层次结构解决了这个问题。

例如,原始文件位于project_name/project_name/About/Model/Text 我删除了组“Model”、“Text”并将文件移动到project_name/project_name/About/下