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

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

Когда я прикрепляю свое устройство (iPhone 3GS под управлением iOS 4.3) и нацеливаю iPhone, результат "Build failed" с "No issues".

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

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

Я не могу исключить возможность ошибки при подписании или инициализации, но он дал мне эти ошибки, я их проглатывал, и теперь это не дает мне никаких ошибок или проблем, просто "Ошибка сборки", "Нет проблем"

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

Ответ 1

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

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


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

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

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

Ответ 2

Я получаю "Сбой сборки" без ошибок в навигаторе проблем (только предупреждения). Однако навигатор отчетов корректно отображает ошибки.

Ответ 3

Используете ли вы "Подчеркивание" и "Пробел" и т.д. для идентификатора Bundle?

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

Ответ 4

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

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

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Проблема:

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

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

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

Ответ 10

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

Ответ 11

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

Это работает для меня.

Ответ 12

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

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

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

Ответ 13

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

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

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

Ответ 14

Вы очистили папку сборки? Перейдите в меню "Продукт", удерживайте клавишу "Option" и выберите "Очистить папку сборки..."

Ответ 15

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

Ответ 16

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


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


udpate от Apple:

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

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

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

Я переключился с подчеркивания на тире и устранил проблему.

Ответ 17

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

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

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

Ответ 18

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

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

/usr/bin/xcodebuild -target "UnitTest"

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

Ответ 19

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

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

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

Ответ 20

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

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

Ответ 21

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

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

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

Ответ 22

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

Надеюсь, что поможет

Ответ 23

i очистить все пробелы в схемах проектов в xcschemes, и это разрешит эту проблему. F *** ing Apple:( AppCode ROCKS!

Ответ 24

см. 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.

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

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

Ответ 25

У меня не было проблем с именем пакета, поэтому предлагаемые решения не сработали для меня. Наконец, я установил Do not code sign для сборки, затем я закрыл проект, затем удалил инициализацию в организаторе, затем загрузил новое обеспечение и добавил его в организатор, а затем установил для сборки. Это сработало.

Ответ 26

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

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

Ответ 27

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

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

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

Итак, я вошел в Keychain, нашел пару истекших сертификатов с тем же именем и удалил их, и это сделало трюк.

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

Ответ 28

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

Ответ 29

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

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

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

Ответ 30

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