คำเตือน Xcode:“ หลายคำสั่งการสร้างสำหรับไฟล์ที่ส่งออก”


494

ฉันได้รับข้อผิดพลาดเช่นนี้:

[คำเตือน] คำเตือน: คำสั่งบิลด์หลายคำสั่งสำหรับไฟล์เอาต์พุต /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png

[คำเตือน] คำเตือน: คำสั่งบิลด์หลายคำสั่งสำหรับไฟล์เอาต์พุต /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png

[คำเตือน] คำเตือน: คำสั่งหลายบิลด์สำหรับไฟล์เอาต์พุต /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png

แต่ฉันได้ตรวจสอบ Xcode แล้วและฉันไม่เห็นความซ้ำซ้อนของไฟล์ดังกล่าวเลย ตามที่โพสต์นี้ในรายการส่งเมลของ Apple กล่าวว่าไม่มีการซ้ำซ้อน

คำตอบ:


809

ใน Project Navigator เลือกไฟล์ Xcode Project ของคุณ สิ่งนี้จะแสดงการตั้งค่าโครงการและเป้าหมายในโครงการ ดูในระยะการสร้าง "คัดลอกทรัพยากรบันเดิล" คุณควรค้นหาไฟล์ที่ละเมิดในรายการนั้นสองครั้ง ลบการอ้างอิงที่ซ้ำกัน

Xcode กำลังบ่นว่าคุณกำลังพยายามรวมไฟล์เดียวกันกับแอปพลิเคชันของคุณสองครั้ง


1
เกิดขึ้นกับฉันเมื่อฉันลบเนื้อหาบางส่วนออกจากโฟลเดอร์สร้าง (โดยใช้ Finder) เนื้อหาที่ถูกแทนที่ด้วยเนื้อหาที่อัปเดตด้วยชื่อเดียวกันและลากไปมาภายในตัวเลือก XCode "เพิ่มไปยังเป้าหมาย" ดูเหมือนว่า XCode จะหายไปจากการทำซ้ำรายการเหล่านั้นใน Copy Bundle Resources
brainondev

1
ฉันต้องการเพิ่มสิ่งนี้ หากคุณจบด้วยการอ้างอิงที่ซ้ำกันจำนวนหนึ่ง (อย่างที่ฉันทำ) คุณสามารถคลิก "ตรวจสอบการตั้งค่า" และมันจะลบการอ้างอิงที่ซ้ำกันโดยอัตโนมัติ ง่ายกว่าการค้นหาด้วยตนเอง
Jon Mattingly

1
ฉันมีปัญหาที่คล้ายกัน คำตอบนี้ใกล้เคียงที่สุด ไฟล์ <projName> .xcodeproj / project.pbxproj มีรายการที่ซ้ำกันแม้ว่าโครงการจะแสดงไฟล์เพียงครั้งเดียว นี่เป็นปัญหาการรวม การแก้ไขด้วย vi ไม่หลอกลวง :) ขอบคุณสำหรับการชี้ให้ฉันในทิศทางที่เหมาะสม :)
javatarz

11
น่าสังเกตว่าถ้าคุณมีไฟล์ซ้ำจำนวนมากในขั้นตอนการคัดลอกทรัพยากรบันเดิลคุณสามารถคลิก 'ตรวจสอบการตั้งค่า' ที่ด้านล่างของหน้านี้และ XCode จะแจ้งให้คุณทราบเกี่ยวกับไฟล์ซ้ำและจะลบไฟล์ทั้งหมดหากคุณคลิก ' ทำการเปลี่ยนแปลง ' นรกเร็วกว่าการตามล่าหาพวกมันทีละมาก
Yeti42

1
ฉันมีปัญหาคล้ายกันกับเทมเพลต SpriteBuilder เมื่อฉันเพิ่ม "Published-iOS" ในโครงการอีกครั้ง ปรากฎว่ามันต้องการให้เป็น "การอ้างอิงโฟลเดอร์" และไม่ใช่กลุ่มและได้เพิ่มทั้งโฟลเดอร์นั้นไว้ใน "Copy Bundle Resources" ดังนั้นแม้ว่าทรัพยากรส่วนบุคคลจะไม่ปรากฏในรายการให้ตรวจสอบเพื่อให้แน่ใจว่าไม่ได้มีการเพิ่มจากโฟลเดอร์
samkass

127

สิ่งนี้เกิดขึ้นได้ง่ายเมื่อคุณเพิ่มโครงการย่อยที่ใช้คอมไพล์ Xcode ไม่ฉลาดพอที่จะเพิกเฉยต่อโฟลเดอร์ย่อย. git แม้ว่าคุณจะมองไม่เห็นจาก finder ดังนั้นมันจะสับสนมากว่ามีหลายไฟล์ชื่อ "master" หรือ "แยก", (ไฟล์ git repo มาตรฐาน) ด้วย Xcode4 ไปที่โครงการ (รูทของทรีด้านซ้าย) จากนั้นคลิกเป้าหมายแอปของคุณและขยาย "คัดลอกทรัพยากรบันเดิล" จากนั้นลบการอ้างอิงทั้งหมดไปยัง. git คุณไม่ควรอบมันเข้าไปในแอปของคุณ


