如何解决iPhone中的“命令/ bin / sh失败,退出代码为1”的问题


92

我在应用程序中使用了可可静态库。编译库时,出现以下错误:

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

屏幕截图错误

我怎样才能解决这个问题?

Answers:


206

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

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


2
该复选框可能在Build Phases→Bundle React Native代码和映像下。
rishat

4
对我来说,这在手机上构建/安装应用程序时有效,而在归档
时却

这个答案是正确的。但是当设置模式Generc iOS设备获取构建信息时...重新获得errr @Harshad
reza_khalafi

@reza_khalafi确保您具有清晰的数据以及删除派生数据。然后再试一次。
Harshad

1
@Harshad Works正在建设但未归档
NGB

63

我遇到了这个问题,因为我拒绝了钥匙串访问,为了解决该问题,您需要打开钥匙串,然后单击屏幕右上角的锁再次将其锁定,之后可以进行归档,它将可以正常工作


3
非常感谢!顺便说一句,至少对我来说,锁在左侧。它是开放的,必须将其关闭。
Eironeia

我从一个我不记得的来源分享了此解决方案。
Salem Binmusaed 18-4-17的

尝试将产品归档时,我得到退出代码134,但是我可以将应用安装到设备上,我已经打开了钥匙串,但是在任何地方都可以找到锁,我的Xcode 9.2版确实需要帮助
showmyroutes

42

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

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


1
您所指的是什么Xcode版本?...我没有您所指的Xcode 6.2菜单/窗口或选项
CthulhuJon 2015年

2
它在
Windows-

它可以工作,但需要清理项目并为我重新启动Xcode
Hosny

1
文件->工作区设置...->派生数据。单击路径末尾的箭头。右键单击文件夹,然后移至回收站。iOS 10.12.6
奥古斯塔斯(

30

似乎您正在运行Shell脚本,但找不到您的特定文件。查看Target -> Build-Phases -> RunScript您是否正在运行脚本。

您可以检查脚本是否在构建输出中运行(在导航器面板中)。如果脚本执行错误,则构建阶段将停止。


SKM我已经编辑了我的答案。也许是Xcode谁创建了此脚本以查找您的静态库。顺便说一下,由于无法在/Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/libSCXMLParser.a找到文件,因此无法编译。因此,请一定要包括有
卓悦先生

19

我有同样的问题解决了。使用以下步骤解决Xcode 6.4中的问题

  1. 点击查看项目导航导航窗口
  2. 现在在导航器窗口正下方选择项目
  3. 选择目标
  4. 选择构建阶段选项卡
  5. 打开运行脚本下拉选项
  6. 选择仅在安装时运行脚本复选框

步骤的屏幕截图

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


这应该是公认的答案。对于有问题的bin / sh,这就是解决方案。
Yash Bedi

9

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


3

1)删除pod文件夹和.xcworkspace文件2)在终端中打开文件夹3)键入“ pod install”


1

您是否已将.a库添加到xcode projet中?(项目->构建阶段->与库链接二进制文件->单击'+'->单击'添加其他'->选择您的库)

也许该库与模拟器不兼容,您是否尝试为iDevice(非模拟器)进行编译?

(我已经在解决第二个问题,我得到了一个库,该库不能与模拟器一起使用,但是可以编译的真实设备...)


1

对我来说,我的证书已过期。我创建了一个新证书。


0

我尝试重新启动Xcode(7),但没有执行任何操作(您是否尝试过将其关闭并重新打开 iOS开发的方法:-))。然后,我尝试通过重新启动我的盒子来解决问题。

就我而言,将文件从一个位置复制到另一个位置时,脚本失败。我认为这可能与Finder拧紧某些文件夹的写权限有关。


0

对我来说,发生此错误是因为当我从源代码树中提取代码时,我将版本号从1更改为1.0,将内部版本号从6更改为1.1。我只是将其改回,并将内部版本号从6更改为7,所以效果很好。


0

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


0

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

这样,如果命令有任何问题,它将不会停止您的xcode构建

就我而言,我只是运行一条命令,以从连接的iphone卸载该应用程序的先前副本,因此如果iphone不在那里,则可能会出现错误。解决方法:

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



0

我做了以上所有工作,花了一个小时解决这个问题。

尝试了以上所有内容,然后重新启动了Xcode。

最后,重新启动计算机,一切恢复正常!


1
您还没有为答案添加任何内容。重新启动计算机可能是一种评论,因为它无助于解释问题所在。
Bojan Petkovic

一些奇怪的问题,删除了派生数据并切换了/未切换了新的构建系统。但是重启后我还好!
Oritm '18年

0

我将列出的事情,我这样做,并没有为我工作,最后什么也

首先,仅在安装时无法接受运行脚本的答案。

删除派生数据无效。

什么工作的:

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

  2. 新复制文件阶段

  3. 将所选框架拖放到放置目标中

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

归功于Kevin Le的Medium post


0

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

Xcode(或您正在使用的任何工具,例如命令行工具)必须能够使用钥匙串中的证书/密钥。为此,打开钥匙串,找到要使用的证书(通常在login钥匙串上My Certificates),右键单击该钥匙,选择Get Info,单击Access Control选项卡,然后将应用添加到列表中。

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

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

还要检查证书没有过期。


0

1)选项: 请仅在安装时检查运行脚本……正确回答此问题

2)选项:pod更新,清除派生数据,


0

就我而言,其中一个脚本(与有关SwiftGen)在编译期间失败。

我解决了此问题,方法是删除Pods,然后再次更新。

  1. 删除Pods目录下的有问题的pod 或使用pod deintegrate
  2. 使用pod install或安装/更新广告连播pod update

PS可能您的依赖项是Global,而不是在pod中。在这种情况下,您也可以尝试重新安装该依赖项。


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解决了这个存档问题。我仍然习惯于自动启用Crashlytics的Fabric。一旦在Firebase控制台中为相应的GoogleService-Info.plist启用了Crashlytics,我就可以进行存档而不会出现此错误。


-1

卸下所有吊舱,然后重新安装。

脚步:

  1. 评论所有豆荚并运行 pod install
  2. 取消注释所有吊舱并运行 pod install
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.