Xcode 4: сбой сборки, нет проблем


90

Приложение отлично работает в симуляторе, строит и запускает.

Когда я подключаю свое устройство (iPhone 3GS под управлением iOS 4.3) и нацеливаюсь на iPhone, появляется сообщение «Сбой сборки» и «Нет проблем».

В окне результатов сборки все зеленое, есть галочка, включая уведомление о сбое сборки .

Расширение стенограммы не показывает ошибок.

Я не могу исключить возможность ошибки подписи или обеспечения, но он дал мне эти ошибки, я их исправил, и теперь он не дает мне никаких ошибок или проблем, просто «Сборка не удалась; проблем нет»

  • Каким образом сборка может завершиться неудачно?
  • Есть ли способ посмотреть результат сборки, чтобы узнать, смогу ли я найти причину сбоя без проблем?
  • Производится ли сборка помимо списка проблем?
  • Я не вижу в окне сборки, где оно пытается загрузить приложение на мое устройство - этот вывод где-то еще?

Это происходит со мной прямо сейчас! Так обидно!
tallen11

1
Я думаю, stackoverflow.com/a/28064945/1709587 обычно отображает какое-то сообщение об ошибке; это гораздо более полезно, чем различные предположения, включенные в другие ответы, и должно быть отправной точкой для любого, кто пытается отладить эту ситуацию. Вы бы согласились, чтобы он оказался в верхней части страницы?
Марк Эмери

Ответы:


76

Я получаю сообщение «Build Failed» без ошибок в навигаторе проблем (только предупреждения). А вот навигатор отчетов правильно отображал ошибки.


4
Отлично, это показало мои ошибки. Теперь я могу перестать тратить свое время и фактически решить ошибку :)
Дэниел Райан

Спас мой день !! Спасибо
DZenBot 04

Пришлось почистить DerivedData + отключить BitCode (на всякий случай).
DevAndArtist 01

33

Используете ли вы «подчеркивание», «пробел» и т. Д. Для идентификатора пакета?

Используете ли вы .m вместо .h в одном из импортируемых файлов? #import "Photo.h"


1
Нет, я не использую ни пробел, ни подчеркивание в идентификаторе пакета.
Адам Дэвис

2
Благодарность! Для меня это было подчеркивание в идентификаторе Bundle.
cocoapriest

Благодарность! По какой-то причине мой идентификатор пакета был пустым.
tallen11

2
Спасибо. После удаления подчеркивания мой проект компилировался нормально. Я чувствую странную комбинацию ослепляющей ярости, облегчения и благодарности. КАК Я МОГУ БЫТЬ НАСТОЯЩИМ ДУРОКОМ, ЧТОБЫ ИСПОЛЬЗОВАТЬ ПРОГРАММУ В НАЗВАНИИ ПРОЕКТА?!?
Tina D.

1
ВОТ ЭТО ДА! У меня тоже была эта проблема. Подчеркнутый. Поменял на тире и все в порядке. Это абсолютно АБСУРДНОЕ ЯБЛОКО! Я люблю iOS. Я презираю запутанный процесс, который Apple использует для передачи вашего приложения на устройство для тестирования. В любом случае, спасибо за это исправление!
Д.А.

21

Первое, что я попробую, это очистить все (меню «Продукт» / «Очистить») и собрать заново. Возможно, вы уже пробовали это сделать.

Вы найдете (и можете наблюдать во время сборки) полный вывод сборки в Log Navigator. Это самый правый значок из маленьких значков чуть ниже кнопок «Выполнить» и «Сборка».

Файлы журнала сборки (и отладки) находятся в каталоге / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (и ../Debug соответственно).

Я не думаю, что есть какие-либо выходы для установки вашего приложения на устройство.


Да, уборка не помогает. Я использовал и просматривал выходные данные сборки в навигаторе журналов и в соответствующем журнале сеанса. Файлы журнала, на которые вы указываете, кажутся двоичными, поэтому похоже, что единственный доступ к ним, который у меня есть, - это навигатор журналов и журнал сеанса.
Адам Дэвис,

Что касается навигатора журналов, в моем случае у меня был журнал, который был в будущем (поскольку я изменил дату на компьютере на 1 день вперед для запуска некоторых тестов). Кажется, что xcode использует последний журнал (по дате сборки). Чтобы исправить это (в xcode 5), я удалил производную дату для проекта и перезапустил xcode, поэтому будущие журналы исчезли, а навигатор проблем начал показывать правильные предупреждения и ошибки.
alex-i

19

Есть ли место в названии продукта вашей цели?

