Xcode 4 : 빌드 실패, 문제 없음


90

앱은 시뮬레이터에서 잘 작동하고 빌드 및 실행됩니다.

장치 (iOS 4.3을 실행하는 iPhone 3GS)를 연결하고 iPhone을 대상으로하면 결과는 "문제 없음"과 함께 "빌드 실패"입니다.

빌드 결과 창을 보면 모든 것이 녹색이고 빌드 실패 알림을 포함하여 확인 표시가 있습니다.

성적 증명서를 확장해도 오류가 표시되지 않습니다.

서명 또는 프로비저닝 오류의 가능성을 배제 할 수는 없지만 이러한 오류가 발생하여 문제를 해결했으며 이제 오류나 문제가 발생하지 않고 "빌드 실패, 문제 없음"만 표시됩니다.

  • 어떤 방식으로 문제없이 빌드가 실패 할 수 있습니까?
  • 문제없이 실패한 이유를 찾을 수 있는지 확인하기 위해 빌드 출력을 볼 수있는 방법이 있습니까?
  • 이슈 목록 외에 생성 된 빌드 출력이 있습니까?
  • 내 기기에 앱을로드하려고하는 빌드 창에 표시되지 않습니다.이 출력이 다른 곳에 있습니까?

이것은 지금 나에게 일어나고 있습니다! 너무 답답 해요!
tallen11

1
나는 stackoverflow.com/a/28064945/1709587 이 일반적으로 일종의 오류 메시지를 표시 한다고 생각 합니다. 다른 답변에 포함 된 다양한 추측보다 훨씬 유용하며이 상황을 디버깅하려는 모든 사람의 시작점이되어야합니다. 페이지 상단으로 가져 오시겠습니까?
마크 Amery

답변:


76

문제 탐색기에서 오류없이 '빌드 실패'가 발생했습니다 (경고 만 표시됨). 그러나 보고서 탐색기는 오류를 올바르게 표시했습니다.


4
좋아요, 이것은 내 오류를 보여주었습니다. 이제 시간 낭비를 멈추고 실제로 오류를 해결할 수 있습니다. :)
Daniel Ryan

내 하루를 구했습니다 !! 주셔서 감사합니다
DZenBot

DerivedData를 정리하고 BitCode를 비활성화해야했습니다 (경우에 따라).
DevAndArtist

33

번들 식별자에 "밑줄"및 "공백"등을 사용하고 있습니까?

가져 오기 중 하나에서 .h 대신 .m을 사용하고 있습니까? #import "Photo.h"


1
아니요, 번들 ID에 공백이나 밑줄을 사용하지 않습니다.
Adam Davis

2
감사! 나에게는 번들 식별자의 밑줄이었습니다.
cocoapriest 2011

감사! 내 번들 ID가 어떤 이유로 비어 있습니다.
tallen11

2
감사합니다. 밑줄을 제거한 후 내 프로젝트가 잘 컴파일되었습니다. 나는 눈부신 분노, 안도, 감사의 이상한 조합을 느낍니다. 프로젝트 이름에서 언더 스코어를 사용하는 것이 어떻게 바보가 될 수 있습니까?!?
Tina D.

1
와! 나도 그 문제가 있었다. 밑줄. 대시로 변경하면 괜찮습니다. 이것은 절대적으로 터무니없는 사과입니다! 저는 iOS를 좋아합니다. 나는 애플이 테스트 할 기기에 앱을 설치하기 위해 사용하는 복잡한 과정을 경멸한다. 어쨌든,이 수정에 감사드립니다!
DA.

21

가장 먼저 시도 할 것은 모든 것을 청소 (제품 메뉴 / 청소)하고 다시 빌드하는 것입니다. 이미 시도했을 수도 있습니다.

로그 네비게이터에서 전체 빌드 출력을 찾을 수 있으며 빌드하는 동안 볼 수 있습니다. 실행 및 빌드 버튼 바로 아래에있는 작은 아이콘 중 가장 오른쪽에있는 아이콘입니다.

빌드 (및 디버그) 로그 파일은 / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (및 각각 ../Debug) 디렉터리에 있습니다.

기기에 앱을 설치하기위한 출력이 없다고 생각합니다.


예, 청소는 도움이되지 않습니다. 로그 탐색기 및 관련 세션 로그에서 빌드 출력을 사용하고 살펴 보았습니다. 지적한 로그 파일은 바이너리 인 것으로 보이므로 로그 탐색기와 세션 로그를 통해서만 액세스 할 수 있습니다.
Adam Davis

