เป็นไปได้ไหมที่จะกำหนดเป้าหมาย iOS เวอร์ชันเก่าเมื่อใช้ Xcode 4.2 และ iOS 5 SDK


103

ฉันเพิ่งดาวน์โหลด Xcode 4.2 พร้อมแพ็คเกจ iOS 5 SDK และฉันสังเกตเห็นทันทีว่าฉันไม่สามารถใช้ iPhone 3G ของฉันกับ iOS 4.2.1 สำหรับการดีบัก ฉันสามารถดีบักและทดสอบบน iphone 4 ของฉันที่ติดตั้ง iOS 5 เท่านั้น

สำหรับอุปกรณ์ใด ๆ ของฉันที่ใช้ iOS ที่น้อยกว่า 5.0 Xcode เพียงแค่ระบุว่า "ใช้งาน iPhone3GS เสร็จแล้ว" และไม่ได้รัน ฉันตั้งเป้าหมายการปรับใช้เป็น 3.0 เนื่องจากฉันไม่ได้ใช้คุณสมบัติใด ๆ ในแอปของฉันที่สูงกว่า 3.0 และฉันต้องการกำหนดเป้าหมายเวอร์ชัน 3.0 ขึ้นไปทั้งหมด ฉันได้ติดตั้งโปรไฟล์การจัดเตรียมทั้งหมดและเป็นข้อมูลล่าสุดแล้ว

ฉันได้ออกและเริ่ม xcode ใหม่ฉันทำความสะอาดบิวด์หลายครั้ง ฉันได้ลองเพิ่ม armv6 ในการตั้งค่าการสร้าง archtecture แล้ว แต่ไม่มีอะไรที่จะช่วยให้ฉันสร้างและเรียกใช้แอปบนโทรศัพท์เครื่องเก่าของฉันด้วย ios 4.2.1

คำถามของฉันคือเป็นไปได้ไหมที่จะยังคงทำให้แอปที่มี SDK ใหม่ใช้งานได้กับ iOS เวอร์ชันที่ต่ำกว่า 5 ฉันจะแน่ใจได้อย่างไรว่าแอปของฉันจะยังคงทำงานบน iOS เวอร์ชันต่ำกว่าหากฉันไม่สามารถติดตั้งแอปลงในโทรศัพท์เครื่องเก่าได้

แก้ไข: ตกลงดูเหมือนว่า iOS SDK 5 จะยกเลิกการรองรับ armv6 ตามค่าเริ่มต้น สิ่งที่คุณต้องทำคือเพิ่ม armv6 ในช่องสถาปัตยกรรมภายใต้การตั้งค่าการสร้างสำหรับทั้งเป้าหมายและโครงการของคุณ จากนั้นแอปของคุณจะสามารถทำงานบนอุปกรณ์ iPhone 3G ได้ สามารถดูคำตอบได้ที่นี่ วิธีสร้างสำหรับสถาปัตยกรรม armv6 และ armv7 ด้วย iOS 5


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

คำตอบ:


153

ฉันมีปัญหาเดียวกันกับการพยายามรับโครงการ Xcode 4.2 ที่สร้างขึ้นใหม่ซึ่งทำงานบน iPhone 3G 4.2.1 นี่คือวิธีที่ฉันสามารถทำให้มันทำงานได้

1) เปลี่ยน "Build Settings" ==> "Architecture" ของเป้าหมายจาก "Standard (armv7)" เป็น "other" เพิ่ม armv6 และ armv7

2) เปลี่ยน "Build Settings" ==> "Valid Architecture" ของเป้าหมายเป็น armv6 และ armv7

3) เปลี่ยน "Build Settings" ของเป้าหมาย ==> "iOS Deployment Target" เป็น iOS 4.2

ป้อนคำอธิบายภาพที่นี่

4) เปิดโครงการ * -Info.plist ลบการตั้งค่า "ความสามารถของอุปกรณ์ที่จำเป็น" (โปรดทราบว่าจำเป็นต้องใช้ armv7) ป้อนคำอธิบายภาพที่นี่

btw ฉันพบสิ่งนี้เมื่อฉันพยายามเพิ่มแอพด้วยตนเองผ่านทางออแกไนเซอร์และรายงาน:

ไม่สามารถติดตั้งแอปพลิเคชัน

Info.plist สำหรับแอปพลิเคชันที่ /Users/.../TestsDebug.app ระบุข้อกำหนดความสามารถของอุปกรณ์ซึ่ง Dev iPhone 3G ไม่เป็นไปตาม

ทั้งหมดควรทำงานหลังจากนั้น พูดคุยเกี่ยวกับ PITA


ขอบคุณมาก! ฉันเป็นหนี้คุณเบียร์! นี่ช่วยแก้ปัญหาของฉันได้อย่างแท้จริง PITA: D
Greg Ellis

4
ขอบคุณ! ฉันอ่านเกี่ยวกับการตั้งค่าสถาปัตยกรรมที่อื่น แต่ดูเหมือนจะไม่มีใครพูดถึงการตั้งค่า "ความสามารถของอุปกรณ์ที่จำเป็น" ด้วย
bunnyhero

ฉันต้องเพิ่ม: ทั้งโครงการใหม่และเก่าได้รับผลกระทบจากการอัปเกรด! ฉันทดสอบของเก่าก่อนที่จะใช้ Googling แต่ก็ใช้ไม่ได้เช่นกัน! ฉันเป็นหนี้คุณเบียร์ด้วย! :)
Eduardo Costa

