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

标签 ios swift realm carthage xcode10.1

我正在尝试使用 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 { $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 版本上运行吗?

最佳答案

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

迦太基版本

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 添加一个。

如果有条目,请检查是否有值为 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 的优点在于它是开源的,甚至是用 Swift 编写的。

所以为了调试它我们可以:

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

然后:

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

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

  • 在 Xcode 中使用
  • 在左侧选择“运行/调试”
  • 在右侧选择“参数”标签
  • 将“启动时传递的参数”更改为 update --no-use-binaries --platform iOS

Arguments

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

Workding Directory

最后:

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

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

如果一切正常,它看起来像这样:

Debug Session

如果从 Xcode 运行时没有发生错误,则让它在没有断点的情况下完全在 Xcode 中运行,并给它一些时间进行编译。

如果从 Xcode 项目中成功更新了 carthage,那么请按此处所述卸载当前的 carthage 安装。

How to uninstall Carthage from OS X?

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

'make install'

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

关于ios - Carthage 更新失败,提示 "Could not find any available simulators for iOS"- Xcode 10.1、macOS Mojave (10.14.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54017424/

相关文章:

iphone - 接近传感器禁用我的屏幕

ios - UIStackView 和手势

swift - 如何正确实现 NSFetchedResultsController.controllerDidChange()

ios - 在主 Controller 部分加载 uiviewcontroller

java - MongoDB Realm [与 OAuth2 提供程序交换访问代码时出错]

ios - UI 在 tableview reloadData() 上卡住

ios - 触摸移动方法中物理体尺寸不随 SKSpriteNode 尺寸变化而变化

ios - 云消息处理终止应用程序

swift - 如何将 ASTextNode 与 TTTAttributedLabel 一起使用

java - 在 Android 上共享 Realm 字段