Xcode 경고 :“출력 파일에 대한 다중 빌드 명령”


494

다음과 같은 오류가 발생합니다.

[WARN] 경고 : 출력 파일 /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png에 대한 다중 빌드 명령

[WARN] 경고 : 출력 파일 /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png에 대한 다중 빌드 명령

[WARN] 경고 : 출력 파일 /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png에 대한 다중 빌드 명령

그러나 Xcode를 확인했는데 그러한 파일의 사본이 전혀 보이지 않습니다. Apple Mailing Lists 의이 게시물 에서 알 수 있듯이 중복 항목은 없습니다.

답변:


809

프로젝트 네비게이터에서 Xcode 프로젝트 파일을 선택하십시오. 프로젝트의 목표와 프로젝트 설정이 표시됩니다. "번들 자원 복사"빌드 단계를보십시오. 해당 목록에서 문제가되는 파일을 두 번 찾아야합니다. 중복 참조를 삭제하십시오.

Xcode는 동일한 파일을 응용 프로그램과 함께 두 번 묶으려고한다고 불평합니다.


1
빌드 폴더에서 Finder를 사용하여 일부 자산을 삭제하면 나에게 발생합니다. 동일한 이름으로 업데이트 된 자산으로 자산을 교체하고 "대상에 추가"옵션을 표시하는 XCode 내에서 드래그합니다. 엑스 코드는 그 복사 번들 자료의 항목 복제 동기화를 벗어날 것
brainondev을

1
나는 이것에 한 가지를 추가하고 싶었다. 어떻게 든 (다시처럼) 많은 중복 참조로 끝나는 경우 "유효 설정"을 클릭하면 중복 참조가 자동으로 삭제됩니다. 수동으로 찾는 것보다 훨씬 쉽습니다
Jon Mattingly

1
나는 비슷한 문제가 있었다. 이 답변이 가장 가깝습니다. 프로젝트에서 파일을 한 번만 표시했지만 <projName> .xcodeproj / project.pbxproj 파일에 중복 항목이있었습니다. 이것은 병합 문제였습니다. 트릭은 VI와 않았다 편집 : 감사합니다 :) 올바른 방향으로 날을 가리키는 위해
javatarz

11
번들 리소스 복사 단계에서 대량의 중복 파일이있는 경우이 페이지 하단의 '유효성 설정'을 클릭하면 XCode가 중복에 대해 프롬프트하고 '를 클릭하면 모든 파일을 제거합니다. 변경을 수행하십시오. 개별적으로 사냥하는 것보다 훨씬 빠릅니다.
Yeti42

1
"Published-iOS"를 프로젝트에 다시 추가 할 때 SpriteBuilder 템플릿과 비슷한 문제가있었습니다. 그룹이 아닌 "폴더 참조"가되고 "전체 번들 리소스"에 전체 폴더를 추가 한 것으로 나타났습니다. 따라서 개별 리소스가 해당 목록에 나타나지 않더라도 폴더에서 추가되지 않는지 확인하십시오.
samkass

127

자식 기반 하위 프로젝트를 추가 할 때 쉽게 발생합니다. Xcode는 파인더에서 .git 하위 폴더를 볼 수 없어도 .git 하위 폴더를 무시할 정도로 똑똑하지 않으므로 "master"또는 "exclude"라는 여러 파일 (표준 git repo 파일)이 있다는 것은 매우 혼란 스러울 것입니다. Xcode4를 사용하여 프로젝트 (왼쪽 트리의 루트)로 이동 한 다음 앱 대상을 클릭하고 "번들 리소스 복사"를 확장 한 다음 .git에 대한 모든 참조를 제거하십시오. 어쨌든 앱에 구운 필요는 없습니다.


43
나는
target-

2
내 Xcode 프로젝트에 동일한 이름 (그러나 다른 디렉토리에 있음)의 여러 파일이 있습니다. 실수로 내 중 하나가 번들 자원 복사 단계에서 두 가지를 모두 가지고 있었으므로 결과 앱 번들에서 그중 하나가 덮어 쓰기되었습니다. 그중 하나를 제거하십시오.
BastiBen