1
ฉันมีปัญหาเดียวกัน แต่แม้ว่าการตั้งค่าของโครงการจะเป็น 'Standard armv7' สำหรับสถาปัตยกรรม แต่สถาปัตยกรรมที่ถูกต้องก็ระบุว่า 'armv6 armv7' อยู่แล้ว นอกจากนี้ฉันไม่มีคุณสมบัติ 'ความสามารถของอุปกรณ์ที่จำเป็น' ใน Info.plist จะลองใช้เคล็ดลับ แต่หวังว่ามันจะได้ผล!
rchampour ก่อนหน้า

"ความสามารถของอุปกรณ์ที่จำเป็น" ก็มีเช่นกัน
codecaffeine

12

ไปที่Xcode> ค่ากำหนด> ดาวน์โหลดและติดตั้งการสนับสนุนการดีบักสำหรับ iOS เวอร์ชันเก่า


ฉันไปที่การตั้งค่าและดาวน์โหลดและติดตั้งการสนับสนุนการดีบักสำหรับระบบปฏิบัติการรุ่นเก่าออกจาก xcode การเปิด xcode ใหม่ได้ทำความสะอาดและสร้าง แต่แอปยังคงไม่ติดตั้งบนอุปกรณ์รุ่นเก่าของฉัน ตอนนี้ฉันสูญเสียทั้งหมดเมื่อฉันเห็นคำตอบของคุณฉันคิดว่าจะแก้ไขปัญหาของฉันได้แน่นอน :(
Greg Ellis

1
ฉันเป็นหนี้คุณเบียร์ด้วย! สิ่งนี้แก้ไขปัญหาอื่นที่ฉันมีหลังจากการอัปเกรด Xcode 4! ตอนนี้ฉันสามารถดีบักอุปกรณ์ iOS 4.2 ของฉัน (iPod Touch รุ่นที่ 2) ได้แล้ว!
Eduardo Costa

3

mmorris ทำให้ฉันเกือบจะแก้ไขปัญหาได้แล้ว ... ใน Info.plist ฉันต้องตั้งค่าความสามารถของอุปกรณ์ที่ต้องการเป็น armv6 ไม่ใช่ armv7 หวังว่านี่จะช่วยคนอื่น ๆ ได้เช่นกัน


1

คุณต้องเชื่อมต่อโทรศัพท์จากนั้นไปที่ผู้จัดงาน Xcode ควรขอเวอร์ชันเก่าโดยอัตโนมัติ

ดูหน้านักพัฒนาสำหรับข้อมูลเพิ่มเติม ได้อธิบายไว้ในหมายเหตุสำหรับ 4.2 เบต้า


ฉันทำสิ่งนี้และคลิก "ใช้อุปกรณ์นี้เพื่อการพัฒนา" และดูเหมือนว่าจะทำในสิ่งที่ควรจะเป็น แต่ฉันยังไม่สามารถรับแอปให้ทำงานบนอุปกรณ์เครื่องเก่าของฉันจาก xcode ได้
Greg Ellis

1

ฉันพบปัญหาคล้ายกันในการพยายามเรียกใช้แอพของฉันบน iPod Touch เครื่องเก่า ฉันอัปเกรดเป็น Xcode 4.3.3 และแอปจะไม่ทำงานในตัวดีบั๊กสำหรับฉันบนฮาร์ดแวร์รุ่นเก่าอีกต่อไป

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

ในกรณีของฉันฉันพบว่าโครงร่างการสร้างเป็นตัวการ Xcode 4.3.3 แจ้งให้ฉันเปลี่ยนจากดีบักเกอร์ GDB เป็น LLDB เมื่ออัปเกรดโครงการของฉัน เมื่อฉันเปลี่ยนการดำเนินการเรียกใช้ของโครงร่างของฉันกลับเป็น GDBฉันสามารถเรียกใช้แอปอีกครั้งบนฮาร์ดแวร์เก่าจาก Xcode


1

ฉันพบว่าฉันต้องเพิ่ม armv6 ให้กับสถาปัตยกรรม แต่ก็ยังไม่ได้ผล และตอนนี้ฉันได้ลบ armv7 ออกจากความสามารถที่จำเป็นแล้วก็แค่นั้น มันได้ผล!


0

สิ่งนี้ใช้ได้ผลสำหรับฉันและน่าจะเหมาะกับคุณหากคุณมี Xcode เวอร์ชันเก่าก่อนหน้านี้ หากไม่เป็นเช่นนั้นคุณควรปฏิบัติตามคำแนะนำของผู้อื่นเพื่อรับ SDK จาก SDK เวอร์ชันเก่า:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

คำสั่งนี้แตกต่างจากคำสั่งอื่น ๆ เล็กน้อย แต่คำสั่งเหล่านั้นทิ้งไฟล์ในโฟลเดอร์ SDKs สำหรับฉัน - เราต้องการให้สร้างไดเร็กทอรีย่อยด้วยชื่อที่เหมาะสม


0

ในกรณีของฉันมีบรรทัดซ้ำซ้อนในความสามารถของอุปกรณ์ที่จำเป็น ป้อนคำอธิบายภาพที่นี่

ฉันเพิ่งถอดมันออก ...

ป้อนคำอธิบายภาพที่นี่

หวังว่ามันจะช่วยคนอื่นได้

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