Расширение не запускается или не появляется в симуляторе iPhone Duo — хотя основное приложение работает.
Сначала проверьте тип расширения и официальные примечания именно к установленному выпуску Xcode 27.1; ограничение симулятора не доказывает ошибку приложения. Проверку интерфейса и поведение расширения принимайте отдельно.
Материал предназначен независимым iOS-разработчикам, чьи виджеты, расширения «Поделиться» или другие расширения не запускаются в симуляторе.
Он также пригодится командам, которые выбирают среду для проверки iPhone Duo и хотят понять, какие результаты можно считать подтверждёнными.
Если среды macOS и Xcode пока нет, в конце приведён способ оценить, поможет ли временный удалённый Mac.
Последняя проверка сведений о платформе: 23 октября 2026 года. Дата и подготовка к выходу устройства сверяются с объявлением Apple для разработчиков о подготовке приложений; состояние выпуска Xcode следует повторно сверять с официальными записями Apple Developer Releases.
Сначала отделите ограничение симулятора от ошибки приложения
В примечаниях к Xcode 27.1 RC указана известная проблема: симулятор iPhone Duo не может запускать и отлаживать большинство App Extension. Это относится к версии-кандидату RC. Само по себе это замечание не доказывает, что такая же проблема осталась в окончательном выпуске Xcode 27.1. Перед выводом проверьте примечания к выпуску Xcode 27.1 и отдельно найдите сведения именно об официальном выпуске, а не только о RC.
Почему расширение может не стартовать в симуляторе, хотя приложение собрано? Возможны разные причины: ограничение конкретной среды симулятора, неверно выбранная схема сборки, отсутствие расширения в ожидаемом продукте или ошибка при вызове из приложения-хоста. Пока не проверены эти варианты, сообщение об ошибке запуска нельзя надёжно приписать коду расширения.
Не считайте любую запись RC актуальной характеристикой финальной версии. Если в официальных примечаниях финального выпуска нет ясного подтверждения, зафиксируйте статус как «требует проверки». Не заменяйте этот пробел предположением о том, что поддержку уже добавили или, наоборот, что ограничение точно сохранилось.
У Apple есть отдельные инструкции для конкретных видов расширений. Например, документация по отладке виджетов описывает проверку WidgetKit. Общая документация по App Extension даёт другой контекст и не служит универсальным списком совместимости всех расширений с каждым симулятором. Сверяйте тип, сценарий запуска и версию инструмента вместе.
Зафиксируйте тип расширения и наблюдаемый сбой
До изменения кода составьте краткую карточку воспроизведения. Запишите тип расширения, способ его вызова и приложение-хост. Для виджета укажите, откуда он добавляется и как обновляется; для расширения «Поделиться» — какое приложение вызывает системное меню и при каком содержимом. Другие типы проверяйте по их собственному сценарию запуска.
Отдельно отметьте устройство в Xcode и условия воспроизведения: выбранный симулятор iPhone Duo, состояние приложения-хоста и нужную ориентацию интерфейса. Эти сведения позволяют повторить проверку и не смешивать запуск расширения с оценкой его отображения. Не делайте вывод о поддержке по одному проекту или одному виду расширения.
Какие виды расширений поддерживаются симулятором iPhone Duo в Xcode 27.1? Не выводите общий перечень из замечания про «большинство» расширений в RC. Для конкретного типа проверьте финальные примечания Xcode, документацию соответствующей технологии и доступный сценарий запуска. Если официальное описание не даёт однозначного ответа, оставьте совместимость неподтверждённой и планируйте отдельную проверку в поддерживаемой среде.
Полезно различать три симптома:
- Расширение не видно в системном интерфейсе. Проверьте, установлено ли приложение-хост с нужным расширением и подходит ли контекст для его появления. Для сценариев, где приложение обнаруживает расширения, полезны правила из документации Apple о поиске App Extension в приложении.
- Вызов есть, но запуск не происходит. Сохраните текст ошибки, время запуска и журнал Xcode. Затем сопоставьте сбой с ограничениями конкретного симулятора и типа расширения.
- Расширение стартует, но ломается интерфейс или обмен данными. Это уже отдельный симптом. Зафиксируйте действия до сбоя, состояние хоста и то, происходит ли ошибка до отображения интерфейса или после взаимодействия.
Результат одного этапа сужает область поиска, но не всегда устанавливает причину. Например, отсутствие расширения среди доступных системных действий может указывать на упаковку или условия обнаружения; оно не подтверждает, что симулятор вообще поддерживает этот сценарий.
Сверьте Scheme, цель запуска и продукт сборки
Перед повторной сборкой откройте в Xcode активную Scheme и проверьте, что она относится к нужному проекту и приложению-хосту. Затем сверьте выбранное устройство запуска, target основного приложения и target расширения. Смысл проверки не в том, чтобы запустить расширение как самостоятельное приложение: для соответствующих типов оно запускается из хост-приложения или через предусмотренный системный сценарий.
Apple описывает настройку схем в руководстве по изменению схем сборки проекта. Сопоставьте шаги сборки, выбранную конфигурацию и цель запуска с тем, что требуется для воспроизведения. Если проект содержит несколько схем, не полагайтесь на название схемы: проверьте её состав и фактическую цель.
Чтобы увидеть ключевые параметры сборки, выполните команду из корня проекта, заменив переменные на значения своей среды:
xcodebuild -showBuildSettings \
-scheme "$SCHEME" \
-destination "$DESTINATION" |
grep -E 'PRODUCT_BUNDLE_IDENTIFIER|BUILT_PRODUCTS_DIR|WRAPPER_EXTENSION'
Команда показывает настройки выбранной схемы и назначения, а не подтверждает успешный запуск расширения. Сопоставьте идентификатор приложения и каталог продуктов с конфигурацией тестируемого хоста. Справочник Apple по параметрам сборки Xcode пригодится, если значение отличается от ожидаемого.
После сборки проверьте, что целевой продукт расширения действительно создан и попал в ожидаемую структуру приложения. Для поиска продуктов с расширением .appex можно использовать:
find "$BUILT_PRODUCTS_DIR" -name '*.appex' -print
Найденный файл — полезное свидетельство наличия продукта сборки, но не доказательство, что он корректно установлен, обнаруживается системой или может быть запущен данным симулятором. Сверьте расположение и упаковку с типом расширения и документацией Apple. Для фактического запуска отдельно проверьте, что в Xcode выбраны соответствующие приложение-хост и устройство. Описание запуска приложения в симуляторе или на физическом устройстве помогает не смешивать цель сборки с целью запуска.
Как понять, что проблема именно в проекте? Если расширение отсутствует в продукте сборки, схема выбирает не тот target или приложение-хост не соответствует сценарию, сначала исправляйте конфигурацию. Если продукт собран и выбран правильный хост, но запуск не удаётся только в конкретном симуляторе, этого всё ещё недостаточно для вывода о дефекте приложения: сравните результат с официальными ограничениями и поддерживаемой средой.
Соберите доказательства по этапу отказа
При запуске сохраните полный текст ошибки и сообщения, относящиеся к расширению и хост-приложению. Не ограничивайтесь скриншотом интерфейса: он показывает результат, но обычно не объясняет, на каком этапе произошёл отказ. Запишите последовательность действий до сбоя, схему, назначение и конфигурацию сборки. Если неисправность проявляется не каждый раз, отметьте условия, при которых её удаётся воспроизвести.
Разделите журнал на наблюдения и выводы. «Приложение-хост собрано, расширение найдено в продуктах, при вызове в симуляторе появляется такая-то ошибка» — проверяемое наблюдение. «Симулятор блокирует этот тип расширения» — предположение, пока его не подтверждают официальные сведения для финального Xcode или сравнительная проверка в разрешённой среде.
Что делать, если симулятор не позволяет отладить расширение? Сначала сохраните конфигурацию и диагностические данные, затем проверьте финальные release notes и документацию конкретного типа. Если документация предписывает другой способ отладки, используйте его; для виджетов, например, ориентируйтесь на инструкции Apple по отладке WidgetKit. Не выдавайте запуск основного приложения за успешный тест расширения.
При необходимости повторите запуск после очистки или переустановки продукта, но меняйте за раз только одну переменную: схему, конфигурацию, устройство или состояние хоста. Иначе исчезновение ошибки не покажет, какое изменение повлияло на результат. Очистка не устраняет ограничение платформы и не является подтверждением корректной упаковки.
Для отчёта достаточно связать каждый симптом с артефактом: журналом Xcode, настройками сборки, найденным продуктом или шагами воспроизведения. Так команда сможет отделить конфигурационную неисправность от неполной поддержки среды и повторить диагностику после обновления Xcode.
Разделите проверку интерфейса и поведения расширения
Симулятор iPhone Duo используйте для тех задач, которые он действительно позволяет выполнить: например, для визуальной проверки доступного интерфейса и поведения основного приложения. Но отдельный успешный запуск приложения не доказывает, что виджет, расширение «Поделиться» или другой App Extension был вызван и отработал. В отчёте укажите, что именно проверялось, а что осталось за пределами среды.
Для поведения расширения выберите среду, разрешённую документацией Apple и доступную команде. Это может быть физическое устройство или другая документированная конфигурация, если она поддерживает нужный сценарий. Уточните требования к типу расширения и способу вызова по официальным материалам; доступность одного способа для виджета не означает, что тот же порядок подходит любому расширению.
Как принять расширение, если физического iPhone Duo пока нет? Если доступной поддерживаемой среды для конкретного сценария нет, отметьте поведение как «не проверено». Можно завершить отдельную проверку интерфейса в симуляторе, но нельзя переносить её результат на запуск расширения. Когда альтернативная среда доступна, сохраните её название, версию инструментов и выполненные шаги, чтобы результат можно было повторить.
Перед выпуском используйте короткий проверочный список. Каждый пункт должен подтверждаться наблюдением или ссылкой на официальную документацию:
- [ ] Записаны версия Xcode и точный тип расширения.
- [ ] Зафиксированы приложение-хост, системный вход и условия воспроизведения.
- [ ] Проверены активная Scheme, target запуска и продукт расширения.
- [ ] Результат сборки отделён от результата установки и вызова.
- [ ] Примечания RC не выданы за описание финального выпуска.
- [ ] Для выбранного типа проверены актуальные официальные сведения о поддержке.
- [ ] Интерфейс симулятора и поведение расширения имеют отдельные статусы.
- [ ] Непроверенные сценарии явно отмечены, а не включены в успешную приёмку.
По завершении присвойте каждому сценарию один из трёх статусов: «проверено», «ограничено средой и не проверено» или «требует дополнительной проверки». Такая формулировка точнее, чем общий вывод «тесты прошли»: она показывает, какой результат получен и какие пробелы остались.
Выберите среду под оставшуюся проверку
Если в распоряжении только текущий симулятор и он не поддерживает нужное поведение, выбор сводится не к повторению той же сборки, а к получению подходящей среды или переносу проверки. Локальный Mac удобен, когда он уже есть и тесты запускаются регулярно. Но покупка отдельного компьютера ради разовой диагностики может оказаться неоправданной; к тому же локальная машина не снимает необходимость вручную фиксировать версии инструментов и условия воспроизведения.
Удалённый Mac может подойти для временной работы с macOS и Xcode, если команда заранее проверила доступный образ среды, способ управления и возможность выполнить нужную проверку. Он не заменяет физическое устройство там, где требуются его функции или подтверждение поведения на устройстве. Поэтому сначала определите, какие действия будут выполняться удалённо, а какие всё равно останутся непроверенными. Для оценки вариантов можно сопоставить подходы к работе с Mac, а порядок подготовки среды сверить с руководством по началу работы.
Временная аренда Mac у NUMACS имеет смысл, когда готового macOS-окружения нет, а проверка нужна для ограниченного цикла сборки и диагностики. По сравнению с уже настроенным локальным Mac удалённый вариант добавляет зависимость от сети, требует проверить доступ к Xcode и может быть неудобен, если тесту необходим физический интерфейс или длительная нагрузка. Если эти ограничения приемлемы, перед выбором срока аренды проверьте текущие условия на странице предложений NUMACS. Если тесты идут постоянно и нужна физическая периферия, собственный Mac может быть практичнее.
Итог для выпуска должен описывать не только то, что удалось запустить, но и границы подтверждения: проверено, ограничено средой и не проверено либо требует дополнительной проверки. Пока официальные примечания финального Xcode 27.1 не подтверждают состояние ограничения из RC, не переносите его на окончательный выпуск как установленный факт.
Numacs облачный Mac
Продолжите отладку на удалённом Mac
NUMACS предоставляет выделенный физический Mac на Apple Silicon для сборки и проверки приложений в среде macOS.
