迦太基更新失败,提示“找不到iOS可用的模拟器”-Xcode 10.1,macOS Mojave(10.14.2)

时间:2019-01-03 06:37:10

标签: 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版本?

4 个答案:

答案 0 :(得分:9)

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

迦太基版本

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

调试迦太基

关于迦太基的一件好事是它是开源的,甚至是用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项目成功完成了迦太基更新,请按照此处所述卸载当前的迦太基安装。

How to uninstall Carthage from OS X?

然后在Terminal中转到Makefile所在的Carthage项目文件夹,然后键入:

'make install'

然后,您可以从命令行再次尝试。应该可以!

答案 1 :(得分:3)

我通过以下方法解决了同样的问题,将迦太基升级到0.32.0版:

brew upgrade carthage

PS:将Xcode更新到版本10.2后出现问题

答案 2 :(得分:1)

尝试安装早期版本的迦太基

brew install carthage 0.30.1

答案 3 :(得分:1)

我通过以下方法解决了同样的问题,将Carthage 0.31.2升级到0.33.0:

brew upgrade carthage

PS:将Xcode更新到版本10.2后出现问题