112

실제로 이것에 대한 대답은 매우 간단합니다.

Xcode 프로젝트에서 경고를 발생시키는 파일을 검색하고 그중 하나를 삭제하십시오.

Xcode는 검색 결과에 해당 파일에 대한 하나의 참조 만 표시하지만 거기서 멈추지 말고 삭제하십시오. (프로젝트 파일을 삭제하기 전에 백업하는 것이 좋습니다)

이제 프로젝트를 다시 빌드하십시오. 경고가 사라집니다. (이 답변은 이전 버전의 xcode에 대한 것입니다)


그러나 파일은 더 이상 XCode의 그룹 및 파일 창에 나타나지 않습니다. 이것과의 거래는 무엇입니까?
Tejaswi Yerukalapudi

1
이 문제가 계속되면 Xcode에서 모든 파일을 제거하십시오 (디스크에서 삭제하지 마십시오). 그런 다음 모두 다시 끌어다 놓으십시오. 이후에도 여전히 문제가 발생하면 실제로 같은 이름을 가진 일부 리소스가있을 수 있습니다 (다른 폴더에있을 수 있음)-찾기 및 이름 바꾸기 / 삭제. Xcode 출력은 플랫 폴더로 들어가므로 디렉토리 구조는 무시됩니다.
n13

52

경고 메시지는 실제 원인을 설명하는 데 도움이되지 않지만 Xcode 버그는 아닙니다.

이 오류 메시지는 프로젝트에 동일한 이름을 가진 여러 파일이있을 때 발생합니다. 중복 이름을 가진 파일을 삭제하거나 이름을 바꾸면 문제가 해결됩니다.


1
네, 정답입니다. 리소스 파일 (예 : 이름이 같지만 파일 시스템에 별도의 dir)이있는 png가있는 경우 상황이 쉽게 도달 할 수 있습니다. 빌드 프로세스 중에 모두 파일 디렉토리 1 개, 즉 앱 번들에 복사됩니다.
Brynjar

@Brynjar 같은 이름의 이미지를 허용하는 해결 방법이 있습니까? 또는 이미지가 함께 묶이지 않도록하려면?
Andy

실제로 번들링을 피하기 위해 폴더 참조를 만들 수 있다는 것을 알았습니다.
Andy

다음은 디렉토리에 관계없이 중복 이름을 가진 파일을 찾는 방법입니다. find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sort그러나 이것이 내 문제를 해결하지 못했습니다
William Entriken

26

프로젝트에 같은 이름의 파일이 2 개있는 경우에 발생합니다. 프로젝트가 컴파일 될 때 파일이 XCode의 그룹에 있더라도 모든 파일은 동일한 디렉토리에있게됩니다. 즉, /group1/image.jpg 및 /group2/image.jpg가있는 경우 컴파일 된 프로젝트에는 두 개의 image.jpg 파일 중 하나만 있습니다.


17

앞에서 언급 한 것처럼 프로젝트 탐색기에서 이름은 동일하지만 다른 그룹 (노란색 폴더)에 여러 파일이있는 경우이 문제를 볼 수 있습니다. 필자의 경우에는 앱 번들에 복사하려는 "preview.jpg"가있는 여러 개의 하위 디렉토리가 각각 있으므로 의도적 인 것입니다.

그룹 참조

이 상황에서 Xcode 가 그룹뿐만 아니라 디렉토리 참조 (파란색 폴더 아이콘)를 인식하도록해야합니다 .

문제가되는 파일을 제거하고 "참조 제거"를 선택하십시오 (따라서 완전히 삭제하지는 않음).

그룹 참조 제거


프로젝트 탐색기로 다시 끌어서 프로젝트에 다시 추가하십시오. 나타나는 대화 상자에서 "추가 된 폴더에 대한 폴더 참조 작성"을 선택하십시오.

