如何解决 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个回答

1

我的证书已过期。我已创建了一个新的证书。


0
对我来说,这个错误发生是因为当我从源代码树中拉取代码时,我将版本号从1更改为1.0,并将构建号从6更改为1.1。我只需要将它改回来,并将构建号从6更改为7,就可以正常工作了。

0

只需将您的脚本放入文件中,并在命令行末尾加上2>/dev/null运行该文件!

这样,如果命令出现任何问题,它都不会停止您的Xcode构建。

在我的情况下,我只是运行一个命令从连接的iPhone卸载我的应用程序的先前副本,因此如果iPhone不存在,则可能会出现错误。为了解决这个问题:

$mobiledevice uninstall_app com.my.app 2>/dev/null


0

我尝试重新启动Xcode(7),但没有用(对我来说,这就像iOS开发中的“你尝试关闭并重新打开它”:-))。然后我尝试重新启动我的电脑,那样就可以了。

在我的情况下,当将文件从一个位置复制到另一个位置时,脚本失败了。我认为这可能与Finder在某些文件夹上搞乱了写入权限有关。


0

我将列出我尝试过但没有成功的事情,最后是成功的方法。

首先,接受答案“仅在安装时运行脚本”不起作用。

删除派生数据也不起作用。

成功的方法如下:

  1. 我在“编译阶段”中添加了一个新的构建阶段

  2. 新的“复制文件阶段”

  3. 将所选框架拖放到目标区域

  4. 将“目标”设置为“框架”

感谢Kevin Le的Medium文章给予的帮助。


0

对我有效的唯一方法:

1)使用CleanMyMac删除派生数据:系统垃圾 -> Xcode垃圾 -> Xcode派生数据

使用CleanMyMac删除派生数据

2)然后在Xcode中:产品 -> 清除


0

对于那些不想取消选项的人(例如使用cocoapods),问题可能出在证书/密钥上。

Xcode(或者你正在使用的任何工具,比如命令行工具)需要能够从钥匙串中使用证书/密钥。为此,请打开钥匙串,找到您要使用的证书(通常在登录钥匙串、我的证书上),右键单击该密钥,选择获取信息,点击访问控制选项卡并将应用程序添加到列表中。

如果这样做不起作用,请尝试解锁钥匙串。

另一个选择是选择允许所有应用程序访问此项目而不是特定的应用程序和/或将证书/密钥移动到系统钥匙串中,该钥匙串在该Mac上的所有用户帐户之间共享。

还要检查证书是否过期。


0
在我的情况下,编译过程中有一个与 SwiftGen 相关的脚本出现了错误。
我通过移除 Pods 然后再次更新它们来解决了这个问题。
步骤如下:
1. 在 Pods 目录下移除有问题的 pod,或者使用 pod deintegrate 命令。 2. 使用 pod install 或者 pod update 命令安装/更新 pods。
附注:可能你的依赖不属于 pods 范围而是全局的。在这种情况下,你也可以尝试重新安装该依赖。

0

如果您使用Crashlytics并遇到以下问题,请阅读此内容...

我遇到了与上述相同的问题Command /bin/sh failed with exit code 1,更具体地说是[31merror: Could not fetch upload-symbols settings: An unknown error occurred fetching settings.[0m

第一个解决方案(仅在安装时启用运行脚本)使我能够在模拟器中构建我的目标,但我无法归档我的构建。

我通过在Firebase上启用Crashlytics来解决存档问题。我仍然习惯于Fabric,在那里Crashlytics会自动启用。一旦我在firebase控制台上为相应的GoogleService-Info.plist启用了Crashlytics,我就能够在没有此错误的情况下进行存档。


0

1) 选项: 请检查只有在安装时运行脚本......这是问题的正确答案

2) 选项: pod update, clean derive data,


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