Ошибка встроенной двоичной проверки валидации
Со вчерашнего дня Xcode делает глупые вещи, пытаясь запустить мое приложение WatchKit на моем iPhone.
Это дает мне ошибку:
Ошибка встроенной двоичной проверки.
Ошибка: предупреждение: есть ли каталог
Это не очень полезно, и, похоже, он жалуется на профилирование профилей моей целевой задачи Watchkit. Я думаю, что правильно настроил его, выполнив этот ответ.
Вот как я настроил свои профили. Три идентификатора приложения и шесть профилей (три для разработки и три для распространения).
Основное приложение:
![enter image description here]()
Расширение WatchKit:
![enter image description here]()
WatchKit Watch App:
![enter image description here]()
Ответы
Ответ 1
У меня была собственная структура, связанная и встроенная в расширение WatchKit и приложение. Удаление рамки из General > Embedded Binaries из WatchKit Extension исправило это для меня. Мне пришлось удалить мою папку Build и перезапустить Xcode.
Ответ 2
Я смог решить проблему с помощью правильной настройки профилей Provisioning Profiles.
С Xcode 6.2
я смог выполнить сборку разработки/отладки с автоматическим набором и без дополнительных PP для разработки на портале, но с использованием подготовки команды.
Теперь с Xcode 6.3
мне пришлось добавить 3 явных PPs для разработки на портале и назначить их в настройках проекта.
Ответ 3
Я тоже борюсь с этой ошибкой. Для меня иногда он строит, иногда это не так. Вот как я в настоящее время могу заархивировать приложение WatchKit. Я не претендую ни на какие знания о том, почему это работает, только то, что оно работает для меня.
- Clean Shift-Command-K
- Выйти из Xcode
- Удалить файлы в ~ Библиотеке/Разработчике/Xcode/Производные данные
- Повторно открыть Xcode и Архив
Ответ 4
ОБНОВЛЕНИЕ: У меня возникла эта проблема в другом проекте и удалось решить ее, удалив пробелы в моих целевых именах приложений и расширений приложения WatchKit. Поэтому, прежде чем мои целевые имена были APPNAME WatchKit App
и APPNAME WatchKit Extension
, изменили их на APPNAMEWatchKitApp
и APPNAMEWatchKitExtension
Исправлено все!
ОРИГИНАЛ: Просто чтобы добавить мои два цента, я боролся с этой проблемой в течение нескольких недель. Я сузил его до включения CocoaPods в проект, но без более описательной ошибки я понятия не имею, почему.
Я знаю, что мои профили обеспечения правильны, поскольку пустой проект (включая целевую страницу WatchKit) успешно архивирует их. В моем расширении WatchKit нет статических библиотек, чтобы не проблема.
В итоге единственное, что надежно работает, - это использовать xcodebuild
+ xcrun
в терминале для сборки и архивирования моего проекта. В этой статье хорошо объясняется xcode в терминале.
Ответ 5
Для меня единственным способом исправить это было удаление всех пробелов из имени схемы и просмотр имени приложения.
Чтобы изменить имя схемы: (например, схема "amazingapp RC" )
1) Нажмите на схему в xCode (там, где вы выбираете устройство/симулятор)
2) Из списка выберите: "edit schema"
3) Когда новый модальный открытый нажмите "дублировать схему" в левом нижнем углу.
4) Выберите собственное имя без пробелов и сохраните.
5) Теперь нажмите схемы управления и выберите старый.
6) Удалите его, нажав кнопку "-"
Теперь пришло время для имени расширения:
1) Нажмите на схему в xCode (там, где вы выбираете устройство/симулятор)
2) Выберите схему расширения
3) Нажмите "редактировать схему"
4) Выберите "Архив" (отпустите) в нижней части левого раздела
5) Введите имя пользователя без пробелов в поле "Имя архива"
6) Закрыть.
Теперь build- > clean, build- > archive, и вам должно быть хорошо идти.
Ответ 6
Я следил за предложениями @dogsgod, отозвал все мои сертификаты и т.д., более 6 профилей, не повезло. После этого в течение почти 6 часов другой член команды проверил это, и он работал (позволяя xcode исправлять проблемы для них). Убедитесь, что группы включены для всех идентификаторов приложения (я использую группы для обмена данными между часами и основным приложением)
Итак, я думал, что это всего лишь мой xcode.
Затем я пошел к git, клонировал его, а затем скомпилировал его просто отлично.
Возможно, все в моем gitignore избавилось от того, что файлы блокировали меня. Или, возможно, потому, что я вытащил его после того, как они его совершили. Это почти просто вуду в этот момент, но он работал
Ответ 7
В моем случае это были мои настройки Xcode.
У меня были настройки DerivedData → Advanced Settings (Build Location) на "Custom" = "Относительно рабочей области".
Я изменил его на Unique, и это заставило его работать.
Надеюсь, это поможет кому-то.
Ответ 8
ИЗМЕНИТЬ:
Через день я могу поделиться еще одной мыслью. Хотя клонирование git работает, проблема возникает после внесения некоторых изменений. Это заставляет меня задаться вопросом, возникает ли проблема из-за плохого форматирования файла (например, не-unix-подобного EOF или подобного) или просто ошибки в Xcode. В любом случае, мой рабочий процесс в настоящее время выглядит следующим образом:
1) git clone to another directory
2) archive
3) if there is an error, I need to fix it,
4) git commit & git push
5) repeat steps 1 & 2 ...
Что надоедливо, но это единственный способ, которым я могу заархивировать свой проект и загрузить его в App Store...
ORIGNAL POST:
Я тоже столкнулся с этой ошибкой. Мой проект использует CocoaPods, несколько целей и схем сборки, а также групповые права. Иногда я не могу построить, хотя это исправление (см. Ниже), но проблема с архивированием сохраняется в течение более длительного времени. После двух дней борьбы с ним мое резюме выглядит следующим образом:
Я следил за всеми ответами, и я вижу, что иногда делаю:
1) чистый проект
2) (необязательно - не обязательно требуется) перезапустить Xcode
3) удалить содержимое папок с данными.
позволяет мне скомпилировать и запустить приложение. Но я все еще не могу архивировать. Иногда кажется, что я должен сделать это дважды.
Помимо вышеизложенного, я попытался (и не смог архивировать) следующие предложения:
- переименуйте имена целей (и содержащие папки), чтобы НЕ включать пробелы, цели Extension и WatchApp не имеют пробелов в своих именах, но проект не будет архивироваться (без изменений)
- Я проверил, что нет встроенных двоичных файлов в Extension Target (watchApp не имеет этой опции)
- Я попытался изменить цель развертывания (по умолчанию был iOS 8.3 для Xcode 6.4) и для 8.2, и для 8.4 без везения в архивировании.
- Я обновил AppID и все профили подготовки как для "adHoc", так и для "схем выпуска", также не повезло.
- и я проверил, что в текущей схеме, которую я пытаюсь архивировать, нет пробелов, но она все равно ничего не меняет.
- Я даже попробовал последнее предложение, то есть изменил местоположение папки Derived Data по умолчанию, но, как я подозревал, он ничего не изменил.
Интересно, что на самом деле HAVE WORKED - это предложение Майка Манха: проверить репо на другую папку.
После клонирования репо в новую пустую папку все вдруг заработало. Это приводит меня к выводу, что в моей текущей папке проекта могут быть некоторые оставшиеся файлы/неработающие ссылки/что-то еще. Я предполагаю, что это могло произойти, когда я пытался переустановить ветку разработки watchKit в текущую главную ветвь. Который начал замалчивать меня сумасшедшими конфликтами, и я, наконец, прервал перестановку. Возможно, это был момент, когда опция архива перестала нормально функционировать.
Ответ 9
У меня была та же проблема. В Xcode 6. * Я исправил его, очистив папку DerivedData. Но в новом Xcode 7 это не помогло. Поэтому я удалил пробелы в WatchKit Extension и WatchKit App ( "planckMailiOS WatchKit App" → "planckMailiOSWatchKitApp" и "planckMailiOS WatchKit Extension" → "planckMailiOSWatchKitExtension" ).