폴더 참조로 추가


파일은 프로젝트 탐색기에서 파란색 폴더 아이콘을 갖습니다.

폴더 참조


이제 대상 빌드 단계의 "번들 자원 복사"섹션을 보면 디렉토리 내에 포함 된 각 항목에 대한 항목이 아니라 전체 폴더에 대한 단일 항목이 있음을 알 수 있습니다. 컴파일러는 해당 파일에 대한 여러 빌드 명령에 대해 불평하지 않습니다.


15

이것은 버그가 아닙니다. Xcode 지원이 도움이 될 수 있습니다. 프로젝트 네비게이터의 왼쪽에서 대상을 선택하십시오. 설정 하단의 "유효한 설정"을 클릭하십시오. Xcode는 설정을 확인하고 가능한 경우 중복을 제거합니다.


14

이 상황의 다른 버전은 헤더 빌드 단계에 중복이있을 때 발생할 수 있습니다 .

이것을 고치기 위해…

  1. 프로젝트 목표로 이동
  2. 고르다 Build Phases
  3. Headers빌드 단계를 선택하십시오
  4. 경고에 표시된 이름을 입력하십시오
  5. 두 개 이상의 아이템을 주목하십시오
  6. +|-왼쪽 하단에서 상자를 찾으십시오.
  7. 항목 중 하나를 선택하고 -버튼을 클릭하십시오

7

필자의 경우 문제는 그룹 내에서 동일한 대상 및 폴더 이름으로 인해 발생했습니다.

충돌 한 파일 또는 폴더의 이름을 바꾸면 문제가 해결됩니다.


6

나는 이것에 대한 아주 쉬운 해결책을 찾았다.

  1. 프로젝트 탐색기에서 문제를 일으키는 파일을 선택하십시오.
  2. 파일 관리자에서 대상 멤버십을 선택 취소하십시오.
  3. 프로젝트 구축
  4. 파일의 대상 멤버십을 다시 확인하십시오.

경고가 사라졌습니다! 이 이미지를 참조하십시오.

여기에 이미지 설명을 입력하십시오


5

적어도 이것이 발생한 경우 XCode 4 버그로 인해 발생할 수 있다고 확신합니다.

여러 언어 종속 파일을 동시에 프로젝트에 추가하면 발생합니다. 나는 자식 차이를 살펴봄으로써 이것을 발견했다. 커밋에서 아무것도하지 않았지만 새로운 현지화 된 펜촉 파일을 추가했습니다. 그러나 project.pbxproj 파일의 차이점을 살펴보면 이전에 이미 프로젝트에 있던 파일에 대해 새로운 중복 참조가 추가되었음을 보여줍니다. 이 파일도 나에게 무작위로 보였습니다.

이 똑같은 행동을 여러 번 재현했습니다.

프로젝트에서 이러한 파일을 삭제해도 원래 참조 만 삭제되고 복제본이 남으므로 문제를 해결하지 못합니다. 이 문제를 해결하는 유일한 방법은 커밋으로 돌아가서 다시 시작하거나 프로젝트 파일을 수동으로 편집하는 것입니다. 프로젝트 파일을 제거하는 것이 가장 어렵습니다. 수많은 다른 장소에서.

Xcode 4는 나에게 큰 실망입니다.


이것은 XCode 4.2에서 수정 된 것처럼 보입니다. 이전 버전에서는 현지화를 추가하려는 파일을 자체 "그룹"(프로젝트의 가상 폴더)에 먼저 배치하여이 버그를 피할 수 있습니다. 현지화 추가를 마치면 원래 위치로 되돌리고 자신이 만든 임시 그룹을 삭제할 수 있습니다.
Steve

이것은 버그가 아닙니다. 프로젝트에 같은 이름을 가진 파일이 두 개 이상 있기 때문입니다.
토드 홉 킨슨

