Xcode 4: Помилка збірки, проблем немає


90

Додаток чудово працює в симуляторі, будує та працює.

Коли я підключаю свій пристрій (iPhone 3GS під управлінням iOS 4.3) і націлюю iPhone, у результаті з’являється повідомлення "Помилка збірки" з написом "Немає проблем".

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

Розгортання стенограм не показує помилок.

Я не можу виключити можливість помилки підписання або надання, але це дало мені ці помилки, я їх випрасував, і тепер це не видає мені помилок або проблем, просто "Не вдалося побудувати; проблем немає"

  • Якими способами збірка може провалитися без проблем?
  • Чи є спосіб, як я можу спостерігати за результатами збірки, щоб побачити, чи можу я знайти причину його збою без проблем?
  • Чи є результати збірки, вироблені поза списком проблем?
  • Я не бачу у вікні збірки, де він намагається завантажити додаток на мій пристрій - це вихід в іншому місці?

Це відбувається зі мною прямо зараз! Так розчаровує!
tallen11

1
Я думаю, що stackoverflow.com/a/28064945/1709587 зазвичай відображає якесь повідомлення про помилку; це набагато корисніше, ніж різноманітні припущення, включені в інші відповіді, і має бути відправною точкою для тих, хто намагається налагодити цю ситуацію. Чи зможете ви прийняти його, щоб донести його до верхньої частини сторінки?
Mark Amery

Відповіді:


76

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


4
Чудово, це показало мої помилки. Тепер я можу перестати витрачати свій час і фактично вирішити помилку :)
Даніель Райан,

Врятував мій день !! Дякую
DZenBot

Мені довелося очистити DerivedData + відключити BitCode (про всяк випадок).
DevAndArtist

33

Ви використовуєте "Підкреслення", "Пробіл" тощо для ідентифікатора набору?

Чи використовуєте ви .m замість .h в одному із своїх імпортів? #import "Photo.h"


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

2
Дякую! Для мене це було підкресленням в ідентифікаторі Bundle.
cocoapriest

Дякую! Мій ідентифікатор набору з якихось причин був порожнім.
tallen11

2
Дякую. Після видалення підкреслення мій проект склався просто чудово. Я відчуваю дивне поєднання сліпучої люті, полегшення та вдячності. ЯК МОЖЕ БУТИ ТАКИМ БУРНЕМ, ЩОБ ВИКОРИСТОВУВАТИ БЕЗБЕЗПІД В ІМЕНІ ПРОЕКТУ?!?
Тіна Д.

1
ОЦЕ ТАК! У мене теж було це питання. Підкреслено. Змінено на тире, і все в порядку. Це абсолютно АБСУРДНЕ ЯБЛУКО! Я люблю iOS. Я зневажаю заплутаний процес, який Apple використовує, щоб перенести ваш додаток на пристрій для тестування. У будь-якому разі, дякую за це виправлення!
DA.

21

Перше, що я спробував би очистити все (меню Product / Clean) і побудувати його знову. Можливо, ви вже спробували.

Ви знайдете (і ви можете спостерігати під час збірки) повний результат збірки в Log Navigator. Це найправіша піктограма з маленьких піктограм трохи нижче кнопок «Виконати та побудувати».

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

Я не думаю, що для встановлення вашої програми на пристрої є вихідні дані.


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

