【问题标题】:How to run an iOS app that causes runtime error for frameworks "code signature invalid"如何运行导致框架运行时错误“代码签名无效”的 iOS 应用程序
【发布时间】:2020-05-17 19:08:04
【问题描述】:

每次我尝试运行此应用程序时,它都会构建并安装,但一旦运行,应用程序就会中断并打印以下错误消息:

dyld: Library not loaded: @rpath/StandardCyborgFusion.framework/StandardCyborgFusion
  Referenced from: /private/var/containers/Bundle/Application/2292CCF2-800F-4E28-AF10-A1B98081DD0A/StandardCyborgExample.app/StandardCyborgExample
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/2292CCF2-800F-4E28-AF10-A1B98081DD0A/StandardCyborgExample.app/Frameworks/StandardCyborgFusion.framework/StandardCyborgFusion: code signature invalid for '/private/var/containers/Bundle/Application/2292CCF2-800F-4E28-AF10-A1B98081DD0A/StandardCyborgExample.app/Frameworks/StandardCyborgFusion.framework/StandardCyborgFusion'

我在这里和应用开发者论坛上看到了很多关于这个问题的类似帖子,但没有人给出解释或有效的修复。

我试过了:

  • 清洁和建筑
  • 重新启动 XCode
  • 重新启动 Mac
  • 完全重置钥匙串
  • 验证所有钥匙串证书信任设置在“使用系统默认值”上
  • 我的 Mac 恢复出厂设置

这似乎是我的 iOS 设备的问题。该应用程序可以在模拟器上启动,但模拟器不适合我的开发目的,所以我需要在我的设备上进行这项工作。我最近将我的 iPhone XR 更新到了 iOS 13.3.1。


Running new app on actual iOS (13.3.1) device crashes on startup: code signature invalid for "path/to/Flutter.framework/Flutter" #49504”似乎是同一个问题。

我正在使用 XCode 11 和 iOS 13。

【问题讨论】:

  • StandardCyborgFusion.framework 来自哪里?联系它的开发者...
  • 您是否尝试过链接或嵌入框架?
  • 所有应用都会出现此错误。不是特定于框架的。
  • 添加了更新。它似乎是特定于设备的,因为它可以在模拟器上运行,我的一个朋友能够在他的设备上编译相同的框架。
  • 您的 StandardCyborgFusion.framework 没有经过代码签名,或者没有为 arm64 架构编译。你还没有告诉我们你是如何得到这个框架的。此外,如果有人告诉您重新启动 Xcode 以修复编译/链接问题,请投反对票。

标签: ios swift macos keychain dyld


【解决方案1】:

我在使用本地框架时遇到了同样的问题。经过数小时的调试,我所要做的就是将默认的“不嵌入”更改为“嵌入和签名”,错误就消失了。值得一试! :)

