Carthage更新失败,显示“无法找到任何可用的iOS模拟器” - Xcode 10.1,macOS Mojave(10.14.2)

12

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

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 问题:链接
- Carthage Git 问题:链接
- Carthage 修复和发布:链接
xcrun simctl list devices --json

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

调试 Carthage

(lldb) po devices[latestOSName]?.first { $0.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版本上运行?


您需要设置**命令行工具(Command Line Tool)**吗? - iDeveloper
@iDeveloper 我已经设置了但是没有变化。仍然得到同样的错误。 - Sasi
2
将Carthage升级到0.31.2版本后,问题得到了解决。 - duncanc4
@duncanc4 只使用0.31.2版本。甚至尝试了卸载和重新安装,但未修复该问题。 - Sasi
@SasiM,你是否使用任何预构建的SDK?如果你正在使用Realm预构建的设备或模拟器,请确保使用正确的版本。 - Pranavan SP
@PranavanSp 不是的。我正在使用最新版本的 Realm,而不是预构建版本。 - Sasi
4个回答

14

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

Carthage版本

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的<Window/Devices and Simulators>选项添加一个。

如果有条目,请检查是否有一个值为true的'isAvailable'条目:

"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

Carthage非常好的一点是它是开源的,而且甚至是用Swift编写的。

因此,为了调试它,我们可以:

  • 退出Xcode
  • 在终端中创建一个文件夹并进入该文件夹

然后:

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

接下来我们需要输入命令行参数。具体方法如下:

  • 在Xcode中使用菜单 <Product/Scheme/Edit Scheme...>
  • 选择左侧的 'Run/Debug'
  • 选择右侧的选项卡 'Arguments'
  • 将 'Arguments Passed on Launch' 更改为 update --no-use-binaries --platform iOS

Arguments

  • 切换到选项卡 'Options'
  • 在 `Working Directory` 中输入 Cartfile 存放的路径

Workding Directory

最后:

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

这样你就可以调试出问题所在。

如果一切顺利,效果应该是这样的:

Debug Session

如果从 Xcode 运行时没有出现错误,请让它完整地运行完编译过程,而且要给它一些时间。

如果从 Xcode 项目成功更新了 Carthage,则请按照这里所述的步骤卸载当前的 Carthage 安装程序。

如何在 OS X 中卸载 Carthage?

然后在终端中进入 Carthage 项目文件夹,即包含 Makefile 的文件夹,并键入:

'make install'

之后,您可以再次尝试在命令行中运行它。它应该可以工作!


是的,在发布这个问题之前,我确保了所有这些都是正确的。甚至尝试卸载Xcode 10.1并安装Xcode 10,但它仍然没有解决问题。 - Sasi
你能发布一下从 xcrun simctl list devices --json 返回的设备列表吗? - Stephan Schlecht
更新了我的问题,请看一下。 - Sasi
好的,我添加了删除缓存的说明 - 值得一试。在调用 carthage update... 后,应该会在 ~/Library/Caches/org.carthage.CarthageKit/DerivedData 中再次出现一个新文件夹。这个文件夹的名字是什么? - Stephan Schlecht
1
所以从Xcode项目中它是工作的。你现在可以卸载你当前的carthage安装(也许甚至使用这里描述的两种方法:https://dev59.com/oVkS5IYBdhLWcg3we26Z#48040795)。然后在终端中进入Carthage项目文件夹(Makefile所在的位置)并键入:“make install”。之后,你可以再次尝试从命令行运行它。 - Stephan Schlecht
显示剩余9条评论

4

我解决了这个问题,升级Carthage到0.32.0版本,具体操作如下:

brew upgrade carthage

PS:更新 Xcode 到版本10.2 之后出现了问题。


2

我曾经遇到过同样的问题,将Carthage从0.31.2升级到0.33.0时解决了这个问题:

最初的回答:

brew upgrade carthage

PS:更新Xcode至10.2版本后出现了问题。

原始答案: Original Answer


升级到Xcode 10.3后,我遇到了同样的问题。更新Carthage工作得很好。谢谢!! - Tarun

1
尝试安装先前版本的Carthage。
使用以下命令安装Carthage 0.30.1: brew install carthage 0.30.1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接