Пустой список целевых устройств iOS при попытке запустить проект Compose Multiplatform на симуляторе iPhone

Что я делаю

Я пробую запустить тестовый проект Compose Multiplatform, созданный на сайте:

Параметры

Что я пробовал

Открыть в Fleet

Получил ошибку:

Fleet

Открыть в Android Studio

Он успено синхронизировался. Смотрю в конфигурации запуска, вижу iosApp.

Run your application on iOS

  1. Launch Xcode in a separate window to complete the initial setup. If it's the first time you launch Xcode, you may also need to accept its license terms and allow it to perform some necessary initial tasks.
  2. In Android Studio, select iosApp in the list of run configurations and click Run. By default, the run configuration will start a simulated device available in Xcode and run the app there. If you don't have an available iOS configuration in the list, add a new run configuration.

https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html#run-your-application

Вроде бы все правильно. Но через некоторое время появляется крестик:

Крестик

Нажимаю Run. Он меня перекидывает в настройки:

Настройки

  1. In the Execution target list, select a simulated device and then click OK.

    Правильная конфигурация

  2. Click Run to run your application on the new simulated device.

В параметре Execution target должно быть устройство iPhone 14 Pro Max. Но список почему-то пустой:

Пустой

Как я предпологаю, на устройстве macOS, показанном в картинке в цитате выше, установлена macOS Ventura/Sonoma.

Выполнить задачу gradle assemble и запустить из Xcode

Еще я попробовал выполнить gradle assemble, а потом скопировать скомпилированный [проект]/composeApp/build/bin/iosSimulatorArm64/ComposeApp.framework в папку [проект]/iosApp/iosApp. Открыл Xcode, попробовал скомпилировать:

Xcode

Undefined symbol: _OBJC_CLASS_$_UITextLoupeSession

Запустить в Xcode сразу после синхронизации

Получил такую же ошибку, как выше.

Вопрос

  • Как сделать так, чтобы в списке целевых устройств появился симулятор iPhone 14 Pro Max (последняя поддерживаемая модель для моего Xcode)? Или чтобы можно было скомпилировать из Xcode?
  • Стоит ли мне обновиться до Ventura через OpenCore Legacy Patcher? К сожалению, мой MacBook поддерживает только macOS Monterey.

Характеристики

Система

Все характеристики взяты из меню Об этом Mac.

Характеристика Значение
Система macOS Monterey 12.7.6
Ноутбук MacBook Air (13-inch, Early 2015)
Процессор 1,6 GHz 2‑ядерный процессор Intel Core i5
Оперативная память 4 ГБ 1600 MHz DDR3
Графика Intel HD Graphics 6000 1536 МБ
Встроенная память 121,12 ГБ

Программы

Программа Версия
Xcode 14.2 (14C18)
iOS в симуляторе 16.2
Android Studio 2024.2.1.11

Ответы (1 шт):

Автор решения: schmidt9

Вероятно что-то с совместимостью версий симулятора/Xcode/Android Studio/настроек проекта, я проверил на Xcode 16.2, проект успешно запускается и из Android Studio, и из Xcode, но и в Xcode 14.2 он по идее должен запускаться, так как в проекте выставляется iOS 15.3, поддерживаемая этой версией Xcode

Еще я попробовал выполнить gradle assemble, а потом скопировать скомпилированный [проект]/composeApp/build/bin/iosSimulatorArm64/ComposeApp.framework в папку [проект]/iosApp/iosApp

в этом нет необходимости, по идее новый проект должно просто запускаться без всякой настройки, попробуйте создать еще один проект с нуля и после синхронизации в Android Studio открыть его в Xcode и запустить без всяких изменений

Дополнение

Касательно ошибки Undefined symbol: _OBJC_CLASS_$_UITextLoupeSession - Ваша версия Xcode не поддерживает Compose, нужен как минимум Xcode 15 (https://github.com/JetBrains/compose-multiplatform/issues/4821), поэтому может и стоит попробовать OpenCore Legacy Patcher, но лично я по этому вопросу к сожалению ничем помочь не могу

→ Ссылка