【问题标题】:how to fix the issue "Command /bin/sh failed with exit code 1" in iphone如何解决 iPhone 中的“Command /bin/sh failed with exit code 1”问题
【发布时间】:2012-10-11 23:16:14
【问题描述】:

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

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

我该如何解决这个问题?

【问题讨论】:

    标签: iphone shell ios6 xcode4.5 build-error


    【解决方案1】:

    如果您使用 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,我就能够存档而不会出现此错误。

    【讨论】:

      【解决方案2】:

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

      我通过删除 Pods 然后再次更新它们来解决此问题。

      1. 删除Pods目录下有问题的pod或者使用pod deintegrate
      2. 使用pod installpod update 安装/更新pod

      附:您的依赖项可能是全局的并且不在 pod 中。在这种情况下,您也可以尝试重新安装该依赖项。

      【讨论】:

        【解决方案3】:

        1) 选项:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

            • 你指的是什么 Xcode 版本?...我没有你在 Xcode 6.2 中提到的菜单/窗口或选项
            • 它在 windows->Organizer 不是 Windows 项目
            • 它可以工作,但需要为我清理项目并重新启动 Xcode
            • 文件->工作区设置...->派生数据。单击路径末尾的箭头。右键单击文件夹并移至垃圾箱。 iOS 10.12.6
            【解决方案6】:

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

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

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

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

            还要检查证书是否过期。

            【讨论】:

              【解决方案7】:

              我遇到了这个问题,因为我拒绝了钥匙串访问,为了解决这个问题,您需要打开钥匙串, 然后点击屏幕右上角的锁再次锁定, 之后你可以存档,它会工作

              【讨论】:

              • 非常感谢!顺便说一句,至少对我来说,锁在左侧。它是打开的,必须关闭它。
              • 我从一个我不记得的来源分享了这个解决方案。
              • 我在尝试存档产品时收到退出代码 134,但我可以将应用程序安装到设备上,我已经打开了钥匙串,但是你能在任何地方找到锁吗,我的 Xcode 版本 9.2,真的需要帮助
              【解决方案8】:

              我会列出我做过的对我不起作用的事情,最后是做了什么

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

              删除派生数据无效。

              什么起作用了:

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

              2. 新建复制文件阶段

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

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

              归功于Kevin Le's Medium post

              【讨论】:

                【解决方案9】:

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

                尝试了上述所有方法并重新启动了 Xcode。

                终于,重启电脑,一切又正常了!

                【讨论】:

                • 你没有在这篇文章中添加任何答案。重新启动计算机可以是注释,因为它无助于解释问题所在。
                • 一些奇怪的问题,删除了派生数据和切换/未切换的新构建系统。但是重启后我就没事了!
                【解决方案10】:

                删除所有 pod 并重新安装。

                步骤:

                1. 评论所有 pod 并运行 pod install
                2. 取消注释所有 pod 并运行 pod install

                【讨论】:

                  【解决方案11】:

                  唯一对我有用的东西:

                  1) 使用 CleanMyMac 删除派生数据:System Junk -> Xcode Junk -> Xcode Derived Data

                  Deleting Derived Data with CleanMyMac

                  2) 然后在 Xcode 中:Product -> Clean

                  【讨论】:

                    【解决方案12】:

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

                    【讨论】:

                      【解决方案13】:

                      只需将您的脚本放在一个文件中,然后在命令行末尾使用 2>/dev/null 运行该文件!

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

                      在我的情况下,我只是运行一个命令来从连接的 iphone 上卸载我以前的应用程序副本,因此如果 iphone 不存在,它可能会出错。解决它:

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

                      【讨论】:

                        【解决方案14】:

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

                        【讨论】:

                        • 就我而言,我的文件夹名称中有空格和大写单词。我删除了所有空格并将单词大写,现在它可以工作了。 +1
                        【解决方案15】:

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

                        【讨论】:

                          【解决方案16】:

                          对我来说,发生此错误是因为我在从源代码树中提取代码时将版本号从 1 更改为 1.0,并将内部版本号从 6 更改为 1.1。我只是将其改回来并将内部版本号从 6 更改为 7,它工作正常。

                          【讨论】:

                            【解决方案17】:

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

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

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

                            【讨论】:

                            • 这应该是公认的答案。对于问题 bin/sh,这是解决方案。
                            【解决方案18】:

                            我尝试重新启动 Xcode (7),但什么也没有(您是否尝试为我的 iOS 开发将​​其关闭再打开 :-))。然后我尝试重新启动我的盒子,并且成功了。

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

                            【讨论】:

                              【解决方案19】:

                              如果未选中,请单击 On Run 复选框。

                              【讨论】:

                              • 这个复选框可能在 Build Phases → Bundle React Native code and images 下。
                              • 对我来说,这在手机上构建/安装应用程序时有效,但在存档时无效
                              • 这个答案是正确的。但是当设置模式 Generc iOS Device for getting build fr all ... 再次得到错误@Harshad
                              • @reza_khalafi 确保您拥有清晰的数据以及删除派生数据。然后再试一次。
                              • @Harshad 在构建时工作,但不用于归档
                              【解决方案20】:

                              您似乎正在运行一个 shell 脚本,但它找不到您的特定文件。如果您正在运行脚本,请查看 Target -> Build-Phases -> RunScript

                              您可以检查脚本是否在您的构建输出中运行(在导航面板中)。如果您的脚本做错了什么,构建阶段将停止。

                              【讨论】:

                              • SKM 我已经编辑了我的答案。也许是它的 Xcode 创建了这个脚本来找到你的静态库。顺便说一句,它没有编译,因为它在 /Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/libSCXMLParser.a 中找不到文件。所以一定要把它包括在那里
                              【解决方案21】:

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

                              也许这个库与模拟器不兼容,你是否尝试为iDevice(不是模拟器)编译?

                              (我已经解决了第二个问题,我得到了一个无法在模拟器上运行但在真实设备上编译的库......)

                              【讨论】:

                                猜你喜欢
                                • 2020-06-09
                                • 2020-02-23
                                • 1970-01-01
                                • 1970-01-01
                                • 2020-07-30
                                • 1970-01-01
                                • 2019-02-10
                                • 1970-01-01
                                • 2015-11-09
                                相关资源
                                最近更新 更多