programing

Xcode 주의: "출력 파일에 대한 다중 빌드 명령"

golfzon 2023. 5. 9. 23:24
반응형

Xcode 주의: "출력 파일에 대한 다중 빌드 명령"

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

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

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

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

하지만 Xcode를 확인해보니 해당 파일의 중복이 전혀 보이지 않습니다.애플 메일링 리스트에 있는 이 게시물에서 알 수 있듯이 중복되는 내용은 없습니다.

프로젝트 탐색기에서 Xcode 프로젝트 파일을 선택합니다.그러면 프로젝트 설정과 프로젝트의 대상이 표시됩니다.번들 리소스 복사 빌드 단계를 확인합니다.당신은 그 목록에서 문제가 되는 파일을 두 번 찾아야 합니다.중복 참조를 삭제합니다.

Xcode는 당신이 같은 파일을 당신의 애플리케이션과 두 번 번들하려고 한다고 불평하고 있습니다.

이 문제는 Git 기반 하위 프로젝트를 추가할 때 쉽게 발생합니다.Xcode는 Finder에서 볼 수 없음에도 불구하고 .git 하위 폴더를 무시할 정도로 똑똑하지 않기 때문에 "master" 또는 "exclude"라는 이름의 여러 파일(표준 gitrepo 파일)이 있다는 것이 매우 혼란스러울 것입니다.Xcode4를 사용하여 프로젝트(왼쪽 트리의 루트)로 이동한 다음 앱 대상을 클릭하고 "Bundle Resources 복사"를 확장한 다음 .git에 대한 모든 참조를 제거하면 앱에 구울 필요가 없습니다.

사실, 이것에 대한 답은 꽤 간단합니다.

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

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

이제 프로젝트를 다시 구축합니다.이제 경고가 사라져야 합니다.(이 답변은 xcode의 이전 버전에 대한 답변입니다.)

이 경고 메시지는 실제 원인을 설명하기에 충분하지 않지만 Xcode 버그는 아닙니다.

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

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

앞에서 언급한 것처럼 프로젝트 탐색기에서 이름은 같지만 그룹(노란색 폴더)이 다른 파일이 여러 개 있는 경우 이 문제가 발생할 수 있습니다.저의 경우, 앱 번들에 복사하고 싶은 "preview.jpg"가 각각 포함된 여러 하위 디렉터리가 있었기 때문에 의도적이었습니다.

단체 추천서

이 경우 Xcode가 그룹뿐만 아니라 디렉터리 참조(파란색 폴더 아이콘)를 인식하는지 확인해야 합니다.

문제가 있는 파일을 제거하고 "참조 제거"를 선택합니다(전체 파일을 삭제하지 않음).

그룹 참조 제거


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

폴더 참조로 추가


이제 파일에는 프로젝트 탐색기에 파란색 폴더 아이콘이 표시됩니다.

폴더 참조


대상 빌드 단계의 "Bundle Resources 복사" 섹션에서 디렉토리에 포함된 각 항목에 대한 항목이 아닌 전체 폴더에 대한 단일 항목이 있음을 알 수 있습니다.컴파일러는 이러한 파일에 대한 여러 빌드 명령에 대해 불평하지 않습니다.

이건 벌레가 아닙니다.Xcode 지원이 도움이 될 수 있습니다.프로젝트 탐색기에서 왼쪽에 있는 대상을 선택합니다.설정의 맨 아래에 있는 "설정 유효성 확인"을 클릭합니다.Xcode는 설정을 확인하고 가능하면 중복을 제거할 것입니다.

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

이 문제를 해결하기 위해 …

  1. 프로젝트 대상으로 이동
  2. 선택하세요.Build Phases
  3. 을선니다를 Headers 단계
  4. 경고에 표시된 이름을 입력합니다.
  5. 두 개 이상의 항목에 주의합니다.
  6. 를 보다+|- 상자
  7. 중 한 후, ▁the다,▁select니클합릭을 클릭합니다.-단추를 채우다

저의 경우 그룹 내 대상과 폴더의 이름이 같아 문제가 발생했습니다.

충돌된 파일 또는 폴더의 이름을 변경하면 문제가 해결됩니다.

저는 이에 대한 아주 쉬운 해결책을 찾았습니다.

  1. 프로젝트 탐색기에서 문제의 원인이 되는 파일 선택
  2. 파일 검사기에서 대상 구성원 선택 취소
  3. 프로젝트 빌드
  4. 파일에 대한 대상 구성원 자격을 다시 확인합니다.

경고가 사라졌습니다!참조를 위해 이 이미지를 확인합니다.

여기에 이미지 설명 입력

XCode 4 버그로 인해 발생할 수 있다고 확신합니다. 적어도 제가 본 경우에는요.