43
ฉันคลำหาประมาณหนึ่งวินาทีดังนั้นสิ่งนี้อาจช่วยใครบางคน: เป้าหมายแอป -> สร้างเฟส -> คัดลอกทรัพยากรชุด
ไจ๋

2
ฉันมีหลายไฟล์ที่มีชื่อเดียวกัน (แต่ในไดเรกทอรีต่าง ๆ ) ในโครงการ Xcode ของฉัน บังเอิญหนึ่งในฉันมีทั้งคู่ในขั้นตอนคัดลอกทรัพยากรชุดซึ่งจะส่งผลให้หนึ่งในนั้นถูกเขียนทับในชุดแอปผลลัพธ์ เพียงลบหนึ่งรายการ
BastiBen

112

จริงๆแล้วคำตอบสำหรับเรื่องนี้ค่อนข้างง่าย

ในโครงการ Xcode ของคุณค้นหาไฟล์ที่เพิ่มคำเตือนและเพียงแค่ลบไฟล์ใดไฟล์หนึ่ง

Xcode จะแสดงไฟล์อ้างอิงเพียงหนึ่งไฟล์เท่านั้นในผลการค้นหา แต่อย่าหยุดเพียงแค่นั้นไปข้างหน้าแล้วลบทิ้ง (เป็นการดีที่จะสำรองไฟล์โครงการของคุณก่อนที่จะลบมัน)

ตอนนี้สร้างโครงการอีกครั้ง คำเตือนควรหายไปในขณะนี้ (คำตอบนี้สำหรับรุ่นก่อนหน้าของ xcode)


แต่ไฟล์จะไม่เกิดขึ้นในกลุ่มของ XCode และบานหน้าต่างไฟล์อีกต่อไป การจัดการกับสิ่งนี้คืออะไร?
Tejaswi Yerukalapudi

1
หากคุณยังคงประสบปัญหานี้อยู่ให้ลบไฟล์ทั้งหมดออกจาก Xcode (อย่าลบไฟล์เหล่านั้นในดิสก์) จากนั้นลากพวกเขาทั้งหมดกลับมาหากคุณยังคงมีปัญหาหลังจากนั้นคุณมีทรัพยากรบางอย่างที่มีชื่อเดียวกัน (อาจจะอยู่ในโฟลเดอร์ที่แตกต่างกัน) - ค้นหาและเปลี่ยนชื่อ / ลบ เอาต์พุต Xcode เข้าสู่โฟลเดอร์แฟล็ตดังนั้นโครงสร้างไดเร็กทอรีจะถูกละเว้น
n13

52

นี่ไม่ใช่ข้อผิดพลาด Xcode แม้ว่าข้อความเตือนจะไม่เป็นประโยชน์มากพอที่จะอธิบายสาเหตุที่แท้จริง

ข้อความแสดงข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณมีหลายไฟล์ในโครงการของคุณที่มีชื่อเดียวกัน คุณเพียงแค่ต้องลบหรือเปลี่ยนชื่อไฟล์ที่มีชื่อซ้ำกันและแก้ไขปัญหาได้แล้ว


1
ใช่นี่คือคำตอบที่ถูกต้อง และสถานการณ์สามารถมาถึงได้อย่างง่ายดายเมื่อคุณมีไฟล์ทรัพยากรเช่น pngs ที่มีชื่อเดียวกัน แต่แยก dirs ในระบบไฟล์ของคุณ - ในระหว่างกระบวนการสร้างพวกเขาทั้งหมดจะถูกคัดลอกไปยัง 1 dir คือชุดแอป
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 สามารถช่วยเหลือคุณได้ เลือกเป้าหมายทางด้านซ้ายใน Navigator Project คลิกที่ "ตรวจสอบการตั้งค่า" ที่ด้านล่างของการตั้งค่า 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

นี่ไม่ใช่ข้อผิดพลาด เนื่องจากมีไฟล์มากกว่าหนึ่งไฟล์ที่มีชื่อเดียวกันในโครงการของคุณ
Todd Hopkinson

1
เมื่อคุณแปลไฟล์คุณควรจะมีชื่อไฟล์ที่เหมือนกันสำหรับการแปลแต่ละภาษายกเว้นในไดเรกทอรีที่แตกต่างกัน นี่เป็นข้อผิดพลาดอย่างแน่นอน
Steve

4

สิ่งนี้เกิดขึ้นเพราะคุณ "no.png" "d.png" และ "n.png" ซ้ำซ้อนในแหล่งข้อมูล เพียงมองหาการลบไฟล์ dublicated และลบ


3

