Carthage 更新失败说 "Could not find any available simulators for iOS" - Xcode 10.1,macOS Mojave (10.14.2)

Carthage update failure saying "Could not find any available simulators for iOS" - Xcode 10.1, macOS Mojave (10.14.2)

我正在尝试使用 Carthage 将 Realm 安装到我的项目中。它以前可以工作,但在切换到新的 MacBook Pro(15 英寸,2018 年,TouchBar)之后,我收到以下错误,

carthage update --no-use-binaries --platform iOS
*** Fetching realm-cocoa
*** Checking out realm-cocoa at "v3.13.0"
*** xcodebuild output can be found in /var/folders/m4/1z0tvn6d67q2rqwcjvndy80m0000gn/T/carthage-xcodebuild.2vfx4v.log
*** Building scheme "Realm" in Realm.xcworkspace
Could not find any available simulators for iOS

我已尝试卸载并重新安装 Carthage (0.31.2) 并按照这些答案中给出的步骤操作,

Stack Overflow Question

Carthage Git Issue

Carthage Fix and Release

xcrun simctl list devices --json

     {
        "availability" : "(available)",
        "state" : "Shutdown",
        "isAvailable" : true,
        "name" : "iPad Pro",
        "udid" : "94790E33-EA0A-40B4-BA0A-19CC8D976A6F",
        "availabilityError" : ""
      }

调试迦太基

(lldb) po devices[latestOSName]?.first { [=14=].isAvailable }
▿ Optional<Simulator>
  ▿ some : Simulator
    - isAvailable : true
    - name : "iPhone 5s"
    - udid : 87A9C887-034C-44A8-8F30-C90AF9ACCBCC

(lldb) po sdk.platform
XCDBLD.Platform.iOS

(lldb) po sdk.platform.rawValue
"iOS"

看起来这个问题仍然存在。有什么方法可以解决此问题以在最新的 Xcode 版本上运行?

也许您可以进行一些检查以缩小范围:

迦太基版本

carthage version

应该输出

0.31.2

已安装多个 Xcode

xcode-select -p

应该给

/Applications/Xcode.app/Contents/Developer

用于标准安装。

模拟器

xcrun simctl list devices --json 

应该输出如下列表:

{
  "devices" : {
    "iOS 12.1" : [
      {
        "availability" : "(available)",
        "state" : "Shutdown",
        "isAvailable" : true,
        "name" : "iPhone 5s",
        "udid" : "1A6959A0-C10F-474B-96C5-7E8955FBDD80",
        "availabilityError" : ""
      },
  ...

如果没有模拟器,请使用 Xcode 添加一个。

如果有条目,请检查是否有 'isAvailable' 条目,其值为 true

"isAvailable" : true,

如果没有,请检查 Xcode 安装。

删除缓存

人们也可以尝试

  • 退出Xcode
  • 删除 Carthage 和 Xcode 派生数据文件夹的缓存

一如既往地使用 rm -rf 你必须小心:

rm -rf ~/Library/Caches/org.carthage.CarthageKit 
rm -rf <your project folder>/Carthage
xcrun simctl delete unavailable

然后重试:

carthage update --no-use-binaries --platform iOS

调试迦太基

Carthage 的优点在于它是开源的,甚至是用 Swift 编写的。

所以要调试它我们可以:

  • 退出Xcode
  • 在终端中创建一个文件夹并 cd 到该文件夹​​

然后:

git clone https://github.com/Carthage/Carthage.git
cd Carthage
git checkout 0.31.2
make bootstrap
open Carthage.xcworkspace

之后我们需要输入命令行参数。为此:

  • 在Xcode中使用
  • 左边选择'Run/Debug'
  • 在右侧选择选项卡'Arguments'
  • 将 'Arguments Passed on Launch' 更改为 update --no-use-binaries --platform iOS

  • 切换到选项卡'Options'
  • 输入 Cartfile 所在的路径作为“工作目录”

最后:

  • 打开Carthage/Source/CarthageKit/Simulator.swift
  • 在方法中设置断点selectAvailableSimulator

然后你就可以调试出了什么问题。

如果一切正常,它将如下所示:

如果从Xcode 运行 时没有发生错误,那么让它运行 in Xcode 完全没有断点,给它一些时间来编译。

如果从 Xcode 项目更新 carthage 成功,则按照此处所述卸载当前的 carthage 安装。

How to uninstall Carthage from OS X?

然后在终端中转到 Makefile 所在的 Carthage 项目文件夹并键入:

'make install'

之后您可以从命令行再次尝试。它应该有效!

尝试安装以前版本的 carthage

brew install carthage 0.30.1

我通过将 Carthage 升级到 0.32.0 版解决了同样的问题:

brew upgrade carthage

PS: 将 Xcode 更新到版本 10.2

后出现问题

我将 Carthage 0.31.2 升级到 0.33.0 解决了同样的问题:

brew upgrade carthage

PS: 将 Xcode 更新到版本 10.2

后出现问题