Я знаю, что в более ранних версиях Xcode это не было проблемой, но похоже, что они что-то сломали в Xcode 4, поэтому он больше не работает (я подозреваю, что это как-то связано с бессмыслицей пути DerivedData). Вы можете добавить пробел к имени вашего приложения, как оно отображается на панели запуска вашего iDevice, установив CFBundleDisplayNameключ в чем- Info.plistто, кроме ${PRODUCT_NAME}.


Нет, имя приложения состоит из одного слова, без специальных символов, пробелов или чего-либо еще.
Адам Дэвис

Это сделало это для меня. Чувак, Apple находит новые способы затруднить разработчикам переход на их платформу. Сногсшибательная ошибка. !!
CF_Maintainer

Вы также не можете использовать подчеркивание в названии продукта
afrederick

13

В одном из местных списков рассылки Cocoa Heads меня посоветовали попробовать создать небольшой образец проекта по умолчанию - что я должен был сделать вначале, чтобы убедиться, что моя подготовка и подписание работают. Он собран и работал на моем устройстве без проблем, поэтому все признаки указывают на проблему с моим кодом или проектом.

Я буду перебрасывать вещи из существующего проекта в новый образец проекта, и если он потерпит неудачу аналогичным образом, я смогу сузить проблему до меньшей интересующей области.


Я добавил основные функции приложения в новый проект, и он работает нормально. Единственное, что я на этот раз сделал иначе, так это то, что я не настроил универсальный двоичный файл (только для iPhone сейчас) и отключил все, кроме портретной ориентации. Насколько я могу судить, все остальное то же самое, хотя, если я решу изучить это позже, я сравню файлы проекта и посмотрю, что еще может отличаться.

Поэтому решением для меня было начать новый проект и перенести всю функциональность из старого проекта в новый.

Возможно, воссоздание цели, как предлагает Пол в другом ответе, также исправит ее, но с таким простым перезапуском проекта с нуля для меня было легко.


У меня тоже была эта пробема. Я создал новый проект Xcode4 перед настройкой моего профиля сертификата / обеспечения, и он без проблем выдает ошибку. Как только они были настроены и я перезапустил Xcode, я смог запустить новый проект и запустить его без проблем. (Я знаю, что не очень помогает с существующим проектом.)
zekel

@zekel Интересно! Я запустил проект и запустил его на симуляторе, прежде чем приступить к процессу получения сертификатов и подготовки. Я полагаю, что у людей, которые не допустили истечения срока действия их резервов во время обновления, не было бы этой проблемы ...
Адам Дэвис,

7

У меня была та же проблема, и, как и кто-то другой, предположил, что это связано с идентификатором пакета. Я недавно поменял его, в качестве теста, и поставил в нем звездочку. Я исправил это, и мне пришлось очистить цель, и тогда это сработало.


У меня тоже была звездочка, и ее удаление решило мою проблему. Спасибо, что упомянули об этом.
SteveB 05

Использование подстановочного идентификатора (например, com.developername. *) Также было причиной проблемы для меня. Возврат к com.developername по умолчанию. $ {PRODUCT_NAME: rfc1034identifier} решил проблему. В настоящее время я использую Xcode 4.0.2
GnarlyDog

7

Это случилось со мной после удаления неиспользуемой цели. Кажется, что Xcode поместил пробел в CFBundleIdentifier моей оставшейся цели (com.company.etc). Мне пришлось отредактировать Info.plist с помощью внешнего текстового редактора, чтобы удалить его, и тогда он работал нормально.


это случилось и со мной. под целями, сводкой, идентификатором я избавился от пробела в начале. Шиш-яблоко. Сколько ошибок вы можете создать?
fregas 08

Идентификатор пакета был моей проблемой. Это находится в файле Info.plist.
bentford

7

Я просто играл с добавлением нескольких проектов в рабочую область и столкнулся с этой проблемой. У меня есть простая библиотека в одном из проектов, который я создавал, и я добавил цель на основе окна iOS, чтобы проверить ее. Я удалил первую цель, которую сделал для этого, чтобы переименовать ее. Прочитав это, я попытался удалить xcuserdata из пакета .xcodeproj, и это устранило мою проблему. Надеюсь, это поможет кому-то другому. Запуск Xcode 4.1 в OS X 10.7.1.


7

Пройдя через все эти ответы, у меня была точно такая же проблема, но что-то другое решило ее для меня.

Проблема:

После рефакторинга сборка завершилась неудачно. (Переименовал класс с помощью Edit -> Refactor -> Rename).

