โครงการเก็บถาวรใน Xcode สร้างมัดหลายแอปพลิเคชันไม่ถูกต้อง


170

การเก็บโครงการของฉันใน Xcode เป็นการสร้างกลุ่มแอปพลิเคชันแบบหลายกลุ่มแทนที่จะรวมกลุ่มเป้าหมายหลักของฉันสำหรับการเปิดตัวซึ่งเป็นสิ่งที่ฉันต้องการ โดยเฉพาะเมื่อฉันตรวจสอบความถูกต้องที่เก็บถาวรของฉันใน Organizer มันทำให้ฉันมีข้อความ:

"[projectname] ไม่มีแอปพลิเคชันแบบ – – Bundle หรือมีหลายผลิตภัณฑ์โปรดเลือกการเก็บถาวรอื่นหรือปรับแบบแผนของคุณเพื่อสร้างแอปพลิเคชันแบบ – – Bundle เดียว"

ดูเหมือนจะมีการตั้งค่าบางอย่างในรูปแบบที่ต้องปรับ แต่ฉันไม่สามารถเข้าใจได้ว่าอะไรเป็นสาเหตุของการรวมเป้าหมายอื่นไว้

ฉันใช้ Xcode 4.0 อยู่ดี


คำตอบ:


251

ตกลงตอบคำถามของฉันเอง ปรากฎว่าเป็นปัญหาของโครงการที่ต้องพึ่งพาใน XCode 4 หากสิ่งนี้เกิดขึ้นกับคุณให้ไปที่การตั้งค่า Build สำหรับโครงการที่ต้องพึ่งพาทั้งหมดของคุณ (เช่นไลบรารีคงที่) และตรวจสอบให้แน่ใจว่ามีการตั้งค่าตัวเลือก "ข้ามการติดตั้ง" ถึงใช่

รายละเอียดเพิ่มเติมได้ที่นี่: 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) ต้องการให้คุณเปลี่ยนส่วน Copy Headers ของขั้นตอนการสร้างเช่นกัน ดังนั้นให้แน่ใจว่าคุณดูคำตอบของไรอันด้วย
Tim Swast

2
ฉันยังต้องย้ายไฟล์ส่วนหัวทั้งหมด (ของไลบรารีคงที่) ในเป้าหมาย "Build Phases" ใน "Copy Headers" ฉันย้ายไฟล์เหล่านั้นจาก "สาธารณะ" ไปยัง "Project"
Hlung

151

จำเป็นต้องแก้ไขสองสิ่งในโครงการย่อยเพื่อแก้ไขปัญหานี้:

  1. เมื่อค้นพบ Jared ภายใต้การตั้งค่าการสร้างให้ตั้งค่า "ข้ามการติดตั้ง" เป็น "ใช่"
  2. ภายใต้การสร้างเฟสตรวจสอบส่วนการคัดลอกส่วนหัว หากมีไฟล์ส่วนหัวใด ๆ ที่แสดงเป็นส่วนตัวหรือสาธารณะให้ลากลงไปยังส่วนโครงการ

7
ฉันรักคุณจริงๆ! : D
arielcamus

5
ฉันได้แก้ไขการตั้งค่า "ข้ามการติดตั้ง" ทั้งหมด แต่สิ่งที่ฉันพลาดคือส่วนคัดลอกส่วนหัวขอขอบคุณ!
Thomas Einwaller

2
ฉันใช้ three20 โครงการนี้มีไฟล์ส่วนหัวที่ระบุว่าเป็นส่วนตัวหรือสาธารณะ แต่ถ้าฉันย้ายพวกเขาในส่วนโครงการก็ไม่ได้รวบรวม ข้อเสนอแนะใด ๆ
Breezeight

19
หยุดใช้ Three20 แม้ว่าคุณจะได้รับปัญหา Xcode นี้ ฉันจริงจังจริงๆ!
Adam Eberbach

