Carthage 在 运行 from Xcode 10 Build pre-action 时启动失败
Carthage fails to start when running from Xcode 10 Build pre-action
我有一个简单的 ksh 脚本可以运行
carthage update --platform iOS
作为构建预操作,更新到 Xcode 10 后开始失败。
运行 终端中的命令成功生成 Carthage
文件夹。
要重现此问题,请退出 Xcode 并删除 DerivedData
和 Carthage
文件夹。然后打开Xcode10,尝试build.
我得到的错误:
<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
,没用
解决方案
- Select "Generic iOS Device" 第一次构建时。
- 直接将SDK参数传递给
xcodebuild
、found in this answer. This forces you to write your own carthage update
, composed of checkout and build. Only this option worked as Xcode Build pre-action step. The solution was tested.
一些链接
我找到了一种真正有效的方法及其:
write one valid command write after carthage update command
因此请遵循此清单:
确保您的命令行工具配置为使用 Xcode 10.1。 运行 来自终端的以下命令:
sudo xcode-select -s <path to Xcode 10.1>/Contents/Developer
确保脚本文件具有所需的权限:
chmod 777 <path-to-script-file>
在carthage update
命令之后写一个有效的命令,例如echo succeed
(这实际上是为了达到目的):
测试环境:
Carthage 0.31.2
Xcode 10.1
工作演示
https://github.com/MojtabaHs/Carthage-WorkingDemo
- 最重要的一步
- 不要忘记 在 carthage 更新命令后写入一个有效命令
请注意,这只是对所讨论问题的破解,并非所有迦太基问题。
对我来说 有效 的 解决方案 是在执行之前取消设置来自 XCode 10 的环境变量之一迦太基更新:
取消设置LLVM_TARGET_TRIPLE_SUFFIX
迦太基更新
就我而言,重启 macOS 解决了问题。
我有一个简单的 ksh 脚本可以运行
carthage update --platform iOS
作为构建预操作,更新到 Xcode 10 后开始失败。
运行 终端中的命令成功生成 Carthage
文件夹。
要重现此问题,请退出 Xcode 并删除 DerivedData
和 Carthage
文件夹。然后打开Xcode10,尝试build.
我得到的错误:
<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
,没用
解决方案
- Select "Generic iOS Device" 第一次构建时。
- 直接将SDK参数传递给
xcodebuild
、found in this answer. This forces you to write your owncarthage update
, composed of checkout and build. Only this option worked as Xcode Build pre-action step. The solution was tested.
一些链接
我找到了一种真正有效的方法及其:
write one valid command write after carthage update command
因此请遵循此清单:
确保您的命令行工具配置为使用 Xcode 10.1。 运行 来自终端的以下命令:
sudo xcode-select -s <path to Xcode 10.1>/Contents/Developer
确保脚本文件具有所需的权限:
chmod 777 <path-to-script-file>
在
carthage update
命令之后写一个有效的命令,例如echo succeed
(这实际上是为了达到目的):
测试环境:
Carthage 0.31.2
Xcode 10.1
工作演示
https://github.com/MojtabaHs/Carthage-WorkingDemo
- 最重要的一步
- 不要忘记 在 carthage 更新命令后写入一个有效命令
请注意,这只是对所讨论问题的破解,并非所有迦太基问题。
对我来说 有效 的 解决方案 是在执行之前取消设置来自 XCode 10 的环境变量之一迦太基更新:
取消设置LLVM_TARGET_TRIPLE_SUFFIX
迦太基更新
就我而言,重启 macOS 解决了问题。