Верна ли структура моего приложения для WatchOS? Как решить проблему с линковкой?
Есть Цель: Создать приложение для WatchOS (версия 11+) с использованием Iphone (ios 18), как компаньона (на него прилетают логи с часов и хранятся в течении определенного времени). Работа ведется в Xcode 16.4 на MacBook Pro M1 под бесплатной учеткой разработчика.
Учитывая ограничения бесплатной учетки, необходимо собрать в Xcode архив приложения (не подписанный сертификатом), переделать архив в файл.IPA и загрузить на часы с IPhone (предварительно загрузив и подписав приложение через AltStore).
В данный момент приложение состоит из двух таргетов (для IPhone и для Watch (на скрине "1" видна структура приложения)).
Изучив материалы по созданию подобного приложения, узнал, что существует еще один тип таргета - WatchKit Extention, который должен хранить в себе логику приложения для часов (Apple Watch). Но в xcode 16.4 не нашел такого типа таргета и автоматически этот таргет не создается(скрин "2").
В связи с этим решил описать всю логику приложения в структуре двух групп (те, что на скрине "1").
Основная проблема: При сборке приложения сталкиваюсь с ошибками (всего две ошибки и одно предупреждение. На скринах "3", "4", "5" виден полный текст ошибок), основная суть которых описана ниже:
Id: warning: Could not parse or use implicit file
'.../SwiftUICore.framework/SwiftUICore.tbd': cannot link directly with
'SwiftUICore' because product being built is not an allowed client of it
Это предупреждение говорит, что линковщик не может использовать SwiftUICore.tbd (Text-based Stub Library), потому что текущий продукт (наш Watch-таргет) не является допустимым клиентом для этого внутреннего фреймворка. SwiftUICore — низкоуровневый модуль SwiftUI, и прямой доступ к нему ограничен Apple для системных компонентов.
Undefined symbols for architecture arm64: "_main", referenced from:
___debug_main_executable_dylib_entry_point in command-line-aliases-file
Ошибка указывает на отсутствие функции _main, которая является точкой входа для исполняемого файла. Однако в выводе видно, что Xcode пытается сгенерировать динамическую библиотеку (.dylib) с флагом -dynamiclib, что странно для Watch-таргета, который должен быть приложением (.app), а не библиотекой.
ld: symbol(s) not found for architecture arm64 и clang: error: linker
command failed with exit code 1
Это следствие предыдущих проблем: линковка не завершилась из-за отсутствия _main и конфликта с SwiftUICore.
Что было сделано в рамках решения вопроса:
Я пробовал создать приложение "only Watch", которое не связано с Iphone, и при таком типе приложения, оно корректно компилируется. Но в таком случае возникает проблема при установке файл.IPA через AltStore (приложение не может быть установлено на Iphone, а без него оно никак не попадет на часы).
Работа с настройками существующих таргетов, также, не привела к успеху.
В связи с вышесказанным, вопросы:
- Есть ли возможность решить данную проблему в рамках бесплатной учетки разработчика?
- Возможно ли такое, что именно из-за того, что она (учетка) бесплатная, я не вижу дополнительных типов таргетов при создании в Xcode?
- Если проблема не в неверном таргете, то в чем?




