Ошибка обновления Carthage с сообщением Не удалось найти доступные симуляторы для iOS — Xcode 10.1, macOS Mojave (10.14.2)

Я пытаюсь установить Realm в свой проект, используя Carthage. Раньше это работало, но после перехода на новый 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) и выполнил шаги, указанные в этих ответах,

Вопрос о переполнении стека< /а>

проблема Carthage Git

Исправление и выпуск Carthage

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?


person Sasi    schedule 03.01.2019    source источник
comment
Вам нужно установить Инструмент командной строки?   -  person iDeveloper    schedule 03.01.2019
comment
@iDeveloper Я уже установил это, но без изменений. Все еще получаю ту же ошибку.   -  person Sasi    schedule 03.01.2019
comment
Обновление Carthage до 0.31.2 решило проблему для меня.   -  person duncanc4    schedule 04.01.2019
comment
@duncanc4 использует только 0.31.2. Даже пробовал удалить и установить заново. Но не решить проблему.   -  person Sasi    schedule 04.01.2019
comment
@SasiM используете ли вы какой-либо готовый SDK. если вы используете предварительную сборку Realm для устройства или симулятора, убедитесь, что используете правильный вариант.   -  person Pranavan SP    schedule 08.01.2019
comment
@PranavanSp нет, нет. Я использую последнюю версию Realm без предварительной сборки.   -  person Sasi    schedule 08.01.2019


Ответы (4)


Возможно, вы можете сделать некоторые проверки, чтобы немного сузить круг:

Карфагенская версия

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›.

Если есть записи, проверьте, есть ли запись «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

Что хорошо в 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...›
  • слева выберите "Выполнить/Отладить"
  • справа выберите вкладку "Аргументы"
  • измените «Аргументы, передаваемые при запуске» на update --no-use-binaries --platform iOS

Аргументы

  • переключитесь на вкладку «Параметры»
  • введите в качестве «Рабочего каталога» путь, по которому находится Cartfile

Рабочий каталог

Окончательно:

  • открыть Carthage/Source/CarthageKit/Simulator.swift
  • установить точки останова в методе selectAvailableSimulator

Затем вы можете отлаживать то, что идет не так.

Если все в порядке, то это будет выглядеть так:

Сеанс отладки

Если при запуске из Xcode не возникло ошибок, то пусть он полностью запускается в Xcode без точки останова и дает ему некоторое время для компиляции.

Если обновление carthage выполнено успешно из проекта Xcode, удалите текущую установку carthage, как описано здесь.

Как удалить Carthage из OS X?

Затем в Терминале перейдите в папку проекта Carthage, где находится Makefile, и введите:

'make install'

После этого вы можете повторить попытку из командной строки. Он должен работать!

person Stephan Schlecht    schedule 05.01.2019
comment
Да, я убедился, что все это правильно, прежде чем публиковать этот вопрос. Даже пытался удалить Xcode 10.1 и установить Xcode 10, но это все равно не решило проблему. - person Sasi; 05.01.2019
comment
Можешь выложить одно устройство от xcrun simctl list devices --json? - person Stephan Schlecht; 05.01.2019
comment
Обновил мой вопрос. Пожалуйста, взгляните. - person Sasi; 05.01.2019
comment
Ок, добавил инструкцию по удалению кешей - стоит попробовать. После вызова carthage update... в ~/Library/Caches/org.carthage.CarthageKit/DerivedData снова должна появиться новая папка. Как называется эта папка? - person Stephan Schlecht; 05.01.2019
comment
Пробовал удалять кеш, как вы упомянули. Но не решить проблему. - person Sasi; 06.01.2019
comment
Хорошо, у нас есть последний вариант: поскольку Carthage — это проект с открытым исходным кодом, который даже был разработан в Swift, мы можем относительно легко его отлаживать, я добавил подробные инструкции в своем ответе выше. Мне интересно..... - person Stephan Schlecht; 06.01.2019
comment
Я установил все, как вы сказали, но не уверен, как это отлаживать. Когда я пытаюсь запустить Carthage, он говорит «Ошибка сборки» без сообщения об ошибке (10 предупреждений). - person Sasi; 07.01.2019
comment
может быть проще показать это в скринкасте, где я показываю шаги, как описано выше - здесь ссылка на скринкаст менее чем за 3 минуты: software7.biz/iertzighbvldhzh/carthagedebug.mp4 (кстати: между ними нужно набраться терпения, даже если Carthage вызывается из командной строки, это все равно занимает некоторое время с сложные проекты (например, область)) - person Stephan Schlecht; 07.01.2019
comment
Я выполнил шаги, показанные в видео, и смог запустить рабочее пространство Carthage. Результат: po devices[latestOSName]?.first { $0.isAvailable } ▿ Необязательно‹Simulator› ▿ some : Simulator - isAvailable : true - name : iPhone 5s - udid : 87A9C887-034C-44A8-8F30-C90AF9ACCBCC - person Sasi; 07.01.2019
comment
Интересно: так что нет ошибки при запуске из Xcode. Если вы просто полностью запустите его в Xcode (без точки останова и дайте ему некоторое время для компиляции), тогда это сработает? - person Stephan Schlecht; 07.01.2019
comment
Да нет ошибки от Xcode. Схемы строит без проблем. Но интересно, почему это не то же самое, когда я запускаю из терминала. - person Sasi; 07.01.2019
comment
Итак, из проекта Xcode он работает. Теперь вы можете удалить текущую установку Carthage (возможно, даже используя оба описанных здесь метода: stackoverflow.com/a/48040795/2331445 ). Затем в Терминале перейдите в папку проекта Carthage (где находится Makefile) и введите: «make install». После этого вы можете повторить попытку из командной строки. - person Stephan Schlecht; 09.01.2019
comment
Наконец, он работает после «сделать установку». Спасибо большое. Я принимаю ваш ответ. - person Sasi; 11.01.2019
comment
Классное объяснение!! - person Jayprakash Dubey; 25.01.2019

Я решил эту же проблему, обновив Carthage до версии 0.32.0 с помощью:

brew upgrade carthage

PS: проблема возникла после обновления Xcode до версии 10.2.

person veladan    schedule 27.03.2019

Я решил эту же проблему, обновив Carthage 0.31.2 до 0.33.0 с помощью:

brew upgrade carthage

PS: проблема возникла после обновления Xcode до версии 10.2.

person Ender    schedule 19.04.2019
comment
Я столкнулся с той же проблемой после обновления до Xcode10.3. Обновление Carthage сработало как по маслу. Спасибо!! - person Tarun; 05.09.2019

Попробуйте установить предыдущую версию carthage.

brew install carthage 0.30.1

person Carlos Chaguendo    schedule 10.01.2019