Xcode에서 프로젝트를 아카이브하면 다중 응용 프로그램 번들이 잘못 생성됩니다


170

Xcode에서 프로젝트를 보관하면 릴리스를 위해 주요 대상을 번들로 묶는 대신 다중 응용 프로그램 번들을 만들고 있습니다. 특히 Organizer에서 내 아카이브의 유효성을 검사하면 다음 메시지가 표시됩니다.

"[프로젝트 이름]에 단일 번들 애플리케이션이 없거나 여러 제품이 포함되어 있습니다. 다른 아카이브를 선택하거나 단일 번들 애플리케이션을 작성하도록 구성표를 조정하십시오."

구성표에 조정이 필요한 설정이있는 것처럼 들리지만 다른 대상을 포함시키는 원인을 알 수 없습니다.

그건 그렇고 Xcode 4.0을 사용하고 있습니다.


답변:


251

좋아, 내 자신의 질문에 대답. XCode 4의 종속 프로젝트에 문제가있는 것으로 나타났습니다.이 경우 모든 종속 프로젝트 (예 : 정적 라이브러리)에 대한 빌드 설정을 진행하고 "배포"의 "설치 건너 뛰기"옵션이 설정되어 있는지 확인하십시오 예.

자세한 내용은 여기 : http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/


1
당신은 선생님입니다. 나는 그것을 쉽게 발견하지 못할 것이다 : P
Andrew Natoli

6
"예"로 변경했습니다 ... 여전히 실패합니다. :(
Joe D' Andrea

8
프로젝트 나 대상이 아닌 정적 라이브러리에서만 설치 건너 뛰기를 예로 설정해야합니다. 이 특별 배포에 대한이 블로그 게시물은 앱 스토어 빌드에 동일하게 적용되며 건너 뛰기 설치에 관한 섹션이 있습니다. musicalgeometry.com/?p=1237
jj0b

8
CorePlot과 같은 일부 라이브러리에서는 빌드 단계의 헤더 복사 섹션도 변경해야합니다. 따라서 Ryan의 답변도 살펴보십시오.
Tim Swast

2
또한 대상 "빌드 단계"의 "헤더 복사"에서 정적 라이브러리의 모든 헤더 파일을 "공개"에서 "프로젝트"로 옮겼습니다.
Hlung

151

이 문제를 해결하려면 하위 프로젝트에서 두 가지 사항을 수정해야합니다.

  1. Jared가 발견 한대로 빌드 설정에서 "설치 건너 뛰기"를 "예"로 설정하십시오.
  2. 빌드 단계에서 헤더 복사 섹션을 확인하십시오. 비공개 또는 공개로 나열된 헤더 파일이 있으면 프로젝트 섹션으로 끌어다 놓습니다.

7
나는 당신을 정말 사랑합니다! : D
arielcamus

5
모든 "건너 뛰기 설치"설정을 수정했지만 누락 된 부분은 헤더 복사 섹션입니다. 감사합니다.
토마스 아인 월러

2
three20을 사용하고 있습니다. 이 프로젝트에는 헤더 파일이 비공개 또는 공개로 나열되어 있지만 프로젝트 섹션에서 이동하면 컴파일되지 않습니다. 어떠한 제안?
Breezeight

19
이 Xcode 문제를 극복하더라도 Three20 사용을 중지하십시오. 나는 완전히 진지하다!
Adam Eberbach

2
우리와 같은 수많은 라이브러리 프로젝트가 있고 어떤 라이브러리의 Skip Install이 No로 설정되어 있는지 또는 어떤 헤더 파일이 문제를 일으키는 지 알아내는 데 어려움을 겪고 있다면 다음을 시도하십시오. 아카이브를 선택하고 배포 버튼을 클릭하십시오. '내장 제품 저장'옵션을 선택하십시오. 다음을 누르고 저장하십시오. Finder에서 생성 된 디렉토리를 탐색하십시오. 'libraries'서브 디렉토리는 건너 뛰기 설치를 예로 설정해야하는 라이브러리를 식별합니다. usr / local / include는 Public에서 Project로 이동해야하는 범인 헤더 파일을 식별합니다.
Sunil Gowda

10

나는 그것이 나를 위해 작동하도록 다음을 수행했다.

  1. three20 정적 라이브러리, 내가 사용 cocoapods을 주요 프로젝트 내에서 파일을 포함 .. 그냥 (그들이 많이 있습니다 ..) BTW 내가 함께 three20를 교체하려고 나에게주고 있었다 three20 모든 문제를 제거있어 후광 ..하지만 후광 프로젝트에서 three20을 사용했던 일부 기능이 부족했습니다. 그래서 Nimbus는 도움이되지 않았습니다.
  2. 다른 모든 하위 프로젝트 / 정적 라이브러리의 빌드 설정에서 skip install을 yes로 설정하고 빌드 단계에서 복사 헤더를 공개에서 프로젝트로 전환
  3. 대부분의 중요한 : 하위 라이브러리에서 .. 빌드 단계에서 그 보장 복사 파일의 목적지가 변경되었습니다 Absolute pathproducts directory.

그게 다야!

힌트 : 아카이브가 ipa가 아닌 아카이브 파일을 작성하게하는 문제가있는 파일에 대한 아이디어를 얻으려면 다음 을 수행하십시오.

  1. 아카이브를 선택하고 배포 버튼을 클릭하십시오.
  2. '내장 제품 저장'옵션을 선택하십시오.
  3. 다음을 누르고 저장하십시오.
  4. Finder에서 생성 된 디렉토리를 탐색하십시오.
  5. 'libraries'서브 디렉토리는 건너 뛰기 설치를 예로 설정해야하는 라이브러리를 식별합니다.
  6. 경우에 따라 usr/local/include공개에서 프로젝트로 이동해야하는 범인 헤더 파일 또는 절대 경로에서 제품 디렉토리로 변경해야하는 파일을 식별 할 수 있습니다. 그러나 해당 디렉토리 (예 : usr / local / include)는 서브 라이브러리 디렉토리 구조에 따라 다릅니다.

나는 당신에게 10 개의 별을 줄 것입니다. 방금 6 단계에서 찾은 파일을 클릭하고 대상에서 프로젝트까지 대상 멤버십 영역에 파일을 표시했습니다.
Cristi Băluță

기꺼이 도와 드리겠습니다! 내가 쓴 이유는 b / ci가 당신이 한 일을 겪었 기 때문입니다. 나는 무슨 일이 일어나고 있는지 이해하기 전에 아마도 20 답변처럼 읽었습니다. : :)
abbood

