【问题标题】:Carthage fails to start when running from Xcode 10 Build pre-action从 Xcode 10 Build pre-action 运行时 Carthage 无法启动
【发布时间】:2019-03-29 23:33:27
【问题描述】:

我有一个简单的 ksh 脚本可以运行 carthage update --platform iOS 作为构建前操作,更新到 Xcode 10 后开始失败。 在终端运行命令成功生成Carthage文件夹。

要重现此问题,请退出 Xcode 并删除 DerivedDataCarthage 文件夹。然后打开 Xcode 10 并尝试构建。

我得到的错误:

<unknown>:0: error: unable to load standard library for target 'arm64-apple-ios8.0-simulator'

** ARCHIVE FAILED **


The following build commands failed:
    CompileSwift normal armv7
    CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compiler
    CompileSwift normal arm64
    CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
(4 failures)
Build Failed

设置

  • 迦太基 0.31.1 - 0.33.0
  • Cartfile 指向 Alamofire 4.7.3

我尝试过的事情

  • 使用carthage bootstrap,不起作用
  • 将 Alamofire 依赖目标提升到 iOS 8.4 和 10(从本地分支),不起作用
  • this SO question. 的所有答案均无效
  • 按照open Carthage ticket 中的建议使用env -i,但不起作用

解决方案

  • 第一次构建时选择“通用 iOS 设备”。
  • 将 SDK 参数直接传递给 xcodebuildfound in this answer. 这迫使您编写自己的 carthage update,由 checkout 和 build 组成。只有此选项可用作 Xcode Build 预操作步骤。 The solution was tested.

一些链接

Non answered thread on Apples forums.

Closed Alamofire ticket

【问题讨论】:

    标签: ios xcode carthage


    【解决方案1】:

    在我的情况下,重新启动 macOS 解决了这个问题。

    【讨论】:

      【解决方案2】:

      对我有用解决方案是在执行 carthage 更新之前取消设置来自 XCode 10 的环境变量之一:

      取消设置 LLVM_TARGET_TRIPLE_SUFFIX

      迦太基更新

      【讨论】:

      • 工作就像一个魅力......你能指出任何谈论这个环境变量的文档吗?
      • 这在 Xcode 10.1 和 arthage 0.31.2 中对我有用
      • 还有其他人能够让它在 Xcode 10.3 上运行吗?它不适合我。
      【解决方案3】:

      我找到了一种真正做到这一点的方法及其:

      在迦太基更新命令后写入一个有效的命令

      所以请遵循以下清单:

      • 确保您的命令行工具配置为使用 Xcode 10.1。从终端运行以下命令:

        sudo xcode-select -s &lt;path to Xcode 10.1&gt;/Contents/Developer

      • 确保脚本文件具有所需的权限:

        chmod 777 &lt;path-to-script-file&gt;

      • carthage update 命令之后写一个有效的命令,例如echo succeed(这实际上可以解决问题):

      测试环境:

      • Carthage 0.31.2
      • Xcode 10.1

      工作演示

      https://github.com/MojtabaHs/Carthage-WorkingDemo

      - 最重要的一步

      • 不要忘记在迦太基更新命令后写入一个有效命令

      请注意,这只是对相关问题的破解,并非所有迦太基问题。

      【讨论】:

      • 那是负面的。只有在将 Carthage 作为 Xcode 中定义的运行脚本构建阶段运行时才会出现特定问题。我在 0.31.2 和 10.1 中得到了与在 0.31.1 和 10.0 中观察到的相同的行为。 Carthage 直接在命令行上运行良好。你有这个在示例项目中工作吗?
      • 我在 Carthage 0.31.2 和 Xcode 10.1 上也遇到了同样的问题。
      • @DávidPásztor 尝试按照我添加的分步指南进行操作。
      • @MojtabaHosseini 仍然没有运气。我有一个比简单地调用carthage update 更复杂的预构建脚本,所以它已经在carthage update 之后执行了相当多的有效命令。我正在从预构建操作调用 shell 脚本,而不是直接将 carthage update 写入预构建操作。
      • 无论如何,FWIW,当我们检测到 Cartfile 和/或 Cartfile.resolved 发生变化时,我只是提醒开发人员运行我们的“carthage update/bootstrap”脚本来解决这个问题。而且,CI 也在做同样的事情,但它有一个自己的 shell 步骤,它在运行 xcodebuild 之前根据需要执行 carthage 更新脚本。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      相关资源
      最近更新 更多