【问题标题】:Bitcode signature failure in XcodeXcode 中的位码签名失败
【发布时间】:2017-08-28 01:28:44
【问题描述】:

我将 Xcode 更新到了最新版本,现在当我尝试编译项目时,我收到一个错误“无效的位码签名”,但是,我的项目的位码被禁用。我该如何解决?我应该更改哪些内容才能正确签署我的位码?

我的播客文件:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target 'MyProjectName' do

pod 'Realm'
pod 'CorePlot'
pod 'GoogleMaps'

end

我已经检查过了,一切都很好。

【问题讨论】:

  • 清理派生数据。
  • 我先做了,不行
  • 我们需要更多信息。我怀疑使用的依赖项之一导致了问题。
  • 在寻找调试帮助时,您需要提供 Podfile.lock,而不是 Podfile。最好是 Xcode 的确切版本。

标签: objective-c xcode8 bitcode


【解决方案1】:

我不确定你是否和我有同样的情况。当我尝试使用 iPhone 设备进行测试时,我才遇到这个问题。事实证明,仅使用 Build Active Architecture 的调试配置设置为 NO。设置为 YES 后,我可以用我的 iPhone 进行测试。

【讨论】:

  • 谢谢!我用 XCode 8.3 和 8.3.1 都在抱怨“无效的位码签名”,直到我改变了这个。
  • 谢谢,我多年来一直在努力解决这个问题 - 我关闭了 bitcode,但在我将 Build Active Architecture 设置为 YES 之前,这个错误仍然出现
  • 我的救星!不戴帽子的英雄!
  • 为什么在归档应用程序以供发布时没有出现同样的错误? Build Active Architecture Only 对于发布模式仍然是 NO。
【解决方案2】:

我遇到了这个错误,但它仅在为 iOS 10.3 iPad 构建时发生(尽管在 iOS 10.3 iPhone 和 iOS 11.0 iPad 以及所有 iOS 10.3 和 11.0 模拟器上工作)。通过痛苦的消除过程(并从头开始创建一个新项目),我发现我的 Cocoapods 没有错,我的代码签名设置也没有,我的 AppExtension 也没有,我的测试也没有,也没有我的“仅为活动架构构建”设置,也没有与术语“位码”相关的任何构建设置。

在我的设置中,我有一个 C++ Xcode 项目嵌套在我的主 Swift/iOS Xcode 项目中。因为它从未专门用于 iOS,所以从未设置过“iOS 部署目标”(它被保留为“默认”)。将其明确设置为 10.3 后,它毫无怨言地工作。

嵌套 C++ 应用的项目设置(将 iOS 部署目标设置为您支持的最低 iOS 版本):

嵌套 C++ 应用的目标设置(供参考):

【讨论】:

  • 太棒了,尝试了一切,终于成功了。非常感谢。
  • @Jas_meet 很高兴我能将其他人从困境中拯救出来!我不得不追查的最难的错误之一(尤其是考虑到构建时间有多慢)。
  • 我遇到了同样的问题...项目正在使用 iOS 10.2 的 iPhone,但不是 10.3.3 的 iPhone。谢谢!
  • 非常感谢,这救了我。我什至没有意识到我正在开发的应用程序有一个嵌套项目 - 它是一个 cordova 应用程序。
【解决方案3】:

如果您使用 pod,请检查所有库的版本,某些库可能在新版本中不支持,您必须更新该库的 pod 文件。

【讨论】:

    【解决方案4】:

    就我而言,我试图为 iOS 版本低于部署目标的设备构建。

    【讨论】:

      【解决方案5】:

      当我将一个新的静态库项目链接到我的工作区时,出现了这种问题。为了解决它,我尝试将 Build Active Architecture Only 和库的 Bitcode 设置都设置为 NO,但没有运气。然后我发现库的部署目标设置为 11.0,因为 Xcode 为所有新项目设置了最新值。将设置修复为 5.0 后,问题就解决了。

      【讨论】:

        【解决方案6】:

        在我的案例中,出现问题是因为我使用的是第 3 方静态库,每个架构都有不同的文件

        我通过删除无效架构的二进制文件解决了这个问题。 相反,我为第 3 方静态库添加了一个多架构 FAT binary

        希望有帮助

        【讨论】:

          【解决方案7】:

          就我而言,解决方案是删除一个 c++ 库。

          【讨论】:

          【解决方案8】:

          我发现我的问题在于使用“模块”。

          刚刚关闭了模块(不得不更新一些头文件),但这解决了我的问题。

          Enable Modules In Settings

          【讨论】:

          • 不知道你的情况,但禁用模块不是一个好主意
          【解决方案9】:

          就我而言,项目中包含的小部件导致了位码错误。

          我从这里更改了我的 pod 文件:

          target "App" do
              pod 'A'
              pod 'B'
          end
          
          target "App Widget" do
              pod 'A'
          end
          

          到这里:

          target "App" do
              pod 'A'
              pod 'B'
          
              target "App Widget" do
                  pod 'A'
              end
          end
          

          【讨论】:

            【解决方案10】:

            要解决此问题,大多数答案都推荐一种解决方法,您可以清理 Xcode 工作区/项目,关闭 Xcode,删除您的 Derived Data 文件夹(默认情况下保存在项目的根目录中),然后最后重新打开你的项目。

            但是,上述步骤可能不适合您。这表明您的项目结构有误。

            当您的项目的位码中介表示随 iOS 9.0 一起发布时,这样做的前提是您的整个项目,包括依赖项,完全同意或不使用位码。根据我的经验,检查所有Pods 和包括Libraries/Frameworks 并确保它们都使用相同的设置至关重要; 。默认情况下,此选项为Yes

            如果单个依赖项与预期的位码设置不匹配,则可能会引发此错误。

            在检查您的依赖项和总体项目时,请务必注意 项目和目标设置都有一个 Use Bitcode 设置,因此请务必检查构建设置。

            【讨论】:

              【解决方案11】:

              我正在添加静态库。我创建了同一个库的胖二进制文件,包括所有架构并包含在我的项目中。这解决了我的问题

              【讨论】:

                【解决方案12】:

                就我而言,我正在使用 Cordova 项目。使用 Xcode 构建时遇到了同样的问题,通过删除和添加 IOS 平台解决。

                cordova platform remove ios
                
                cordova platform add ios
                

                【讨论】:

                  【解决方案13】:

                  如果您使用的是可可豆荚,请执行“豆荚更新”

                  【讨论】:

                    【解决方案14】:

                    目标 -> 构建设置 -> 仅构建活动架构

                    调试 -> 是 释放 -> NO 到 YES

                    我只在归档应用时遇到同样的问题。

                    谁能告诉我原因?你可以教所有的开发者。太棒了。

                    【讨论】:

                      【解决方案15】:

                      这个解决方案对我有用。首先,尝试使用终端命令 pod deintegrate 删除所有 pod,然后使用终端命令 pod install 重新安装 pod。

                      【讨论】:

                        【解决方案16】:

                        如果包含仅为 ARM 构建的框架,则在为模拟器构建时也会发生这种情况(我假设反之亦然)。

                        【讨论】:

                          猜你喜欢
                          • 2018-08-11
                          • 2014-02-12
                          • 2018-09-18
                          • 1970-01-01
                          • 2013-02-15
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多