从Xcode 10 Build预动作运行时,迦太基无法启动

时间:2018-10-25 11:08:31

标签: ios xcode carthage

我有运行的简单ksh脚本 carthage update --platform iOS作为Build预操作,并且在更新为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(从本地fork)无法正常工作
  • 来自this SO question.的所有答案均无效
  • 按照open Carthage ticket的建议使用env -i,不起作用

解决方案

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

某些链接

Non answered thread on Apples forums.

Closed Alamofire ticket

3 个答案:

答案 0 :(得分:4)

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

取消设置LLVM_TARGET_TRIPLE_SUFFIX

迦太基更新

答案 1 :(得分:3)

我找到了一种有效的方法,并能达到目的:

  

在迦太基更新命令之后写一条有效命令

因此,请遵循以下清单:

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

    sudo xcode-select -s <path to Xcode 10.1>/Contents/Developer

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

    chmod 777 <path-to-script-file>

  • carthage update命令之后写一个有效的命令写,例如echo succeed(实际上就是这样):

    Example

经过测试的环境:

  • Carthage 0.31.2
  • Xcode 10.1

工作演示

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

-最重要的步骤

  • 不要忘记,要在迦太基更新命令之后写一条有效命令

请注意,这只是针对有问题的问题的破解,而不是所有的迦太基问题。

答案 2 :(得分:1)

就我而言,重新启动macOS可以解决问题。