2
หากคุณมีโครงการห้องสมุดจำนวนมากเช่นที่เราทำและมีปัญหาในการพิจารณาว่าการติดตั้งข้ามของไลบรารีใดถูกตั้งค่าเป็น No หรือไฟล์ส่วนหัวใดที่ทำให้เกิดปัญหาลองวิธีนี้: เลือกไฟล์เก็บถาวรและคลิกปุ่มแจกจ่าย เลือกตัวเลือก 'บันทึกผลิตภัณฑ์ที่สร้างขึ้น' กดถัดไปและบันทึก เรียกดูไดเรกทอรีที่สร้างขึ้นใน Finder ไดเรกทอรีย่อย 'ไลบรารี' จะระบุไลบรารีที่คุณต้องการตั้งค่าข้ามการติดตั้งเป็นใช่ usr / local / include จะระบุไฟล์ส่วนหัวผู้ร้ายที่คุณต้องการย้ายจากสาธารณะเป็นโปรเจ็กต์
Sunil Gowda

10

ฉันทำสิ่งต่อไปนี้เพื่อให้ใช้ได้ผลกับฉัน:

  1. สำหรับห้องสมุดแบบคงที่ three20 ฉันใช้cocoapodsเพื่อรวมไฟล์ภายในโครงการหลัก .. มันเพิ่งกำจัดปัญหาทั้งหมดที่ three20 ให้กับฉัน (และพวกเขามีมากมาย .. ) btw ฉันพยายามแทนที่ three20 ด้วยNimbus .. แต่ Nimbus คุณสมบัติบางอย่างที่โปรเจ็กต์ของฉันใช้อยู่นั้นใช้งานได้สามถึงสามอย่าง .. ดังนั้น Nimbus จึงไม่มีประโยชน์
  2. ตั้งค่าการข้ามการติดตั้งเป็นใช่ภายใต้การตั้งค่าการสร้างสำหรับโครงการย่อยอื่น ๆ / ห้องสมุดคงที่และเปลี่ยนส่วนหัวการคัดลอกจากสาธารณะเป็นโครงการภายใต้เฟสการสร้าง
  3. ที่สำคัญที่สุดคือ:ภายใต้ห้องสมุดย่อย .. ภายใต้การสร้างขั้นตอนฉันมั่นใจว่าคัดลอกไฟล์ปลายทางก็เปลี่ยนจากการAbsolute pathproducts directory

และนั่นคือมัน!

คำใบ้:เพื่อให้ได้แนวคิดเกี่ยวกับไฟล์ที่ละเมิดที่ทำให้ไฟล์เก็บถาวรของคุณสร้างไฟล์เก็บถาวรไม่ใช่ IP ทำสิ่งนี้

  1. เลือกไฟล์เก็บถาวรและคลิกปุ่มแจกจ่าย
  2. เลือกตัวเลือก 'บันทึกผลิตภัณฑ์ที่สร้างขึ้น'
  3. กดถัดไปและบันทึก
  4. เรียกดูไดเรกทอรีที่สร้างขึ้นใน Finder
  5. ไดเรกทอรีย่อย 'ไลบรารี' จะระบุไลบรารีที่คุณต้องการตั้งค่าข้ามการติดตั้งเป็นใช่
  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) หลังจากลบเฟสบิลด์นี้แล้วก็ใช้งานได้ดี

หากคำตอบข้างต้นไม่สามารถแก้ไขปัญหาได้ฉันขอแนะนำให้ส่งออกไฟล์เก็บถาวรไปยังเครื่องมือค้นหาและดูว่ามีอะไรอยู่นอกชุดแอปพลิเคชั่น.

แก้ไข: ดูhttps://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue:--'Does-not-contain-a-single-bundle '


0

ฉันยังมีปัญหาเดียวกันนี้ "[projectname] ไม่มีแอปพลิเคชั่นแบบบันเดิลเดี่ยวหรือมีผลิตภัณฑ์หลายรายการโปรดเลือกไฟล์เก็บถาวรอื่นหรือปรับแบบแผนของคุณเพื่อสร้างแอปพลิเคชันแบบ –A รวมแบบเดี่ยว" หลังจากอัปเกรดเป็น xcode5

ปัญหาคือการที่กลุ่มของฟิลด์ในการตั้งค่าการสร้างสำหรับ 'ปล่อย' ว่าง ฉันเดา xcode4 เปลี่ยนเป็นการตั้งค่าการดีบักโดยอัตโนมัติ

anwyays - การแก้ไขของฉันคือการค้นหาการตั้งค่าทั้งหมด 'ปล่อย' ที่ว่างเปล่าและตั้งค่าการตั้งค่าการแก้ปัญหา โดยเฉพาะอย่างยิ่งมันเป็นการตั้งค่าไฟล์ Info.plist

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.