1
파일을 현지화 할 때 다른 디렉토리를 제외하고 각 현지화에 대해 동일한 파일 이름을 가져야합니다. 이것은 실제로 버그였습니다.
Steve

4

이는 ur "no.png" "d.png"및 "n.png"가 resources에 복제 되었기 때문에 발생합니다. 복제 된 파일 삭제를 찾아 삭제하십시오.


3

동일한 파일에 대한 참조가 두 개 이상인 경우 오류가 나타납니다. 같은 이름의 파일이 2 개 있었고이 오류가 발생했습니다. 그중 하나를 삭제하면 오류가 사라집니다.


2

이 문제에 대한 또 다른 변형입니다. 나는 이전에 제안 된 솔루션 중 어느 것도 문제를 해결하지 못했다는 동일한 메시지가 나타났습니다 (예를 들어 문제가되는 파일의 사본은 분명히 하나뿐이었습니다).

내 해결책은 텍스트 편집기에서 project.pbxproj 파일을 편집하고 (XCode를 종료하고 물론 파일을 백업 한 후) 문제가되는 파일에 대한 모든 참조를 제거하는 것이 었습니다. 그런 다음 XCode를 다시 시작한 후 파일을 프로젝트에 수동으로 다시 추가하고 모든 것이 정상이었습니다.

(나의 의심은이 문제가 매뉴얼 (예 : 비 XCode, 프로젝트 파일 병합)으로 인해 나에게 일어난 것입니다.)


1

프로젝트에서 Frameworks 폴더를 열고 내부에 프레임 워크 만 있는지 확인하십시오. 실수로 전체 개발자 폴더를 추가했습니다!


1

몇 분 전에 같은 문제가있었습니다. '배포 대상'을 변경하면 문제가 해결되었다고 언급했습니다.


1

나를 위해 대상> 빌드 설정> 패키징> 제품 이름이 내 앱에 사용자 정의 된 .plist 파일에서 참조 된 다른 값과 동일한 것으로 설정되었습니다. 결국 빌드 프로세스로 인해 중복 파일이 생성됩니다.


1
이것은 나에게 문제였습니다, 감사합니다!
레온

0

Swift 3 : (그러나 이전 버전) 중복 된 자산이있을 때 발생합니다. 이 문제가있는 파일의 이름을 바꾸면 모든 것이 잘됩니다.

또한 Assets.xcassets이름을 바꾸고 새 이름으로 복제본의 이름을 바꾼 경우에도 발생할 수 있으므로 시간이 지나면 폴더 참조를 추가하기 위해 폴더를 잊어 버리고 제거하지만 중복 파일 문제로 돌아갑니다.


0

간단한 방법 중 하나는

  • 앱 대상으로 이동
  • 빌드 단계로 이동
  • 출력 파일
  • 출력 파일의 경로를 삭제 한 다음 프로젝트를 빌드하십시오. 성공적으로 실행됩니다.

0

열쇠는 어떻게하는 것이 었습니다 pod deintegraterm *.workspace파일! 시간 낭비 야!


0

반응 네이티브 사용자. 파일로 이동-> 작업 공간 설정-> 빌드 시스템-> 레거시 빌드 시스템으로 변경하십시오. 그리고 지금은 잘 지어야합니다. React-Native는 아직 새 파일 시스템과 호환되지 않습니다.


0

use_frameworks 댓글 달기! PodFile에서 나를 위해 일했습니다.

#use_frameworks!

참고 : XCode 10.1, 포드 버전 1.8.4 에서이 작업을 수행했습니다.


-1

더 좋은 방법이 있다고 확신하지만 핵무기는 60 초도 채 걸리지 않았으며 내가 찾은 유일한 방법이었습니다.

  1. 저장소로 휴지통을 드래그하십시오.
  2. 리포지토리를 다시 복제하십시오.
  3. 올바른 원격 추적으로 repo를 설정하십시오. git remote add <url.git>또는git remote set-url <url.git>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.