Log Navigator와 관련하여 제 경우에는 미래의 로그가있었습니다 (일부 테스트를 실행하기 위해 컴퓨터의 날짜를 1 일 전으로 변경했기 때문에). xcode가 최신 로그를 사용하는 것 같습니다 (빌드 날짜 기준). 이 문제를 해결하기 위해 (xcode 5에서) 프로젝트의 파생 날짜를 삭제하고 xcode를 다시 시작하여 향후 로그가 사라지고 Issue Navigator에 올바른 경고와 오류가 표시되기 시작했습니다.
alex-i

19

Target의 제품 이름에 공백이 있습니까?

이전 버전의 Xcode에서는 이것이 문제가되지 않는다는 것을 알고 있지만 Xcode 4에서 무언가를 망가뜨려 더 이상 작동하지 않는 것 같습니다 (DerivedData 경로 넌센스와 관련이 있다고 생각합니다). 의 CFBundleDisplayName키를 Info.plist다른 것으로 설정하여 iDevice의 런치 패드에 표시되는 앱 이름에 공백을 추가 할 수 있습니다 ${PRODUCT_NAME}.


아니요, 앱 이름은 모두 한 단어로되어 있으며 특수 문자, 공백 등이 없습니다.
Adam Davis

그것은 나를 위해 해냈다. 애플은 개발자가 플랫폼으로 이동하는 것을 더 어렵게 만드는 새로운 방법을 찾습니다. 마음 불고 오류. !!
CF_Maintainer

또한 제품 이름에 밑줄 수 없습니다
afrederick

13

로컬 Cocoa Heads 메일 링리스트 중 하나에서 작은 기본 샘플 프로젝트를 시도해 보도록 권유 받았습니다. 프로비저닝과 서명이 제대로 작동하는지 확인하기 위해 처음에해야했던 작업이었습니다. 문제없이 내 장치에서 빌드되고 실행되었으므로 모든 징후는 내 코드 또는 프로젝트의 문제를 가리 킵니다.

기존 프로젝트에서 새 샘플 프로젝트로 항목을 던지고 비슷한 방식으로 실패하면 더 작은 관심 영역으로 문제를 좁힐 수 있어야합니다.


새 프로젝트에 앱의 주요 기능을 추가했는데 제대로 실행되고 있습니다. 이번에 내가 다르게 한 유일한 일은 범용 바이너리를 설정하지 않고 (지금은 iPhone에만 해당) 세로 방향을 제외한 모든 항목을 끄는 것입니다. 다른 모든 것이 동일하다고 말할 수있는 한, 나중에 더 자세히 살펴보기로 결정하면 프로젝트 파일을 비교하여 무엇이 다를 수 있는지 확인합니다.

그래서 저에게 해결책은 새 프로젝트를 시작하여 이전 프로젝트의 모든 기능을 새 프로젝트로 이식하는 것이 었습니다.

Paul이 다른 답변에서 제안한 것처럼 대상을 다시 만드는 것도 문제를 해결할 수 있지만 처음부터 다시 시작하는 간단한 프로젝트로 나에게는 쉬웠습니다.


나도이 문제가 있었다. 인증서 / 프로비저닝 프로필을 설정하기 전에 새 Xcode4 프로젝트를 만들었는데 문제없이 오류가 발생했습니다. 일단 설정되고 Xcode를 다시 시작하면 새 프로젝트를 시작하고 문제없이 실행할 수있었습니다. (기존 프로젝트에는 별 도움이되지 않습니다.)
zekel 2011 년

@zekel 흥미 롭군요! 인증서를 받고 프로비저닝을 완료하기 전에 시뮬레이터에서도 프로젝트를 시작하고 실행했습니다. 나는 ... 자신의 조항이 업그레이드 중에 만료하지 않은 사람들이 다음이 문제가없는 것입니다 상상
아담 데이비스에게

7

나는 같은 문제가 있었고 다른 누군가가 번들 식별자와 관련이 있다고 제안했습니다. 나는 최근에 그것을 테스트로 변경하고 별표를 넣었습니다. 나는 그것을 고치고 목표물을 청소해야했고 그 후에 작동했습니다.


나도 별표가 있었고 별표를 제거하면 문제가 해결되었습니다. 말씀해 주셔서 감사합니다.
SteveB 2011-07-05

와일드 카드 식별자 (예 : com.developername. *)를 사용하는 것도 저에게 문제의 원인이었습니다. 기본 com.developername. $ {PRODUCT_NAME : rfc1034identifier}로 되 돌리면 문제가 해결되었습니다. 저는 현재 Xcode 4.0.2
GnarlyDog를

7

