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.