【讨论】:

    【解决方案2】:

    GoogleUtilities.framework 出现了同样的错误消息。尝试在 simulator 上运行时出现了我的问题。在设备上,它运行良好。问题是我的 MacBook 上的 CylancePROTECT 防病毒软件正在隔离文件,这会导致应用程序崩溃。检查您的设备是否正在运行 CylancePROTECT 或其他一些阻止您所需框架的防病毒软件。

    【讨论】:

      【解决方案3】:

      这是苹果的问题。我通过将设备升级到 iOS 13.4.1 解决了这个问题 另外,如果你不想升级ios系统,又使用Podfile,也可以做flow方式:

      • 注释掉use_frameworks!在 Podfile 中。
      • 添加 use_modular_headers!
      • pod deintegrate + pod install。
      • 清理(Command-Shift-K)-> 构建并运行。

      【讨论】:

        【解决方案4】:

        我在尝试构建到我的实际 iOS 设备时遇到了这个问题(但它在模拟器中运行良好)。我花了至少 10 个小时试图修复这个错误。尝试了所有论坛中的所有内容,没有任何效果。但这最终对我有用!

        • 从 iOS 13.3.1 升级到 iOS 13.4.1

        我无法想象这是真的,但 iOS 13.3.1 确实会破坏第三方签名,除非您拥有付费开发者帐户!

        【讨论】:

        • 您只需将您的 iOS 设备升级到 13.4.x。升级后我可以运行一些示例项目而无需任何其他调整。
        【解决方案5】:

        我看到了两种解决方法。

        1. 降级到 iOS 13.3。除非您拥有付费开发者帐户,否则 iOS 13.3.1 会破坏第三方签名。如果可能的话(买一部专门用于开发的廉价 iPhone)

        2. 将 Mac OS、Xcode 和 iOS 更新到最新的 Beta 版本(单独更新其中任何一个都行不通,因为 iOS Beta 需要最新的 Xcode Beta,而 Xcode 需要最新的 Mac OS Catalina)

          李>

        【讨论】:

          【解决方案6】:

          这是 iOS 13.3.1 的问题。在个人配置文件/开发人员帐户上运行时,所有编译到最新版本 iOS 13.3.1 的动态框架都会遇到此问题。下面是从 Github 的 jmagman 复制的解决方案。

          你可以:

          1. 使用非个人团队配置文件(付费开发者帐户)。
          2. 在 13.3.1 模拟器上运行。
          3. 在运行 13.3 或更低版本的真实 iOS 设备上进行测试。
          4. 在您的测试设备上安装 beta 配置文件并安装 iOS 13.4 beta 3。(已修复)
          5. 等待 iOS 13.4 发布。

          希望这个问题能很快得到解决。

          【讨论】:

          • 我正在从 iOS 13.3.1 降级到 13.3。不能一直等到 Apple 解决这个问题。
          • 嗯...看来我在安装 iOS 13.3.1 时无法备份我的数据,然后在 iOS 13.3 上恢复它。很遗憾((恢复必须在相同的iOS版本下执行。所以,这也不是解决方案......
          • 我希望我能早点找到这个答案。 . .我花了 3 个小时尝试配置我的构建设置、二进制文件和构建阶段。 . .获得付费帐户很快就解决了
          • 经典的苹果,创造了一个促使你买东西的错误。
          • 非常感谢您的清晰正确的回答,+1。​​
          【解决方案7】:

          这似乎已在 iOS 13.4 beta 3 上得到修复。您可以安装 beta profile 或等待 iOS 13.4 发布。

          【讨论】:

          • 3 月 24 日,Apple 发布了 iOS 13.4。此更新包括对代码签名问题的修复!有关详细信息,请参阅 iOS 13.4 beta 3。
          【解决方案8】:

          如果你从 Xcode 运行,你会看到如下错误:

          /private/var/containers/Bundle/Application/D0BD5694-A7D6-4820-A146- 
           A49DF0C0F0B1/Runner.app/Frameworks/Flutter.framework/Flutter: code signature 
          invalid for '/private/var/containers/Bundle/Application/D0BD5694-A7D6-4820- 
          A146-A49DF0C0F0B1/Runner.app/Frameworks/Flutter.framework/Flutter'
          

          Github 上jmagman 提供的解决方案

          jmagman 已升级至 Apple (FB7562472),如果他们听到任何消息,将会通知所有人。 more details on github

          【讨论】:

            【解决方案9】:

            我正在使用 CocoaPods,对我来说,这修复了错误(Wasa22's Answer on github issue):

            1. 打开 podfile
            2. 注释掉 use_frameworks!
            3. 添加 use_modular_headers!
            4. 在终端中,执行 pod update -> pod install
            5. 在 Xcode 中,清理 (Command-Shift-K) -> 构建并运行。

            来源: https://github.com/Alamofire/Alamofire/issues/3051

            【讨论】:

            • 我刚刚借了一个朋友的开发者帐户,所以没有时间验证这是否有效,但我会将其标记为正确。如果其他人能确认这也适用于他们,我将不胜感激。
            • 如果我没有 podfile 怎么办?
            • 注释掉use_frameworks,运行pod update命令就够了
            猜你喜欢
            • 2020-06-10
            • 1970-01-01
            • 2012-01-14
            • 1970-01-01
            • 2019-05-10
            • 2016-05-18
            • 1970-01-01
            • 2021-08-23
            相关资源
            最近更新 更多