如何解决 iPhone 中出现的“Command /bin/sh failed with exit code 1”问题

94

我在我的应用程序中使用了一个cocoa静态库。当我编译我的库时,我遇到了以下错误:

Shell Script invocation error:can't open input file:
/Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-
    bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/
    libSCXMLParser.a (No such file or directory)
Command /bin/sh failed with exit code 1

错误截图

我该如何修复这个问题?

21个回答

212

目标 -> 构建阶段 -> 更新示例

如果未选中,请单击“运行”复选框。


3
勾选框可能位于“Build Phases”(构建阶段)→“Bundle React Native code and images”(打包 React Native 代码和图像)下方。 - rishat
4
对我来说,这在手机上构建/安装应用程序时有效,但在打包时无效。 - Adeem
@reza_khalafi 确保您拥有清晰的数据并删除派生数据。然后再试一次。 - Harshad
1
@Harshad 在构建时可行,但归档时无法工作。 - NGB
我甚至没有像上面图片中那样的更新示例菜单。 - Rajeshwar
显示剩余2条评论

64

我遇到了这个问题,因为我拒绝了钥匙串的访问权限。为了解决这个问题,您需要打开钥匙串,然后点击屏幕右上角的锁以再次锁定它,之后您就可以进行存档操作并且它会正常工作。


3
非常感谢!顺便说一下,至少对我来说锁在左边。它是开着的,必须关闭它。 - Eironeia
我分享了这个解决方案,但不幸的是我不记得来源了。 - Salem Binmusaed
当我尝试将产品归档时,我收到了退出码134,但我可以将应用程序安装到设备上。我已经打开了钥匙链,但却找不到锁的位置。我的Xcode版本是9.2,真的需要帮助。 - showmyroutes

43

删除“派生数据”对我有用。

在Xcode中,转到 文件 > 工作区设置 > 单击“派生数据”文件路径旁边的箭头 > 将“派生数据”文件夹移动到垃圾桶中。


1
你指的是哪个Xcode版本?我在Xcode 6.2中没有你所提到的菜单/窗口或选项。 - CthulhuJon
2
它在Windows->组织者中,而不是Windows项目中。 - CthulhuJon
它可以工作,但需要清理项目并重新启动Xcode。 - Hosny
1
文件->工作空间设置...->派生数据。在路径末尾点击箭头。右键单击文件夹并移至回收站。iOS 10.12.6 - Augustas

30

看起来你正在运行一个shell脚本,但它找不到你指定的文件。如果你正在运行脚本,请查看 目标->构建阶段->运行脚本

你可以在构建输出中检查脚本是否正在运行(在导航面板中)。如果你的脚本有问题,构建阶段将停止。


SKM我已经修改了我的回答。也许是Xcode创建了这个脚本来查找你的静态库。顺便说一句,它无法编译,因为它找不到文件/Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/libSCXMLParser.a。所以确保将其包含在那里。 - Mr Bonjour

20

我曾遇到相同的问题,并解决了它。使用以下步骤来解决在 Xcode 6.4 中的问题。

  1. 导航窗口 (Navigator window) 中点击 Show project navigator
  2. 现在,在导航窗口下方立即选择 项目 (Select project)
  3. 选择 Targets
  4. 选择 Build Phases 选项卡
  5. 打开 Run Script 下拉选项
  6. 选择 只有在安装时运行脚本 (Run script only when installing) 复选框

操作截图

现在,清除您的项目(cmd+shift+k)并构建您的项目。


这应该是被接受的答案。对于一个bin/sh问题,这就是解决方案。 - Yash Bedi

9
清理构建文件夹 (Cmd + Shift + Alt + K) 对我有效。

3

1)删除 pod 文件夹和 .xcworkspace 文件 2)在终端中打开该文件夹 3)输入 "pod install" 命令


1
在我的情况下,路径中有空格导致脚本失败。如果您使用像$PROJECT_DIR$TARGET_BUILD_DIR这样的变量,则将它们分别替换为"$PROJECT_DIR""$TARGET_BUILD_DIR"。添加引号后,我的脚本成功运行。

在我的情况下,我的文件夹名称中有空格和大写字母。我删除了所有的空格和大写字母,现在它可以正常工作。+1 - Ajoy Karmakar

1

你是否将.a库添加到Xcode项目中?(项目 -> 构建阶段 -> 链接二进制文件库 -> 点击“+” -> 点击“添加其他” -> 选择你的库)

也许该库与模拟器不兼容,你尝试编译iDevice(而非模拟器)了吗?

(我已经遇到过第二个问题,我有一个在模拟器上无法工作但在真实设备上可以编译的库...)


1
我已经按照上述步骤尝试了一切,并花费了一个小时来解决这个问题。
尝试了以上所有方法,以及重新启动Xcode。
最终,重新启动电脑,一切恢复正常!

1
重新启动计算机只是一条注释,它并不能帮助解释出现了什么问题。 - Bojan Petkovic
有些奇怪的问题,删除了派生数据并切换/取消切换新的构建系统。但是重启后一切都好了! - Oritm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接