【问题标题】:Lipo Error!! can't open input file脂肪错误!!无法打开输入文件
【发布时间】:2013-06-27 16:51:05
【问题描述】:

我的应用程序运行良好,然后我开始集成 SDK 以进行推送通知并停止两者之间的集成。我什至从我的项目中删除了 SDK 并尝试存档或运行应用程序,它给了我错误:

lipo 错误!!无法打开输入文件。

任何帮助将不胜感激,我已经给了足够的时间来解决这个问题但失败了。

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo:无法打开输入文件: /Users/XYZ/Library/Developer/Xcode/DerivedData/MyAPP-hjbmqpnmsoruqxbwlayqkjsojccv/Build/Intermediates/MyAPP.build/Debug-iphoneos/MyAPP.build/Objects-normal/armv7s/MyAPP(没有这样的文件或目录)

【问题讨论】:

    标签: ios objective-c lipo


    【解决方案1】:

    我让它工作了,我只是在我的项目目标中做了一个简单的更改-> 构建设置-> 仅构建活动架构并将此构建活动架构设置为 YES。它现在工作正常..

    6 个月后更新:

    更新到 Xcode5 后我再次遇到这个问题。这次我必须将项目目标-> 构建设置-> 有效架构更新为 armv7。我删除了 armv7s 和 arm64。

    【讨论】:

    • 有人知道这是为什么吗? Build for active architecture 设置为 YES 只是为了在调试时加快构建过程,因为它会按照它说的那样做。当它设置为 NO 时,它应该构建所有架构并创建一个胖二进制文件 - 为什么这个胖二进制文件不能正常工作?
    • 这不会阻止生成的可执行文件在某些​​设备上运行吗?
    • 奇怪的是,我通过删除然后重新添加所有架构来让它工作。一旦我这样做了,原始设置就起作用了。不知道为什么。
    • 更改 Build Active Architecture Only 设置不适用于 App Store 构建。请参阅下面的答案。
    • 任何子项目(例如 Pods 项目)至少需要构建父项目构建的所有架构。因此,如果父项目正在构建所有架构,则子项目也必须这样做。如果父级仅构建活动架构,则子项目设置无关紧要。同样,子项目的架构列表必须与父项目的架构相同(或超集)。最后,对于Release 配置,Build Active Architecture Only 应始终为No
    【解决方案2】:

    通过将“启用位码”设置为“否”对我有用。

    现在我可以在设备上运行并提交到应用商店。

    【讨论】:

    • 不...这对我不起作用。我正在使用 Xcode 7.1.2
    • 在建议更改位码选项之前,请检查这会对您的应用产生什么影响
    【解决方案3】:

    请注意,我在从 Carthage 切换到 CocoaPods 时遇到了这个问题。解决方案是删除 Build Phases 部分中的“Remove Unneeded Architectures”。

    【讨论】:

    • 我的被称为“Strip Unwanted Archs”
    • 我还用 Cocoapods 替换了 Carthage,并且不得不从我的构建阶段删除这个运行脚本以避免派生数据错误
    • 我在使用cordova-sentry 时遇到了这个问题,它有一个像这样运行的脚本。我必须删除 Build Phases 下的脚本才能将其安装在我的设备上。
    【解决方案4】:

    这发生在我身上,因为我使用的是 cocoapods,并且工作区中的 Pods 项目对“仅构建活动架构”的设置与我的主项目不同(分别为“是”和“否”)。当我将两者都设置为“否”时,我能够在我的设备上构建和运行。

    【讨论】:

    • 这太奇怪了。这与我必须做的相反。这怎么可能行得通?我的脑子已经够糊涂了。
    • IMO 这应该是公认的答案。子项目需要构建至少与父项目一样多的架构。因此,如果父项目只构建活动架构,则子项目可以设置为任何内容,但如果父项目构建所有架构,则子项目必须这样做。
    【解决方案5】:

    尝试从项目目标 -> 构建阶段 -> 编译源中删除已删除的文件。

    希望对您有所帮助。

    【讨论】:

      【解决方案6】:

      如果有,请尝试移除已连接的 iPad/iPhone。这适用于我的情况。

      【讨论】:

        【解决方案7】:

        就我而言,我在一些更新后执行了我的应用程序,然后尝试在 git 上提交它,但冲突毁了我的代码。那是个悲伤的故事。

        但幸运的是,我的系统上有一个备份,我用本地代码替换了损坏的代码。

        现在在执行时我也遇到了同样的问题。然后清理项目对我来说是神奇的棒子。我清理了项目,一切顺利。

        【讨论】:

        • 这里的可怕问题是我们永远不知道为什么会这样。我想知道是什么改变使构建工作。我们都遇到过这种情况,只是不知道为什么会发生,或者为什么我们为修复它所做的工作有效。
        【解决方案8】:

        对我来说,这是因为我的主要可执行文件和静态链接的库在“构建设置”>“架构”中有不同的设置。该库设置为仅“标准架构”,但主 exe 设置为“标准架构(包括 64 位)”。

        我认为发生的事情是,当构建过程链接所有内容时,它发现它缺少 64 位版本的库,从而导致此错误。

        将它们全部设置为相同的值(使用或不使用 64 位)解决了我的问题。

        【讨论】:

          【解决方案9】:

          这对我来说是一个 cocoapods 问题。我正在运行 0.35.0、Xcode 6.1.1,显然我需要在我的 podfile 中提及我的目标,以便我所有的 cocoapods 都能与我的目标一起正常工作。

          在我的 podfile 的底部,我添加了:

          link_with 'Target A', 'Target B' ...
          

          添加所有目标名称,关闭 Xcode,运行 pod install,打开 Xcode,它应该会为你构建。

          这是 github 问题:https://github.com/CocoaPods/CocoaPods/issues/2627

          【讨论】:

          • 这个问题与 lipo 问题有什么关系?
          【解决方案10】:

          当我决定清理我的派生数据文件夹时,发生了该错误。 我不得不在 Xcode 中调用 carthage update --platform iOS 然后调用 Clean 并再次构建。 希望可以帮助别人

          【讨论】:

            【解决方案11】:

            我同时使用 Carthage 和 Cocoa Pod,这就是我在不删除构建阶段部分中的“删除不需要的架构”的情况下解决问题的方法:

            • 转到目标中的“构建阶段”标签

            • 将“Remove Unneeded Architectures”(或任何您调用的脚本)拖到更高的行(例如“Compile Sources”上方)。

            • 清理和构建

            希望有帮助!

            【讨论】:

            • 您能否分享一下您在构建阶段使用的顺序的屏幕截图
            【解决方案12】:

            从我的 Mac 断开设备时出现此错误,按我的项目名称(靠近左上角的播放/停止构建按钮),选择设备 -> [iOS 设备] 并按产品 -> 构建 另外我想提一下,该项目有很多 3rd 方库和一些安装了 pod 的库。

            【讨论】:

              【解决方案13】:

              在我的框架搜索路径中重新设置了一堆无法访问的目录(一遍又一遍)后,我遇到了这个错误。有人直到最后才导入他们正在开发的框架,并在代码中留下了对他们自己目录的引用。通过比较分支并从 pbxproj 中删除有问题的代码来解决

              【讨论】:

                【解决方案14】:

                这些都不适合我。

                经过一番挖掘(git reset 等)后,我发现我的工作区已损坏。我删除了project.xcworkspace的内容,一切恢复正常。

                甚至重置都不起作用的原因是因为 .xcworskpace 在我的 .gitignore 中(就像我猜的很多一样)。

                【讨论】:

                  【解决方案15】:

                  在我的情况下,出现问题是因为我在两个控制器(应用程序委托和另一个控制器)中声明了一个具有相同名称的对象 (AVAudioPlayer) 实例变量。奇怪,但是当我重命名其中一个时问题就消失了。

                  【讨论】:

                    【解决方案16】:

                    为 Swift 提供新的潜在答案:我们将此错误隔离为在类别文件中使用 nil 合并运算符 (??)。该运算符在我们项目的其他地方使用没有问题,但在这个特定文件中,删除它修复了 lipo 错误。

                    【讨论】:

                      【解决方案17】:

                      我在我的项目中更新了一个框架,但不知何故错过了提交/推送它的一个文件“info.plist”(因为我的 gitignore 文件中有一些问题)。从那时起,其他所有人都开始收到此错误。因此,只需提交错过的 info.plist 文件即可解决问题。希望这对某人有所帮助。

                      【讨论】:

                        【解决方案18】:

                        我尝试为调试和发布重新选择配置文件签名。这确实解决了问题。

                        【讨论】:

                          【解决方案19】:

                          这通常发生在更改 XCode 中的部署目标之后,并且在尝试构建之前通过“产品 > 清理”很容易解决。

                          【讨论】:

                            【解决方案20】:

                            转到您的项目目录,找到构建文件夹并将其删除。 然后进行构建清理,然后构建项目。

                            希望对你有帮助

                            【讨论】:

                              【解决方案21】:

                              必须在 Bundle Target 的 Compile Sources 中添加 .m 文件。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 2014-02-22
                                • 1970-01-01
                                • 1970-01-01
                                • 2016-09-24
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多