关于Xcode本地化流程,我有一个非常好奇的错误。我会尝试尽可能多地分享细节。
从Xcode,我正在尝试导出一个XLIFF文件,通过“编辑器>导出本地化”发送给我们的翻译人员。但是,这会立即引发错误消息:
The operation couldn't be completed. Argument list too long
这确实令人困惑,因为我无法在任何地方找到更详细的日志(我已经尝试过检查我的Console.app)。所以,我花了很多时间在Google上搜索 - 无济于事。我找不到像这样的类似案例。错误本身只在我尝试导出本地化时才会发生。我可以很好地构建和运行应用程序。
~ $ xcodebuild -version
Xcode 8.2
Build version 8C38
~ $ xcode-select -version
xcode-select version 2347.
~ $ echo $PATH
/Users/david.christiandy/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/david.christiandy/arctools/arcanist/bin:/usr/local/go/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
xcodebuild -exportLocalizations
运行本地化流程时也是如此。xcodebuild
命令)。不知何故,它正在发挥作用。为了记录,我使用的Bitrise CI与我的系统具有相同的堆栈(Xcode 8.2.x,macOS 10.12)我不知道为什么CI可以很好地运行导出过程,我不知道什么时候它可能突然停止运行(就像我们的本地机器一样)。
感谢您对此事的任何帮助。谢谢!
答案 0 :(得分:4)
我也在Apple开发者论坛上问了这个问题,这里是链接:https://forums.developer.apple.com/thread/86762
“参数列表太长”听起来像
E2BIG
,当您尝试使用巨大的参数列表运行子进程时我会得到(我相信当前限制为256 KiB)。我怀疑导出本地化正在运行某种命令行工具来完成这项工作(可能是extractLocStrings
工具,你会发现它潜伏在Xcode的应用程序包中)并将其传递完整项目中每个文件的路径。根据您拥有的文件数量以及这些路径的长度,很容易遇到这样的问题。关于此类错误的“有趣”事情之一是它们取决于您放置项目的位置。如果项目位于主目录的顶部,则可能会有效,但如果它嵌套在子目录中,则会失败。 这也暗示了一种潜在的解决方法,即在项目层次结构中进一步提升项目。
最后,你绝对应该提出一个关于此的错误。我相信我们之前已经看到了这个问题(
r. 30703294
),但是您的报告将有助于强化这会给开发人员带来问题。请发布您的错误号,仅供记录。
几天前,在我读到这个答案之前,我设法通过Xcode删除一些文件夹(仅删除引用)来实现导出工作。最初我怀疑我删除的文件夹中的格式无效,但是当我尝试删除其他文件夹时,导出过程运行正常。
我也尝试使用Xcode 9导出字符串,但我没有遇到问题。所以希望这个bug只适用于Xcode 8.3.3及更低版本。