누군가 6 단계를 설명해 주시겠습니까? "usr / local / include가 범인 헤더 파일을 식별 할 것"의 의미와 해당 파일을 어디서 / 어떻게 확인해야하는지 이해하지 못합니다
Andrei F

@ CristiBăluță 파일을 정확히 어떻게 찾았으며 설정 / 메뉴의 위치는 어디입니까? XCode 11.2.1과 동일한 문제가 있으며 xcode에 대한 경험이 많지 않습니다. 감사합니다.
Andrei F

내가 찾은 것은 / usr / local / include가 (라이브러리 폴더와 함께) 아카이브 내부의 폴더이지만 내 일반 아카이브에는 해당 폴더가 없습니다.
Andrei F

1

잊어 버린 복사 파일 빌드 단계가 있습니다 (일부 글꼴을 ~ / Library / Fonts로 복사했습니다). 이 빌드 단계를 제거한 후 정상적으로 작동했습니다.

위의 방법으로도 문제가 해결되지 않으면 아카이브를 파인더로 내보내고 .app 번들 외부에있는 것을 살펴 보는 것이 좋습니다.

편집 : https://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue:--'Does-not-contain-a-single-bundle '을 참조 하십시오.


0

"[프로젝트 이름]에 단일 번들 응용 프로그램이 포함되어 있지 않거나 여러 제품이 포함되어 있습니다. 다른 아카이브를 선택하거나 구성표를 조정하여 단일 번들 응용 프로그램을 만드십시오." xcode5로 업그레이드 한 후

문제는 '릴리스'에 대한 빌드 설정의 여러 필드가 비어 있다는 것입니다. xcode4가 자동으로 디버그 설정으로 전환 된 것 같습니다.

anwyays-내 수정은 비어있는 모든 '릴리스'설정을 찾아 디버그 설정으로 설정하는 것이 었습니다. 특히 Info.plist 파일 설정이었습니다.

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