如何运行导致框架运行时错误“代码签名无效”的 iOS 应用程序

Posted

技术标签:

【中文标题】如何运行导致框架运行时错误“代码签名无效”的 iOS 应用程序【英文标题】:How to run an iOS app that causes runtime error for frameworks "code signature invalid" 【发布时间】: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 以修复编译/链接问题,请投反对票。 【参考方案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】:

我看到了两种解决方法。

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

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

    李>

【讨论】:

【参考方案6】:

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

你可以:

    使用非个人团队配置文件(付费开发者帐户)。 在 13.3.1 模拟器上运行。 在运行 13.3 或更低版本的真实 iOS 设备上进行测试。 在您的测试设备上安装 beta 配置文件并安装 iOS 13.4 beta 3。(已修复) 等待 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):

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

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

【讨论】:

我刚刚借了一个朋友的开发者帐户,所以没有时间验证这是否有效,但我会将其标记为正确。如果其他人能确认这也适用于他们,我将不胜感激。 如果我没有 podfile 怎么办? 注释掉use_frameworks,运行pod update命令就够了

以上是关于如何运行导致框架运行时错误“代码签名无效”的 iOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

开发人员 ID 签名的 OS X 应用程序在启动时因代码签名无效而崩溃

iOS:代码签名无效/缺少必需的代码签名

需要帮助:“错误的架构”导致应用在 iOS 7 中启动时崩溃,但在 iOS 8 中运行良好

如何解决由于 PyTorch 中大小不匹配导致的运行时错误?

iOS:“标签 - 标签”的错位视图框架在运行时会有所不同

为啥在IOS上运行torchscript模型推理会导致线程错误?