คุณมาถูกทางแล้วเกี่ยวกับไฟล์. xcscheme - ฉันมีปัญหานี้ปรากฏขึ้นขณะตั้งค่าโครงการของตัวเอง!
สำหรับคนรุ่นหลังหรืออย่างน้อยใครก็ตามที่เดินทางมาที่นี่จากการค้นหานี่คือสองเวอร์ชัน - เวอร์ชัน "ฉันไม่ว่างดังนั้นขอแค่ข้อเท็จจริง" และการอภิปรายและเหตุผลที่เกี่ยวข้องมากกว่า ทั้งสองเวอร์ชันนี้ถือว่าคุณกำลังพยายามสร้างจากไฟล์ Workspace ถ้าคุณไม่เป็นเช่นนั้นขอโทษของฉันเนื่องจากส่วนใหญ่ใช้กับโครงการที่ใช้พื้นที่ทำงาน
เวอร์ชัน 'Fix-it' แบบย่อ
สาเหตุที่แท้จริงคือลักษณะการทำงานเริ่มต้นของ Schemes คือการเก็บแบบแผนไว้เป็น "ส่วนตัว" จนกว่าจะมีการระบุว่าเป็นแบบใช้ร่วมกันโดยเฉพาะ ในกรณีของการสร้างบรรทัดคำสั่ง Xcode UI จะไม่ทำงานและเครื่องมือ xcoderun ไม่มีแคชของ Schemes ที่จะใช้งานได้ เป้าหมายคือการสร้างแบ่งปันและยอมรับโครงการที่คุณต้องการให้ Bamboo ดำเนินการ:
- บนสำเนาที่ใช้งานได้อย่างสมบูรณ์ของรหัสให้เปิดพื้นที่ทำงานของโครงการ
- เลือก Scheme> Manage Schemes ... จากเมนูผลิตภัณฑ์
- รายการ Schemes ที่กำหนดไว้สำหรับโครงการจะปรากฏขึ้น
- ค้นหา Scheme Bamboo ที่พยายามเรียกใช้
- ตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมายในช่อง "ใช้ร่วมกัน" สำหรับโครงร่างนั้นและการตั้งค่า "คอนเทนเนอร์" ถูกตั้งค่าเป็นพื้นที่ทำงานไม่ใช่ไฟล์โครงการ
- คลิก 'OK' เพื่อปิดแผ่นงาน Manage Schemes
- ไฟล์. xcscheme ใหม่ถูกสร้างขึ้นในโปรเจ็กต์ของคุณที่ WorkspaceName.xcworkspace / xcshareddata / xcschemes
- คอมมิตไฟล์นี้กับที่เก็บของคุณและเรียกใช้งาน Bamboo build
การอภิปรายและเหตุผลที่ลึกซึ้งยิ่งขึ้น
Xcode 4 เปิดตัว Workspaces and Schemes เพื่อช่วยในการพยายามควบคุมความวุ่นวายบางอย่างที่เกิดขึ้นจากการจัดการกับกลไกของโครงการ Xcode ที่เกี่ยวข้องกับการเดินสายสร้างเป้าหมายและสร้างการกำหนดค่าร่วมกัน พื้นที่ทำงานเองมีชุดข้อมูลการกำหนดค่าของตัวเองซึ่งอธิบายถึง 'กล่อง' ขนาดเล็กแต่ละกล่องที่มีและทำหน้าที่เป็นโครงกระดูกสำหรับการแนบไฟล์. xcodeproj และชุดของข้อมูลการกำหนดค่าที่ใช้ร่วมกันซึ่งจะสะท้อนไปยังเครื่องของนักพัฒนาหรือระบบ CI แต่ละเครื่อง . นี่เป็นทั้งพลังและข้อผิดพลาดของพื้นที่ทำงาน - มี 1) หลายวิธีที่สามารถกำหนดค่าสิ่งต่าง ๆ ได้อย่างถูกต้อง 100% แต่ใส่ลงในคอนเทนเนอร์ที่ไม่ถูกต้องหรือ 2) ใส่ลงในคอนเทนเนอร์ที่ถูกต้อง แต่กำหนดค่าไม่ถูกต้องจึงแสดงผลข้อมูล ไม่สามารถเข้าถึงได้โดยส่วนอื่น ๆ ของระบบ!
ลักษณะการทำงานเริ่มต้นของโครงร่าง Xcode 4 คือการสร้างโครงร่างใหม่โดยอัตโนมัติเมื่อมีการเพิ่มโปรเจ็กต์ลงในไฟล์ Workspace พวกคุณที่เพิ่มไฟล์. xcodeproj หลายไฟล์อาจสังเกตเห็นว่ารายการโครงร่างของคุณไม่ราบรื่นอย่างรวดเร็วโดยเฉพาะอย่างยิ่งเมื่อมีการเพิ่มไฟล์โครงการจากนั้นนำออกจากนั้นอ่านไปยังพื้นที่ทำงานเดียวกัน โครงร่างทั้งหมดที่สร้างขึ้นโดยอัตโนมัติหรือสร้างขึ้นเองโดยค่าเริ่มต้นจะเป็นโครงร่าง "ส่วนตัว" เท่านั้นที่ผู้ใช้ปัจจุบันจะมองเห็นได้แม้ว่าไฟล์. xcuserdata จะถูกผูกมัดกับข้อมูลและการกำหนดค่าของโครงการก็ตาม นี่คือต้นตอของข้อผิดพลาดการสร้างที่เป็นความลับรายงาน Bamboo จาก xcodebuild - เนื่องจาก Bamboo ดำเนินการสร้างผ่านบรรทัดคำสั่งไม่ใช่ Xcode UI จึงไม่มีโอกาสที่ Schemes จะสร้างขึ้นโดยอัตโนมัติและอาศัยเฉพาะสิ่งที่ ถูกกำหนดไว้ในพื้นที่ทำงานเอง
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
xcodebuild ค้นหาไฟล์ <'scheme' Parameter Value> .xcscheme ที่มีอยู่ที่ <'workspace' Parameter Value> / xcshareddata / xcschemes
เห็นได้ชัดว่ามีหลายวิธีที่สามารถกำหนดค่าทั้ง Bamboo และพื้นที่ทำงานได้ดังนั้นโปรดทราบว่าการกำหนดค่าเฉพาะของคุณอาจไม่ได้จับคู่ 100% กับสิ่งที่นำเสนอที่นี่ ประเด็นสำคัญ:
- งานอัตโนมัติบางอย่างที่ Xcode UI ดูแลอย่างน่าอัศจรรย์ไม่สามารถใช้ได้ผ่าน Xcodebuild CLI
- คุณสามารถแนบโครงร่างและสร้างข้อมูลการกำหนดค่าไปยังหลาย ๆ ที่ใน 'ลำดับชั้นของคอนเทนเนอร์' - ตรวจสอบให้แน่ใจว่าข้อมูลของคุณอยู่ในคอนเทนเนอร์ที่ถูกต้อง (พื้นที่ทำงานโครงการและ / หรือเป้าหมายการสร้าง)
- พิจารณาตำแหน่งในลำดับชั้นคอนเทนเนอร์ที่เครื่องมือ xcodebuild อาจกำลังมองหาข้อมูลการกำหนดค่า ตัวบ่งชี้ที่ดีว่าจะเริ่มค้นหาที่ใดนั้นขึ้นอยู่กับการใช้อาร์กิวเมนต์ '-workspace' หรือ '-project'
มีการเลือกช่อง "แชร์" แล้ว ... ตอนนี้เป็นอย่างไร
ฉันพบปัญหาเดียวกันนี้ในอินสแตนซ์ Bamboo ของตัวเอง ปรากฎว่าโครงร่างที่ถูกคอมมิตในที่เก็บของฉันล้าสมัยและเครื่องมือบรรทัดคำสั่งเวอร์ชันล่าสุดไม่สามารถจัดการได้อย่างสง่างาม เนื่องจากสิ่งนี้มีอยู่ก่อนหน้านี้ฉันได้ตรวจสอบการตั้งค่าเพื่อให้แน่ใจว่าไม่มีอะไรที่ชัดเจนเกี่ยวกับโครงร่างลบและสร้างโครงร่างใหม่เพื่อให้แน่ใจว่าฉันทำเครื่องหมายเป็น 'แชร์' และแนะนำไฟล์. xcscheme ใหม่ไปยัง กรุ
หากทุกอย่างดูดีและการสร้างใหม่ไม่สามารถแก้ปัญหาได้ให้ตรวจสอบการตั้งค่าคอนเทนเนอร์นั้นอีกครั้ง - มันง่ายมากที่จะนำโครงร่างนั้นไปแนบกับคอนเทนเนอร์ที่ไม่ถูกต้องในลำดับชั้น!