이 문제는 여러 언어 종속 파일을 프로젝트에 동시에 추가하는 경우에 발생합니다.저는 차이를 통해 이것을 알아냈습니다.나는 커밋에서 새로운 현지화된 nib 파일을 추가하는 것 외에는 아무것도 하지 않았습니다.그러나 project.pbxproj 파일의 차이를 돌아보면 이전에 이미 프로젝트에 있었던 파일에 대해 추가된 많은 새로운 중복 참조를 보여줍니다.이 작업을 수행한 파일들도 무작위로 보였습니다.

저는 똑같은 행동을 여러 번 반복했습니다.

프로젝트에서 이러한 파일을 삭제해도 원래 참조만 삭제되고 중복 항목만 남기 때문에 문제가 해결되지 않습니다.이 문제를 해결할 수 있는 유일한 방법은 커밋으로 돌아가서 다시 시작하거나 프로젝트 파일을 수동으로 편집하는 것입니다. 이는 삭제할 복제품을 구분하기 어렵고 수많은 다른 장소에서 작업해야 하기 때문에 훨씬 더 많은 작업을 망칠 수 있는 좋은 방법입니다.

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

리소스에서 "no.png" "d.png"과 "n.png"이 중복되어 발생합니다. 삭제된 게시 파일을 찾아서 삭제하십시오.

동일한 파일에 대한 참조가 둘 이상 있을 때 오류가 발생하는 것 같습니다.같은 이름의 파일이 2개 있었는데 이 오류가 발생했습니다.그 중 하나를 삭제하면 오류가 사라집니다.

그러나 이 문제에 대한 또 다른 변형입니다.이전에 제안한 해결책 중 어느 것도 문제를 해결하지 못했다는 동일한 메시지가 표시되었습니다(예를 들어, 저는 확실히 문제가 되는 파일의 복사본을 하나만 가지고 있었습니다).

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

(이 문제는 매뉴얼, 즉 비 XCode, 프로젝트 파일 병합 때문에 발생한 것으로 의심됩니다.)

프로젝트에서 프레임워크 폴더를 열고 내부에 프레임워크만 있는지 확인합니다.실수로 Developer 폴더 전체를 추가했습니다!

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

나의 경우 Target > Build Settings > Packaging > Product Name이 내 앱에 사용자 지정된 .plist 파일에서 참조된 다른 값과 동일하게 설정되었습니다.결국 빌드 프로세스로 인해 중복 파일이 생성됩니다.

PodFile에서 use_frameworks!에 주석을 다는 것은 저에게 도움이 되었습니다.

#use_frameworks!

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

Swift 3: (이전 버전도 마찬가지로) 중복 자산이 있을 때 발생합니다.이 문제가 있는 파일의 이름을 변경하면 모든 것이 정상적으로 돌아갑니다.

그것은 또한 당신이 만들었을 때 일어날 수 있습니다.Assets.xcassets그리고 당신은 중복된 이름을 새 이름으로 바꿨기 때문에 시간이 지나면 잊어버리고 폴더 참조를 추가하기 위해 제거하지만 이것은 중복 파일 문제로 돌아갑니다.

간단한 방법 중 하나는,

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

핵심은 하는 것이었습니다.pod deintegrate그리고.rm *.workspace파일! 정말 시간 낭비야!

기본 사용자에게 응답합니다.파일 -> 작업영역 설정 -> 빌드 시스템 -> 레거시 빌드 시스템으로 변경합니다.이제는 잘 지어질 겁니다React-Native는 아직 새 파일 시스템과 호환되지 않습니다.

작업 공간에 동일한 라이브러리를 참조하는 여러 xcode 프로젝트가 있는 경우에도 단일 프레임워크에 종속된 대상을 구축하더라도 워크스페이스가 동일한 라이브러리를 BUILD DIR로 복사하려고 할 수 있습니다.

이 문제를 해결하기 위해 다음을 사용했습니다.하고 다음을 클릭합니다: -> ->Edit Sheme 여기에 이미지 설명 입력 -> 빌드 중 - 선택 취소 Find implicit dependencies 여기에 이미지 설명 입력 경우에 따라 빌드 병렬화의 선택을 취소해야 했습니다.

제 경우 빌드 설정의 "제품 이름"이 비어 있었습니다.따라서 출력은 여러 제품을 이끄는 빈 이름의 .app이 됩니다.제품 이름을 정하면 바로 갈 수 있습니다.

저는 더 나은 방법이 있다고 확신하지만, 핵무기를 만드는 것은 60초 미만밖에 걸리지 않았고, 그것이 효과가 있다는 것을 발견할 수 있는 유일한 방법이었습니다.

  1. 보고서를 휴지통으로 끕니다.
  2. 레포를 다시 복제합니다.
  3. 올바른 원격 추적을 사용하여 repo를 설정합니다. git remote add <url.git>또는git remote set-url <url.git>

언급URL : https://stackoverflow.com/questions/2718246/xcode-warning-multiple-build-commands-for-output-file

반응형