이것은 사용하지 않는 대상을 삭제 한 후 발생했습니다. Xcode가 남은 대상의 CFBundleIdentifier (com.company.etc)에 공백을 넣은 것 같습니다. Info.plist를 외부 텍스트 편집기로 편집하여 제거해야했는데 제대로 작동했습니다.


이것은 나에게도 일어났습니다. 대상, 요약, 식별자에서 처음에 공백을 제거했습니다. 쉿 사과. 얼마나 많은 문제를 만들 수 있습니까?
fregas 2011 년

번들 식별자가 내 문제였습니다. 이것은 Info.plist 파일에 있습니다.
bentford

7

작업 공간에 여러 프로젝트를 추가하는 중이 었는데이 문제가 발생했습니다. 프로젝트 중 하나에 간단한 라이브러리가 있고 빌드 중이며 iOS 창 기반 대상을 추가하여 테스트했습니다. 이름을 바꾸기 위해 만든 첫 번째 대상을 삭제했습니다. 이것을 읽은 후 .xcodeproj 패키지 내부에서 xcuserdata를 제거 하려고 시도 했으며 문제가 해결되었습니다. 다른 사람에게 도움이되기를 바랍니다. OS X 10.7.1에서 Xcode 4.1 실행.


7

이 모든 답변을 살펴본 후 똑같은 문제가 있었지만 다른 문제가 해결되었습니다.

문제 :

리팩토링 후 문제없이 빌드가 실패했습니다. (편집-> 리팩터링-> 이름 바꾸기를 사용하여 클래스 이름을 변경했습니다.)

멍청한 적 솔루션 :