Самое глупое решение:

Выполните рефакторинг (переименуйте) что-нибудь еще (-_- "). После этого ошибка заключалась в том, что Xcode не смог переименовать все соответствующие файлы и не показывал ошибок. Затем, после другого рефакторинга, появились ошибки из предыдущего рефакторинга .


вот и все ! Я вручную переименовал свойство, и это вызвало проблему. спасибо
Ласло

6

У меня была такая же проблема. Я пытался исправить это, произошел сбой xcode. Я снова открыл его, и он работал нормально. Может мне повезло что ли? Как бы то ни было, мне все равно, что с ним не так, пока он работает сейчас


6

Если вы изменили идентификатор пакета и очистили проект, но это тоже не сработало, попробуйте очистить каталог / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData.

Меня устраивает.


6

Для меня сборка не удалась, без отображения ошибок в навигаторе проблем. Однако в навигаторе журналов в этом сеансе сборки я мог увидеть ошибку. В моем случае ошибка была необъявленной константой. Я импортировал требуемый файл заголовка, и проблема была решена. Я не уверен, почему эта ошибка не отображалась в навигаторе проблем.

Я попытался воспроизвести это поведение, намеренно изменив имя другой переменной. На этот раз ошибка отображалась в навигаторе проблем. Итак, я все еще не уверен, почему более ранняя ошибка не отображается в навигаторе проблем.

Надеюсь это поможет.


6

Вышеупомянутые решения не работают для меня.

Мое решение - переместить проект в другую папку.

Ошибки сборки тогда просто появляются, как обычно.



4

Я знаю, в чем проблема: в Info.plist -> Bundle Identifier: вы не можете использовать '_'. Например, com.mycompany.My_app недействителен, но com.mycompany.My-app в порядке.


3

У меня была точно такая же проблема при попытке скомпилировать существующий проект в xcode 4, и я почти прошел через боль воссоздания проекта.

Однако в последней попытке я заменил файл info.plist на новый, который включал дополнительные теги для «типов документов», «типов URL», «UTI экспортированного типа» и «UTI импортированного типа».

Похоже, это сработало и оказалось на удивление простым исправлением для моего проекта.


3

Это случилось со мной с моей целью UnitTest. Работал, а потом перестал. Я забыл, что просто удалил .h / .m в файловой системе и не удалил его из файла проекта, однако XCode не сообщил об этом.

Я понял это, запустив проект в командной строке, которая сообщила мне об ошибке:

/usr/bin/xcodebuild -target "UnitTest"

Запустите это в папке, в которой находится файл вашего проекта, и замените UnitTest своей целью - или просто не передавайте цель для создания цели по умолчанию.


3

У меня тоже была эта проблема, но причина была в другом:

У меня есть рабочее пространство с одним проектом. В этом проекте я использую фреймворк, который включается путем добавления проекта Xcode в мой проект. Я импортировал файл заголовка фреймворка в свой заголовок префикса (.pch). Это было глупо.

Решением было удалить #import файла заголовка фреймворка из моего файла заголовка префикса и добавлять его только там, где это необходимо.


3

Та же проблема здесь при сборке для устройства. Сборка не удалась, но в моем журнале все зеленые галочки. Очистка / удаление папки сборки не исправляет. Я читал в другом месте, что кто-то решил эту проблему, удалив и воссоздав цель, но я еще не полностью понял, как это сделать в XCode 4.


Моим временным решением было загрузить и установить XCode 3.2.6 с iOS 4.3. Я не понимал, что Apple также выпустила версию XCode 3, включающую iOS 4.3, позволяющую отложить обновление до XCode 4. Я отправил в Apple отчет об ошибке по проблеме сбоя сборки.


обновление от Apple:

Когда мы создаем этот проект - хотя и в версии после Xcode 4.0 - мы видим следующее на этапе ProcessProductPackaging в журнале сборки:

(null): ошибка: CFBundleIdentifier 'com.yourcompany.Magic_Carpet' содержит недопустимый символ '_' недопустимый идентификатор пакета 'com.yourcompany.Magic_Carpet'

Код ProcessProductPackaging был переработан совсем недавно, поэтому мы подозреваем, что он просто неправильно выдает ошибки в Xcode 4.0. Взгляните на стенограмму вашей собственной сборки, и если да, то это, вероятно, будет исправлено в будущем выпуске Xcode (мы не можем комментировать дальше, пока не будет выпущено исправление).

Я перешел с подчеркивания на тире, и проблема была решена.


2

То же самое случилось со мной по другой причине.

Я удалил get-task-allow из файла Entitlements.plist, оставив пустой список. В настройках сборки все еще был файл Entitlements.plist, указанный как мой файл Entitlements. Выбрал запуск с использованием моих настроек Ad-Hoc сборки на устройстве iOS с подключенным iPhone и увидел поведение, описанное в этой ошибке. Добавление get-task-allow back исправило это.


2

похоже, что есть много возможных причин этой проблемы. Мой оказался таким

Моя цель была настроена на использование несуществующего профиля подготовки.

Я настроил свой проект на использование нового профиля и удалил старый. Не осознавал, что у цели был свой собственный параметр профиля подготовки, который по-прежнему был установлен на старый (теперь удаленный) профиль.


2

Просто чтобы добавить еще один ответ после безуспешной попытки ВСЕ вышеперечисленного: мне пришлось перезапустить MacBook, а не только закрыть XCode, и это сработало для меня. Это закончилось тем, что XCode показал некоторые ошибки в Localizable.strings, которые он не отображал раньше.

надеюсь, это поможет


У меня было что-то похожее, Xcode 5.0.2: в одной из моих Localizable.strings была синтаксическая ошибка, которую Xcode не отображал при сборке.
Барт ван Куик

2

Я очищаю все пробелы в схемах проекта в xcschemes, и это решает эту проблему. Ебать Apple :( AppCode ROCKS!


1

см. http://developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html

Набор символов UTI. Идентификатор унифицированного типа - это строка Unicode, которая обычно содержит символы в наборе символов ASCII. Однако разрешена только часть символов ASCII. Вы можете использовать латинский алфавит в верхнем и нижнем регистре (A – Z, a – z), цифры от 0 до 9, точку («.») И дефис («-»). Это ограничение основано на ограничениях DNS-имен, установленных в RFC 1035.

Идентификаторы унифицированного типа могут также содержать любой из символов Юникода, больший, чем U + 007F.

Важно: любой недопустимый символ, появляющийся в строке UTI, например подчеркивание ("_"), двоеточие (":") или пробел (""), приведет к тому, что строка будет отклонена как недопустимый UTI. На уровне API ошибка не создается для недопустимых UTI.


1

У меня не было проблем с названием пакета, поэтому предлагаемые решения мне не помогли. Наконец, я установил знак «Не кодировать» для сборки, затем закрыл проект, затем удалил подготовку в органайзере, затем загрузил новую подготовку и добавил ее в органайзер, а затем установил их для сборки. Это сработало.


1

Это не технический ответ, а ответ «ошибка пользователя», который, вероятно, не относится к вашей ситуации. Это случилось со мной, и мои поиски привели меня к этим вопросам и ответам безрезультатно - пока я не осознал свою ошибку. У меня был установлен фильтр в навигаторе проблем, который не соответствовал ничему, о котором сообщалось как о проблеме. Когда я очистил фильтр, проблемы были отображены.

Обратите внимание, что симптомы были такими же, о которых вы спрашивали, и я понятия не имею, когда я установил этот фильтр (он должен быть унаследован от других представлений навигации), поскольку мне не потребовалась бы фильтрация в коротком списке.


1

У меня была похожая проблема. Нигде не смог найти ошибку. Удалил все мои профили подготовки и добавил новые.

Затем я попытался создать еще одно тестовое приложение для своего устройства и получил следующее сообщение об ошибке:

Ошибка подписи кода: идентификатор сертификата «Разработчик iPhone: xxxxxx» появляется в цепочке для ключей более одного раза. Инструмент кодового оформления требует, чтобы был только один.

Итак, я зашел в Связку ключей, нашел пару просроченных сертификатов с тем же именем и удалил их, и это помогло.

Довольно случайный, но, возможно, если вы попытаетесь создать другое приложение для устройства, как я, вам может повезти, и вы получите сообщение об ошибке, как и я, чтобы помочь диагностировать проблему.


1

Перейдите в Организатор в xcode. И на вкладке Project удалите этот проект. Позвольте xcode восстановить производные данные снова, чтобы исправить мою проблему.


1

Я столкнулся с аналогичной проблемой в XCode4.5, и во время работы над моим приложением XCode внезапно разбился.

После нескольких часов поиска я обнаружил, что один из моих файлов в моем приложении был удален при сбое xcode.

Я восстановил файл из корзины, и проблема была решена.


1

Я программировал приложение Mac OS X без кодовой подписи . Когда я включил песочницу в разделе «Права», автоматически включалась кодовая подпись, и я не мог создать новую сборку.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.