Не удалось получить дескрипторы для extensionBundleID
После добавления цели расширения в проект Xcode и попытки запустить ее на iOS 14 я получаю сообщение об ошибке:
SendProcessControlEvent:toPid: encountered an error: Error Domain=com.apple.dt.deviceprocesscontrolservice Code=8 "Failed to show Widget '***' error: Error Domain=SBAvocadoDebuggingControllerErrorDomain Code=1 "Failed to get descriptors for extensionBundleID (***)" UserInfo={NSLocalizedDescription=Failed to get descriptors for extensionBundleID (***)}." UserInfo={NSLocalizedDescription=Failed to show Widget '***' error: Error Domain=SBAvocadoDebuggingControllerErrorDomain Code=1 "Failed to get descriptors for extensionBundleID (***)" UserInfo={NSLocalizedDescription=Failed to get descriptors for extensionBundleID (***)}., NSUnderlyingError=0x7f9bac015910 {Error Domain=SBAvocadoDebuggingControllerErrorDomain Code=1 "Failed to get descriptors for extensionBundleID (***)" UserInfo={NSLocalizedDescription=Failed to get descriptors for extensionBundleID (***)}}} Domain: DTXMessage Code: 1
Есть идеи, что происходит не так?
17 ответов
Я решил эту проблему. Очистите папку Builder (возможно, в этом нет необходимости), затем перезагрузите iPhone. Снова запустите свой проект.
Для меня это было то, что мое устройство было на iOS 14.1, а цель развертывания была установлена на 14,3 для цели виджета. Решением было обновить цель развертывания, чтобы она соответствовала вашему устройству или ниже. Параметр «Цель развертывания» находится на вкладке «Общие» и в разделе «Информация о развертывании» (в моем случае я установил для него значение 14.0).
Для меня проблема была исключена
arm64
архитектура для
any iOS simulator
в настройках целевой сборки виджета (добавлено из-за моего устройства разработки M1).
При удалении этой исключенной архитектуры виджет работает без проблем.
Если у вас есть 2 виджета в вашей цели, закомментируйте виджеты, которые вы в настоящее время не тестируете.
@main
struct Widgets: WidgetBundle
{
@WidgetBundleBuilder
var body: some Widget
{
Widget1()
// Widget2()
}
}
Если добавленная вами цель расширения предназначена для виджета ...
Я выполнил некоторые из приведенных здесь предложений и успешно перезапустил свой телефон, но ошибка повторялась снова и снова, а перезагрузка телефона навязчива и занимает много времени. Для меня обходной путь, когда я получаю эту всплывающую ошибку, - это ..
1. На своем iPhone я нахожу виджет, над которым работаю, и удаляю его, нажимая и удерживая виджет, пока он не даст мне возможность удалить его с моего устройства.
2. В Xcode я снова создаю и запускаю схему виджетов, и больше никаких ошибок!
Это немного быстрее, и мне не нужно перезагружать телефон.
Примечание. Если по какой-то причине это не сработает, я переключаю свою схему сборки обратно на схему iPhone, выполняю сборку и запускаю, а затем меняю схему обратно на схему виджетов, и это обычно помогает.
Я столкнулся с той же проблемой.
У меня это происходит, когда я запускал виджет расширения с компьютера M1.
Оказывается, проблема заключалась в том, что я запускал Xcode с Rosetta, отключение которого исправило это для меня.
Чтобы включить/отключить розетту:
- Щелкните правой кнопкой мыши приложение Xcode
- Нажмите на
Get Info
- Снимите флажок
Open using Rosetta
- Очистить проект => Перезапустить Xcode
Для меня это было исправлено
- сначала запустить схему приложения вместо схемы расширения виджета
- доверять разработчику
- затем я переключился на запуск схемы расширения виджета.
Попробуйте перейти в "Настройки" -> "Общие" -> "Профили и управление устройствами" -> "Доверять своему сертификату", а затем перестройте и перезапустите приложение.
Что для меня не помогло, так это очистка производных данных, перезапуск симулятора и т. д. (ну, возможно, они тоже помогли). Что заставило его работать, так это сначала повторное развертывание основного приложения, а затем еще раз запустить схему WidgetExtension.
Примечание. Сначала мне пришлось исправить идентификатор пакета моего основного приложения, поскольку у него не был тот же префикс, что и у цели расширения виджета. Вероятно, поэтому сначала нужно было снова развернуть главную цель.
Я испытывал то же самое время от времени. Единственное, что постоянно решало это для меня, - это удалить приложение с моего устройства, а затем перестроить.
На данный момент все еще не уверен в основной причине.
То же самое случилось со мной, и проблема заключалась в том, что пути поиска пути выполнения (LD_RUNPATH_SEARCH_PATHS
) был пуст. Я очистил эту настройку сборки по ошибке. я добавил@executable_path/Frameworks
на «Пути поиска пути», что было подходящей для моего случая настройкой, и виджет снова начал работать.
Краткий ответ:
убедитесь, что точка входа вашего расширения (например, цели виджета) отмечена значком .
Длинный ответ:
у меня было приложение с виджетами для watchOS, и я разрабатываю дополнительные виджеты для iOS. Я добавил новую цель, и она сработала. Оба расширения имели собственную точку входа, отмеченную значком .
Затем я понял, что почти весь код был одинаковым для обеих целей. Я объединил их и удалил отдельные файлы. Но я забыл пометить новый код @main. Это вызвало ошибку.
Как только я добавил
Это случилось со мной после перемещения моего файла прав из корневого каталога в каталог виджета. Я попробовал этот ответ, но проблема не исчезла.
Пришлось вручную установить виджет на главный экран. После этого запуск из Xcode снова работал.
Я использую Flutter для подключения к Swift и создания этого виджета, я не запускал
флаттер сборки ios --config-only
И потом, я еще забыл добавить@main
в структуру виджета. Это должна быть структура, реализующая протокол виджета.
Это сработало для меня!
Я забыл, что работаю с более чем одной целью. Поэтому при запуске приложения обязательно выберите основную цель : я тестировал живые действия, но это должно быть ваше приложение, а не действие или дополнительная цель.
Как упоминалось здесь https://developer.apple.com/forums/thread/651611, установка новой системы сборки в File -> Workspace / Project settings (как для общих, так и для пользовательских настроек), похоже, помогает. Вы не избавитесь от предупреждения, но виджет может (см. Примечания) запуститься.
Примечание 1 - даже после этого изменения вероятность того, что он не запустится, составляет около 30 %. Просто нажмите "Выполнить" еще раз ♂️. (Навигатор отладки зависает при ожидании подключения)
Примечание 2 - иногда это вообще не работает. У меня сработало установка системы сборки на Legacy и обратно на New ♂️.
Примечание 3 - работа на устройстве пока без этих проблем (iOS 14 beta 7)
Протестировано на Xcode 12 beta v6.