Go refactor (rename) something other (-_- "). 그 후 Xcode가 모든 적절한 파일의 이름을 바꾸지 못하고 오류를 표시하지 않았다는 오류가 발생했습니다. 그런 다음 다른 리팩터링 후에 이전 리팩터링의 오류가 나타났습니다. .


그게 다야! 나는 수동으로 속성의 이름을 바꾸었고 그로 인해 문제가 발생했습니다. 감사합니다
라즐로

6

나는 이와 같은 문제가 있었다. 나는 xcode가 추락하여 그것을 고치려고했습니다. 나는 그것을 다시 열었고 잘 작동했습니다. 내가 운이 좋았 을까? 어쨌든 지금 작동하는 한 문제가 무엇인지 정말 신경 쓰지 않습니다.


6

번들 식별자를 변경하고 프로젝트를 정리했지만 작동하지 않는 경우 / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData 디렉터리를 비우십시오.

그것은 나를 위해 작동합니다.


6

나를 위해 이슈 네비게이터에 오류를 표시하지 않고 빌드가 실패했습니다. 그러나 로그 네비게이터의 빌드 세션에서 오류를 볼 수 있습니다. 제 경우에는 오류가 선언되지 않은 상수였습니다. 필요한 헤더 파일을 가져 왔는데 문제가 해결되었습니다. 이 오류가 Issue Navigator에 표시되지 않는 이유를 잘 모르겠습니다.

의도적으로 다른 변수의 이름을 변경하여이 동작을 재현하려고했습니다. 이번에는 Issue Navigator에 오류가 표시되었습니다. 따라서 이전 오류가 Issue Navigator에 표시되지 않는 이유가 여전히 확실하지 않습니다.

도움이 되었기를 바랍니다.


6

위의 솔루션은 저에게 효과가 없습니다.

내 해결책은 프로젝트를 다른 폴더로 이동하는 것입니다.

그러면 빌드 오류가 정상적으로 나타납니다.


4

빌드 폴더를 정리 했습니까? 제품 메뉴로 이동하여 Option 키를 누른 상태에서 "Clean Build Folder…"를 선택합니다.


이것은 결과를 바꾸지 않았습니다.
Adam Davis

변경 사항 없음
Jayprakash Dubey 2015

4

문제가 무엇인지 알고 있습니다. In 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 w / iOS 4.3을 다운로드하여 설치하는 것입니다. Apple이 iOS 4.3이 포함 된 XCode 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

다른 원인으로 나에게도 같은 일이 일어났습니다.

Entitlements.plist 파일에서 get-task-allow를 제거하고 plist를 비워 둡니다. 빌드 설정에는 여전히 Entitlements.plist 파일이 내 Entitlements 파일로 지정되었습니다. iPhone이 연결된 iOS 장치에서 Ad-Hoc 빌드 설정을 사용하여 실행하도록 선택했으며이 버그에 설명 된 동작을 확인했습니다. get-task-allow back을 추가하면 문제가 해결되었습니다.


2

이 문제의 가능한 원인이 많이있는 것 같습니다. 내 것이 밝혀졌다

내 대상은 존재하지 않는 프로비저닝 프로파일을 사용하도록 설정되었습니다.

새 프로필을 사용하도록 프로젝트를 설정하고 이전 프로필을 삭제했습니다. 대상에 자체 프로비저닝 프로필 설정이 있으며 여전히 이전 (현재 삭제 된) 프로필로 설정되어 있다는 사실을 인식하지 못했습니다.


2

위의 모든 작업을 성공하지 못한 후 다른 답변을 추가하기 위해 XCode를 닫을뿐만 아니라 MacBook을 다시 시작해야했습니다. XCode가 이전에 표시되지 않았던 Localizable.strings에 몇 가지 오류를 표시하는 것으로 끝났습니다.

도움이되는 희망


비슷한 Xcode 5.0.2가 생겼습니다. Localizable.strings 중 하나에 구문 오류가 있었는데 Xcode가 빌드하는 동안 표시하지 않았습니다.
Bart van Kuik

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 문자 세트 균일 한 유형 식별자는 일반적으로 ASCII 문자 세트의 문자를 포함하는 유니 코드 문자열입니다. 그러나 ASCII 문자의 하위 집합 만 허용됩니다. 로마 알파벳은 대문자와 소문자 (A–Z, a–z), 0에서 9까지의 숫자, 점 ( ".") 및 하이픈 ( "-")으로 사용할 수 있습니다. 이 제한은 RFC 1035에 명시된 DNS 이름 제한을 기반으로합니다.

균일 한 유형 식별자는 U + 007F보다 큰 유니 코드 문자를 포함 할 수도 있습니다.

중요 : UTI 문자열에 잘못된 문자 (예 : 밑줄 ( "_"), 콜론 ( ":") 또는 공백 ( ""))가 표시되면 해당 문자열이 잘못된 UTI로 거부됩니다. API 계층에서는 잘못된 UTI에 대해 오류가 생성되지 않습니다.


1

번들 이름에 문제가 없었으므로 제안 된 솔루션이 효과가 없었습니다. 마지막으로 빌드에 코드 서명 안 함을 설정 한 다음 프로젝트를 닫은 다음 오거나이저에서 프로비저닝을 제거한 다음 새 프로비저닝을 다운로드하여 오거나이저에 추가 한 다음 빌드에 대해 설정했습니다. 효과가있었습니다.


1

이것은 기술적 인 답변이 아니라 귀하의 상황에 적용되지 않는 "사용자 오류"답변입니다. 그것은 나에게 일어 났고 내 검색으로 인해이 Q & A로 인해 소용이 없었습니다 .--- 내 실수를 깨달을 때까지. 문제로보고 된 항목과 일치하지 않는 필터를 문제 탐색기에 설정했습니다. 필터를 지우면 문제가 표시되었습니다.

증상은 당신이 물어 보던 것과 같았고 짧은 목록에서 필터링이 필요하지 않았기 때문에 필터를 언제 설정했는지 모르겠습니다 (다른 탐색보기에서 상속되어야 함).


1

비슷한 문제가있었습니다. 어디서나 오류를 찾을 수 없습니다. 모든 프로비저닝 프로필을 삭제하고 새 프로필을 추가했습니다.

그런 다음 내 장치에 다른 테스트 앱을 빌드하려고 시도했는데 다음 오류 메시지가 나타납니다.

코드 서명 오류 : 인증서 ID 'iPhone 개발자 : xxxxxx'가 키 체인에 두 번 이상 나타납니다. codesign 도구에는 하나만 필요합니다.

그래서 저는 키 체인에 들어가서 같은 이름의 만료 된 인증서 몇 개를 찾아서 삭제했습니다.

꽤 무작위 적이지만, 내가했던 것처럼 장치에 다른 앱을 빌드하려고하면 문제를 진단하는 데 도움이되는 오류 메시지를받을만큼 운이 좋을 것입니다.


1

xcode의 Organizer로 이동합니다. 그리고 프로젝트 탭에서 해당 프로젝트를 삭제합니다. xcode에서 파생 데이터를 다시 작성하여 문제를 해결하십시오.


1

XCode4.5에서 비슷한 문제에 직면했고 내 응용 프로그램에서 작업하는 동안 XCode가 갑자기 충돌했습니다.

몇 시간 동안 검색 한 후 xcode가 충돌했을 때 내 응용 프로그램의 파일 중 하나가 삭제되었음을 알았습니다.

휴지통에서 파일을 복원하고 문제가 해결되었습니다.


1

코드 서명없이 Mac OS X 응용 프로그램 프로그래밍하고있었습니다 . "Entitlement"섹션에서 샌드 박싱을 활성화 했을 때 코드 서명이 자동으로 켜졌 고 새 빌드를 만들 수 없었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.