Ошибка встроенной двоичной проверки валидации

Со вчерашнего дня 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" ).