Що стосується Log Navigator, у моєму випадку у мене був журнал, який був у майбутньому (оскільки я змінив дату на комп’ютері на 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 Цікаво! Я також запустив проект на симуляторі, перш ніж пройти процес отримання сертифікатів та забезпечення. Я думаю, люди, які не дозволили закінчити термін дії своїх положень під час оновлення, не мали б цієї проблеми тоді ...
Адам Девіс,

7

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


У мене теж була зірочка, і її видалення вирішило мою проблему. Дякую, що згадали про це.
SteveB

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

7

Це сталося зі мною після видалення невикористаної цілі. Здається, Xcode поставив пробіл у моєму цільовому CFBundleIdentifier (com.company.etc). Мені довелося редагувати Info.plist за допомогою зовнішнього текстового редактора, щоб видалити його, і тоді він працював нормально.


це сталося і зі мною. під цілями, резюме, ідентифікатор, я позбувся пробілу на початку. Яблуко шиш. Скільки прийомів ви можете створити?
fregas

Моєю проблемою була ідентифікація набору. Це є у файлі Info.plist.
bentford

7

Я просто грав з додаванням декількох проектів у робочій області і отримав цю проблему. У мене є проста бібліотека в одному з проектів, яку я будував, і для тестування я додав цільову вікно iOS. Я видалив першу ціль, яку створив для цього, щоб перейменувати її. Прочитавши це, я спробував видалити xcuserdata зсередини пакета .xcodeproj, і це вирішило мою проблему. Сподіваюся, це допомагає комусь іншому. Запуск Xcode 4.1 на OS X 10.7.1.


7

Пройшовши всі ці відповіді, у мене виникла однакова проблема, але щось інше вирішило це для мене.

Проблема:

Помилка збірки без проблем після рефакторингу. (Перейменовано клас за допомогою "Редагувати -> Рефактор -> Перейменувати").

Саме тупе рішення коли - або:

Перейдіть на рефакторинг (перейменуйте) щось інше (-_- "). Після цього помилка полягала в тому, що Xcode не зміг перейменувати всі відповідні файли і не показав помилок. Потім, після іншого рефактора, з'явилися помилки попереднього рефактора .


Це воно ! я перейменував властивість вручну, що спричинило проблему. дякую
Ласло

6

У мене була така сама проблема. Я намагався виправити помилку xcode. Я відкрив його знову, і він працював чудово. Може, мені пощастило чи що? Як би там не було, мені насправді байдуже, що з ним було, поки це працює зараз


6

Якщо ви змінили ідентифікатор пакета та очистили проект, але він також не спрацював, спробуйте очистити каталог / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData.

Це працює для мене.


6

Для мене збірка не вдалася без відображення помилок у Навігаторі видань. Однак у Log Navigator, під час сеансу побудови, я міг побачити помилку. У моєму випадку помилка була незадекларованою константою. Я імпортував необхідний файл заголовка, і проблема була вирішена. Я не впевнений, чому ця помилка не з’явилася у Навігаторі видань.

Я намагався відтворити цю поведінку, навмисно змінивши назву іншої змінної. Цього разу помилка відображалася у Навігаторі видань. Отже, я досі не впевнений у тому, чому попередня помилка не з’явиться у Навігаторі видань.

Сподіваюся, це допомагає.


6

Наведені вище рішення для мене не працюють.

Моє рішення - перенести проект в іншу папку.

Потім помилки збірки просто з’являються як зазвичай.



4

Я знаю, в чому проблема: У Info.plist -> Ідентифікатор набору: ви не можете використовувати '_'. Наприклад, com.mycompany.My_app недійсний, але com.mycompany.My-app OK.


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:

Коли ми створюємо цей проект - хоча і на версії post-Xcode 4.0 - ми бачимо наступне на кроці ProcessProductPackaging у журналі збірки:

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

Код ProcessProductPackaging був нещодавно переглянутий, тому ми підозрюємо, що він просто не видавав помилок належним чином у Xcode 4.0. Погляньте на розшифровку вашої власної збірки, і якщо так, то це, швидше за все, буде виправлено у майбутньому випуску Xcode (ми не можемо коментувати далі, поки не буде випущено виправлення).

Я перейшов з підкреслення на тире, і це вирішило проблему.


2

Щось саме трапилося зі мною з іншою причиною.

Я видалив get-task-allow з мого файлу Entitlements.plist, залишивши порожній список. Налаштування збірки все ще мали файл Entitlements.plist, вказаний як мій файл Entitlements. Вибрав запустити налаштування моєї спеціальної збірки на пристрої iOS із підключеним iPhone, і побачив поведінку, описану у цій помилці. Додано get-task-allow back, це виправлено.


2

здається, що існує багато можливих причин цієї проблеми. Моє виявилося таким

Моєю ціллю було встановлено використання неіснуючого профілю підготовки.

Я встановив у своєму проекті новий профіль, а старий видалив. Не зрозумів, що ціль мала власну настройку профілю підготовки, яка все ще була встановлена ​​як старий (тепер видалений) профіль.


2

Просто щоб додати ще одну відповідь після спроби ВСІХ вищезазначених безрезультатно: мені довелося перезапустити MacBook, не тільки закрити XCode, і це працювало для мене. Це закінчилося тим, що XCode показав деякі помилки в рядках Localizable.str, які раніше не відображалися.

Сподіваюся, це допомагає


Я отримав щось подібне, Xcode 5.0.2: сталася синтаксична помилка в одному з моїх рядків Localizable.str, який Xcode не відображав під час створення.
Барт ван Куїк

2

я очищаю всі пробіли в схемах проектів у xcschemes, і це вирішує цю проблему. F *** ing 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.

Ідентифікатори уніфікованого типу можуть також містити будь-який із символів Unicode, що перевищує U + 007F.

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


1

У мене не було проблем з назвою набору, тому запропоновані рішення для мене не працювали. Нарешті, я встановив знак «Не кодувати» для збірки, потім я закрив проект, потім видалив підготовку в організаторі, потім завантажив нову підготовку та додав її до органайзера, а потім встановив їх для збірки. Це спрацювало.


1

Це не технічна відповідь, а відповідь "помилка користувача", яка, ймовірно, не стосується вашої ситуації. Це трапилося зі мною, і мій пошук привів мене до цього запитання безрезультатно - поки я не зрозумів свою помилку. У мене в навігаторі видань був встановлений фільтр, який не відповідав нічому, про що повідомлялося як про проблему. Коли я очистив фільтр, проблеми відображались.

Зверніть увагу, симптоми були тими ж, про що ви запитували, і я не маю уявлення, коли я встановив цей фільтр (він повинен бути успадкований від інших подань навігації), оскільки мені не потрібна була б будь-яка фільтрація у короткому списку.


1

У мене просто була подібна проблема. Не вдалося знайти помилку ніде. Видалив усі мої профілі забезпечення та додав нові.

Потім я спробував створити ще один тестовий додаток для свого пристрою, і я отримав таке повідомлення про помилку:

Помилка підпису коду: Ідентифікація сертифіката «Розробник iPhone: xxxxxx» з’являється кілька разів у ланцюжку ключів. Інструмент кодового дизайну вимагає, щоб був лише один.

Тож я зайшов у Брелок, знайшов пару сертифікатів із простроченим терміном дії з тим самим ім’ям і видалив їх, і це зробило трюк.

Досить випадково, але, можливо, якщо ви спробуєте створити інший додаток на пристрої, як це робив я, можливо, вам пощастить отримати повідомлення про помилку, як і я, щоб допомогти діагностувати проблему.


1

Перейдіть до Організатора в xcode. А на вкладці «Проект» видаліть цей проект. Нехай xcode знову відновить похідні дані, щоб вирішити мою проблему.


1

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

Шукаючи годинами, я виявив, що один із моїх файлів у моїй програмі був видалений при аварії xcode.

Я відновив файл із кошика, і проблема вирішена.


1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.