ดูเหมือนว่าข้อผิดพลาดจะปรากฏขึ้นเมื่อคุณมีมากกว่าหนึ่งอ้างอิงของไฟล์เดียวกัน ฉันมี 2 ไฟล์ชื่อเดียวกันและได้รับข้อผิดพลาดนี้ เมื่อฉันลบหนึ่งในนั้นข้อผิดพลาดหายไป ..


2

อีกรูปแบบหนึ่งของปัญหานี้ ฉันมีข้อความเดียวกันปรากฏขึ้นไม่มีวิธีแก้ไขที่แนะนำก่อนหน้านี้แก้ไขปัญหาได้ (แน่นอนฉันมีเพียงไฟล์สำเนาที่ละเมิดเท่านั้น)

โซลูชันของฉันคือแก้ไขไฟล์ project.pbxproj ในเท็กซ์เอดิเตอร์ (หลังจากออกจาก XCode และสำรองไฟล์แน่นอน) และลบการอ้างอิงทั้งหมดไปยังไฟล์ที่ละเมิด จากนั้นหลังจากเริ่ม XCode อีกครั้งฉันเพิ่มไฟล์ด้วยตนเองกลับไปที่โครงการและทุกอย่างก็โอเค

(ความสงสัยของฉันคือปัญหานี้เกิดขึ้นกับฉันเนื่องจากคู่มือเช่น: ไม่ใช่ XCode, รวมไฟล์โครงการ)


1

เปิดโฟลเดอร์ Frameworks ในโครงการของคุณและตรวจสอบให้แน่ใจว่ามีเฉพาะ Frameworks ภายใน ฉันเพิ่มผิดพลาดทั้งโฟลเดอร์ Developer!


1

ฉันมีปัญหาเดียวกันเมื่อนาทีที่แล้ว ฉันได้กล่าวถึงการเปลี่ยน 'เป้าหมายการปรับใช้' เพื่อแก้ไขปัญหาของฉัน


1

สำหรับฉันเป้าหมาย> สร้างการตั้งค่า> บรรจุภัณฑ์> ชื่อผลิตภัณฑ์ถูกตั้งค่าเป็นสิ่งเดียวกันกับค่าอื่นที่อ้างอิงในไฟล์. plist ซึ่งกำหนดเองสำหรับแอปของฉัน ในที่สุดเนื่องจากกระบวนการสร้างของเรานี้จะสร้างไฟล์ที่ซ้ำกัน


1
นี่เป็นปัญหาสำหรับฉันขอบคุณ!
Leon

0

Swift 3 : (แต่เป็นเวอร์ชั่นเก่ากว่า) มันเกิดขึ้นเมื่อฉันมีเนื้อหาที่ซ้ำซ้อน เพียงแค่เปลี่ยนชื่อไฟล์ที่มีปัญหานี้และทุกอย่างเป็นไปด้วยดี

มันอาจเกิดขึ้นได้เช่นกันเมื่อคุณสร้างAssets.xcassetsและคุณได้เปลี่ยนชื่อที่ซ้ำกันด้วยชื่อใหม่ดังนั้นหลังจากเวลาที่คุณลืมและลบเพื่อเพิ่มการอ้างอิงโฟลเดอร์ แต่อันนี้กลับไปที่ปัญหาไฟล์ที่ซ้ำกัน ..


0

หนึ่งในวิธีที่ง่ายคือ

  • ไปที่เป้าหมายของแอพ
  • ไปที่ Build Phases
  • ไฟล์ที่ส่งออก
  • ลบพา ธ ของไฟล์ที่หมดแล้วสร้างโครงการ มันจะทำงานได้สำเร็จ

0

กุญแจสำคัญคือการทำpod deintegrateและrm *.workspaceไฟล์! ช่างเป็นการเสียเวลาเปล่า!


0

ผู้ใช้แบบโต้ตอบพื้นเมือง ไฟล์ goto -> การตั้งค่าพื้นที่ทำงาน -> สร้างระบบ -> เปลี่ยนเป็นระบบสร้างเดิม และมันควรจะสร้างได้ดีในขณะนี้ React-Native ยังไม่สามารถใช้งานกับระบบไฟล์ใหม่ได้


0

แสดงความคิดเห็น use_frameworks! ใน PodFile ทำงานให้ฉัน

#use_frameworks!

หมายเหตุ: ใช้วิธีนี้กับ XCode 10.1, pod version 1.8.4


-1

ในขณะที่ฉันแน่ใจว่ามีวิธีที่ดีกว่าการฆ่าหนูใช้เวลาน้อยกว่า 60 วินาทีและเป็นสิ่งเดียวที่ฉันสามารถหาได้

  1. ลาก repo ไปที่ถังขยะ
  2. โคลน repo ของคุณอีกครั้ง
  3. ตั้งค่า repo ของคุณด้วยการติดตามระยะไกลที่ถูกต้อง git remote add <url.git>, หรือgit remote set-url <url.git>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.