【问题标题】:No architecture in the binary. Lipo failed to detect any architectures in the bundle executable - previous answers didn't work二进制文件中没有架构。 Lipo 未能检测到捆绑可执行文件中的任何架构 - 以前的答案不起作用
【发布时间】:2019-04-16 19:04:04
【问题描述】:

我最近向我的 xcode 项目 (SquareReaderSDK.framework) 添加了一个框架,现在每当我尝试上传或验证它时都会遇到这个问题:

No architecture in the binary. Lipo failed to detect any architectures in the bundle executable

这在所有设备上本地运行良好(我在运行最新操作系统的 iPad 和运行 9.3.5 的旧设备上进行了测试) - 这仅在存档并尝试验证/上传后发生。

我发现许多其他人有类似的问题,但似乎没有一个修复程序适合我:

  • 名称和包 ID 正确
  • 重新启动 XCode,重新运行pod install,清理项目并没有改变任何东西

我已经设法通过一系列奇怪的步骤将其上传到生产环境中,因为它们限制了我可以部署到的架构:

  • 我必须将部署目标设为插入的设备,而不是Generic iOS Device。我知道我需要想办法不必这样做,否则我无法在我的旧 iPad 上下载它
  • 我必须将Build Active Architecture Only 设置为Yes。我相信这也需要改变,否则我会遇到与第一个项目符号相同的问题
  • 在带有库的链接框架下,我选择了Optional 而不是Required。这需要保持这种状态才能使其在旧设备上运行(此框架仅适用于 iOS 11+)。
  • 构建阶段/嵌入框架下,我为SquareReaderSDK.framework 取消选择Code Sign On Copy。我不知道这是否需要更改,我添加它是因为其他人建议删除构建阶段可以解决此问题
    • 我不得不添加一个运行脚本作为最终构建阶段,作为 iOS 的 Square Reader Setup 中的说明之一:FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" "${FRAMEWORKS}/SquareReaderSDK.framework/setup"

这种步骤组合的任何变化似乎都会让我发现最初的错误。有什么想法吗?

我可以分享任何可能有用的额外信息

【问题讨论】:

  • 更新:如果我将部署目标从 9 提高到 11,我可以让它与通用 iOS 设备一起使用。但是任何更低,我都会收到这个错误。我知道 SquareReaderSDK.framework 只能在运行 11+ 的 iPad 上运行,但我可以通过在 Linked Frameworks and Libraries 部分将其设置为 Optional 来在 9.3.5 的 iPad 上运行它。归档时有什么不同的原因吗?

标签: ios xcode nativescript


【解决方案1】:

我的问题最终是 SquareReaderSDK.framework 所特有的。 Square 创建了一个安装脚本,需要在设备上运行它。但是,在存档过程中,该脚本的一部分会删除 SquareReaderSDK 不支持的架构。我必须注释掉这些行以使存档和验证过程正常工作,然后处理代码中不受支持的架构

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多