Xcode 11 Beta не будет собираться из-за WatchKit?

Работал на Xcode 10. Теперь в бета-версии я не могу собрать, я продолжаю получать эту ошибку:

«WatchKit» недоступен при сборке для симулятора iOS. Рассмотрите возможность использования #if !os(iOS) для условного импорта этой платформы.

введите здесь описание изображения


person jimijon    schedule 07.06.2019    source источник


Ответы (4)


У меня была такая же проблема для одного быстрого файла в расширении WatchKit. Выяснилось, что он является членом как приложения для iOS, так и расширения WatchKit. Я снял отметку с приложения iOS в разделе целевого членства для файла, чтобы оно принадлежало только целевому расширению WatchKit. Теперь проект успешно строится.

person ToniK    schedule 07.06.2019

Некоторые функции для связи Apple Watch с iPhone/iPad раньше были реализованы в рамках WatchKit. Но в какой-то момент его перенесли во фреймворк WatchKitConnectivity.

Если вы посмотрите в разделе «Фаза сборки» -> «Связать двоичный файл с библиотеками» вашей цели, вы увидите «WatchKit.framework» со статусом «Необязательно». iOS13+ стала более «строгой», поэтому она не будет собрана, пока я полностью не удалю «WatchKit.framework» и вместо этого не добавлю «WatchConnectivity.framework».

Также убедитесь, что ваш код iPhone/iPad использует «import WatchConnectivity» вместо «import WatchKit».

person user1988824    schedule 20.09.2019
comment
Это решение РАБОТАЛО ДЛЯ МЕНЯ, нам нужно УДАЛИТЬ WatchKit.framework в выбранной целевой фазе сборки -> Ссылка на двоичный раздел. - person sumanthkodi; 30.03.2020

Нам нужно использовать «Условный импорт», чтобы решить эту проблему.

Замените заголовок import WatchKit кодом ниже:

#if !os(iOS)
import WatchKit
#endif

Это решило мою проблему и успешно выполнило сборку в iOS 13.

person Manoj Kumar Chinikela    schedule 10.06.2019
comment
ну да, это тоже работает, но это было обновление, и старый Xcode, очевидно, был не таким строгим. Мой сброс целевых файлов и пара файлов исправили это для меня. - person jimijon; 12.06.2019

Xcode 11 удаляет WatchKit из iOS SDK. Из примечаний к выпуску:

Платформа WatchKit больше не входит в iOS SDK. Если вы используете API WatchKit из iOS, вам необходимо удалить это использование. Платформа WatchKit остается доступной в watchOS. Если вы используете API WatchKit из iOS, чтобы сделать вывод о доступности функций на сопряженных Apple Watch, включите информацию о своем примере использования при отправке отзыва на Помощник по обратной связи. (49707950)

Сюда входят плагины Cordova, которые ссылаются на WatchKit в plugin.xml:

<framework src="WatchKit.framework" />

Приведенная выше строка добавит WatchKit в качестве платформы для целевого приложения iOS. Вам нужно будет удалить это и добавить WatchKit только в цель просмотра вашего приложения.

person trebor    schedule 25.09.2019
comment
Этот ответ идет именно в том направлении, что вызывает проблему, поэтому он лучший! - person Viktor Malyi; 04.10.2019