“ คำเตือน: แอพของ iPhone ควรมีสถาปัตยกรรม armv6” แม้จะมีการตั้งค่าการสร้าง


332

เป็นเวลานานแล้วที่ฉันต้องปรับการตั้งค่าการสร้างโครงการ หลังจากอัปเกรดเป็น SDK ล่าสุดฉันมีปัญหาในการสร้างการกำหนดค่าการกระจายเฉพาะกิจ

สร้างสร้างคำเตือนและข้อผิดพลาดนี้:

คำเตือน: แอป iPhone ควรมีสถาปัตยกรรม armv6 (ARCHS ปัจจุบัน = "armv7")

iPhone / iPod Touch: แอปพลิเคชั่นที่ใช้งานได้ขาดสถาปัตยกรรมที่ต้องการ ต้องมีสถาปัตยกรรมอย่างน้อยหนึ่งอย่างต่อไปนี้: armv6 (-19033)

อย่างไรก็ตามในโครงการของฉันฉันคิดว่าฉันมีการตั้งค่าที่ถูกต้อง:

  • สถาปัตยกรรมคือ: มาตรฐาน (armv6 armv7)
  • ฐาน SDK: iOS ล่าสุด (ตั้งค่าปัจจุบันเป็น iOS 4.2)
  • สถาปัตยกรรมที่ถูกต้อง: armv6 armv7

ข้อความแสดงแทน

ฉันทำความสะอาดเป้าหมายทั้งหมดแล้ว

ฉันขอขอบคุณเคล็ดลับใด ๆ


Mine เป็นแอปเก่าที่ได้รับการอัปเดตและมีข้อผิดพลาดเดียวกันสำหรับเป้าหมายการปรับใช้ iOS <4.3 เช่นกัน! ดังนั้นทางออกของฉันคือลบการอ้างอิงทั้งหมดไปยัง armv6 และตั้งค่านี้เป็น> = 4.3 มันได้ผล
Henrik Erlandsson

และตอนนี้ฉันก็ลองเหมือนกันสำหรับแอปเก่า ๆ ที่ได้รับ rehaul และมันไม่ทำงาน ... ปัญหา XCode 5 มันเข้าใจผิดการตั้งค่า Build ดูเหมือนว่า
Henrik Erlandsson

คำตอบ:


418

หากใช้ Xcode 4.2 หรือสูงกว่าให้ลองทำดังนี้:

  1. คลิกชื่อโครงการของคุณ (ในคอลัมน์ด้านซ้าย) ตามด้วยเป้าหมาย:

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

  2. คลิกแท็บ 'การตั้งค่าการสร้าง' (ในคอลัมน์ด้านขวา):

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

  3. คลิกที่แถว 'ปล่อย' หรือ 'กระจาย' ใต้ 'สถาปัตยกรรม' และเลือก 'อื่น ๆ ... ':

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

  4. ดับเบิลคลิกแถวที่ไฮไลต์ชื่อ '$ (ARCHS_STANDARD_32_BIT)' ในป๊อปโอเวอร์ที่ปรากฏขึ้นและแทนที่ด้วยการพิมพ์ 'armv6' จากนั้นเพิ่มแถวใหม่ด้วยปุ่มบวกที่ด้านล่างซ้ายของป๊อปโอเวอร์และพิมพ์ 'armv7' จากนั้นคลิกเสร็จสิ้น:

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

อัปเดต: คุณควรเพิ่ม armv7s เพื่อกำหนดเป้าหมาย iPhone 5 เช่นกัน (และวาง armv6 หากสร้างด้วย Xcode 4.5 หรือสูงกว่าซึ่งไม่รองรับ armv6 อีกต่อไป)

แค่นั้นแหละ. ตอนนี้คุณควรจะสามารถสร้าง / เก็บถาวรโดยไม่สร้างข้อผิดพลาด

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


3
ดูเหมือนว่า Apple กำลังจะย้ายออกจาก ARM6 ดังนั้นนี่จึงเป็นขั้นตอนที่จำเป็นสำหรับ Xcode 4.2 เป็นเรื่องแปลกที่กระบวนการส่งยังต้องใช้ ARM6 ถึงแม้ว่าตอนนี้ 4.2 จะเป็นแบบสาธารณะ ...
Jasarien

7
ฉันไม่มีแถวการแจกจ่ายภายใต้สถาปัตยกรรม แต่ฉันมีแถว "ปล่อย" ไม่ทราบวิธีการทำ
OMGPOP

2
@ Let'sSpotIt เพียงเพิ่ม armv6 และ armv7 ไปยังแถว Release ของคุณ โครงการในภาพหน้าจอของฉันถูกนำเข้าจาก Xcode เวอร์ชันก่อนหน้าดังนั้นชื่อสถาปัตยกรรมที่แตกต่างกัน
Nick

2
ขอบคุณนิค นอกจากนี้โปรเจ็กต์ใหม่ที่สร้างใน Xcode 4.2 อาจจำเป็นต้องเปลี่ยนไฟล์ info.plist เพื่อรองรับอุปกรณ์ armv6 ดูคำตอบเพิ่มเติมของฉันด้านล่าง
MattyG

1
@Nick ขอบคุณสำหรับเคล็ดลับและสำหรับฉันฉันต้องเลือก "Project" แทน "Target" การเลือกจากการตั้งค่าการสร้าง "เป้าหมาย" ไม่ได้ผลสำหรับฉัน อย่างไรก็ตามขอขอบคุณอีกครั้งสำหรับความช่วยเหลือ
Prasad De Zoysa

62

หากคุณยกเลิกการเลือก "Build Active Architecture เท่านั้น" จะเป็นการสร้างสถาปัตยกรรมที่ถูกต้องทั้งหมด

อัปเดต : ไม่สามารถใช้งานได้อีกต่อไปตั้งแต่ Xcode 4 - ทำตามคำแนะนำของ Nick สำหรับ Xcode 4 และใหม่กว่า


11
คุณสามารถเพิ่มเวลาสร้างได้โดยตั้งค่าเป็น YES สำหรับ Debug builds และ No on Release builds
Billy Gray

59

ฉันมีปัญหานี้แม้หลังจากทำตามคำตอบที่ยอมรับแล้วและพบสิ่งต่อไปนี้ในการทำงาน:

ใน Info.plist ของคุณเพิ่มรายการสำหรับความสามารถของอุปกรณ์ที่ต้องการ นี่ควรเป็นอาร์เรย์และจะมีสองรายการ

  • รายการ 0: armv6
  • รายการ 1: armv7

มันจะมีลักษณะเช่นนี้:

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


วิธีนี้แก้ไขคำเตือนสถาปัตยกรรมอื่น ๆ ของฉัน แต่ฉันยังคงได้รับการเริ่มต้นและฉันยังมี "Build Active Architecture Only" ตั้งค่าเป็น "ไม่"
Dan F

แก้ไขสำหรับฉันเนื่องจากวิธีการแก้ปัญหาก่อนหน้านี้ใช้ไม่ได้ ด้วยเหตุผลบางอย่าง armv6 ไม่แสดงภายใต้การตั้งค่าสถาปัตยกรรมการสร้างของฉันอีกต่อไป: S
seeafish

พร้อมกับคำตอบของนิคข้างต้นแก้ไขให้ฉัน +1
Saurabh Wadhwa

คุณควรลบตัวเลือกนี้ใน xCode เวอร์ชั่นล่าสุดแล้วมันจะคอมไพล์ เมื่อคุณใส่ทั้งสองอย่างมันจะต้องใช้การตรวจสอบทั้งสองอย่างในอุปกรณ์ของคุณซึ่งเป็นไปไม่ได้ในทางปฏิบัติ
Artem

สำหรับการสร้างด้วย XCode 4.5+ คุณจะต้องวาง armv6 จากความสามารถของอุปกรณ์ที่ต้องการ
Pulkit Goyal

26

นอกจากคำตอบของ Nick เกี่ยวกับ Xcode 4.2 คุณอาจต้องตรวจสอบไฟล์ info.plist ของคุณ ดูเหมือนว่าโครงการใหม่เริ่มต้นใน Xcode 4.2 โดยค่าเริ่มต้นระบุ 'armv7' ใน 'ความสามารถของอุปกรณ์ที่จำเป็น' คุณจะต้องลบสิ่งนี้หากต้องการสนับสนุนอุปกรณ์ที่ใช้ armv6 (เช่น iPhone 3G)

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

ลบ armv7 จาก 'ความสามารถของอุปกรณ์ที่จำเป็น' ใน yourProjectName-Info.plist


21

การอัปเดต iOS 6

การเปลี่ยนแปลงใน Xcode 4.5.x สำหรับ ios 6

  1. Xcode 4.5.x (และใหม่กว่า) ไม่รองรับการสร้าง armv6 ไบนารี
  2. ขณะนี้มีการสนับสนุน iPhone 5 / armv7s
  3. เป้าหมายการปรับใช้ขั้นต่ำที่รองรับด้วย Xcode 4.5.x หรือใหม่กว่าคือ iOS 4.3

6

ฉันมีปัญหานี้เช่นกัน ฉันเพิ่งตั้งค่าเป้าหมายการปรับใช้เป็น 4.3 และเหลือเฉพาะสถาปัตยกรรม armv7 และทำงานได้ ณ จุดเกือบทุกคนมี 5 ดังนั้น 4.3 เป็นเรื่องปกติ


3

สำหรับฉันมันไม่ทำงานกับทุกคำตอบ แต่ฉันลองใช้เป้าหมาย> สถาปัตยกรรม> ตรวจแก้จุดบกพร่องและเพิ่มแถวใหม่ด้วยปุ่มบวกและพิมพ์ 'armv6' (ไม่ออก ') จากนั้นคลิกเสร็จสิ้น

และสุดท้ายคือ CMD + B จากนั้นคลิกขวาที่ PrjectName.app (ในโฟลเดอร์ผลิตภัณฑ์)> เปิดใน Finder> บีบอัด "PROJECT_NAME.APP" (ใน Debug-iphoneos)> อัปโหลดไปยัง AppStore

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

มันเป็นการตั้งค่าหน้าจอของฉัน ป้อนคำอธิบายรูปภาพที่นี่

หากคุณมีโครงการโปรดกำหนดค่าทั้งหมด หวังว่าความช่วยเหลือของคุณ


1
ฉันต้องติดตั้ง armv6 บน Release Architecture ก่อนที่จะทำงานได้
mph

3

หลังจากลองผสมคำตอบเหล่านี้ในที่สุดฉันก็สะดุดจนทำให้มันใช้งานได้ ฉันโกรธมากที่ Apple ตอนนี้ อีกชั่วโมงหนึ่งพวกเขาก็ทำให้ฉันเสียเปล่า นี่คือการกำหนดค่าของฉัน

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


2

ฉันลองคำตอบทั้งหมดข้างต้นแล้วไม่มีใครแก้ไขคำถามของฉัน ดังนั้นฉันจึงสร้างโครงการใหม่และสร้างการตั้งค่าต่างกันทีละรายการ "ไฟล์สิทธิ์สำรอง" เท่านั้นจะแตกต่างกัน การสร้างโปรเจ็กต์ล้มเหลวมีค่า armv7 ลบออกจากนั้นล้าง -> build-> ที่เก็บถาวร ประสบความสำเร็จ! หวังว่าจะสามารถตอบคำถามของคุณ


2

ว้าวฉันอัปเดต / ส่งแอพประมาณ 6 เดือน ทุกครั้งที่ฉันทำสิ่งนี้ฉันต้องเรียนรู้วิธี "ใหม่" ที่จะทำ ...

ปัญหาเดียวกับที่อธิบายข้างต้นเมื่อใช้ iOS 5.1 และ Xcode 4.3.2

ขอบคุณสำหรับการโพสต์! ฉันใช้เวลาสักครู่ในการอัปเดตการตั้งค่าโครงการทั้งหมดเป็น armv6, armv7 แต่ไม่มีความสุข เมื่อฉันตั้ง "สร้างสถาปัตยกรรมที่ใช้งานเท่านั้น" เป็นไม่ฉันได้รับข้อผิดพลาดในการสร้างเกี่ยวกับการวางวัตถุทั้งสองไว้ในไดเรกทอรีเดียวกัน

โชคดีที่ฉันสังเกตว่าพวกคุณกำลังแก้ไขการตั้งค่าการสร้างเป้าหมายแทน นี่คือสิ่งที่ใช้งานได้ในที่สุด (armv6, armv7 และการตั้งค่า "สร้างสถาปัตยกรรมที่ใช้งานเท่านั้น" เป็นไม่ใช่ภายใต้การตั้งค่าการสร้างเป้าหมาย) ตามข้อจำกัดความรับผิดชอบฉันได้ตั้งค่าสถาปัตยกรรมทั้งหมดเป็น armv6, armv7 ในการตั้งค่าโครงการด้วย

อย่างไรก็ตามขอขอบคุณสำหรับความช่วยเหลือเบรนต์


2

ฉันต้องแน่ใจว่าได้เปลี่ยนการตั้งค่าเหล่านี้ทั้งในการตั้งค่าเป้าหมายและโครงการบน xCode 4.3.2 หลังจากทำเช่นนั้นและตั้งค่าให้สร้างสำหรับทั้ง armv6 และ armv7 ทุกที่ที่ฉันสามารถส่งแอปของฉันได้

สำหรับการวัดที่ปลอดภัยฉันยังออกจาก xCode ระหว่างทำการเปลี่ยนแปลงและทำการล้างสร้างสร้างรอบการเก็บถาวร


0

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

  1. อัปเกรด SDK ฐานเป็นรุ่นล่าสุด (ในกรณีของฉัน iOS 5)
  2. รีสตาร์ท xCode
  3. ทำความสะอาด & ​​สร้าง
  4. มันได้ผล!

ฉันเดาว่ามันเป็นศัพท์แสงเกี่ยวกับ arm6, arm7 เพราะดูเหมือนว่าโครงการของฉันใช้ได้ทั้งสองอย่างน้อยการตั้งค่าดูเหมือนจะพูดอย่างนั้น) การเดาของฉันคือนี่เป็นวิธีเหยียดหยามหลอกลวงเราด้วยเทคนิคซึ่งเราไม่ได้ ไม่เข้าใจดังนั้นเราจึงเลือกตัวเลือกที่ง่ายและกำหนดเป้าหมาย iOS ล่าสุด (ดีสำหรับ Apple ที่มีคนทันสมัยมากขึ้น) ....


0

นี่คือเอกสารของ Apple:

ถามตอบด้านเทคนิค QA1760

มันบอกว่ามีสองสิ่งที่คุณต้องทำให้ถูกต้อง:

  1. เพิ่มarmv6ในการตั้งค่าการสร้างสถาปัตยกรรม
  2. Noชุดสร้างสถาปัตยกรรมที่ใช้งานเพียงเพื่อที่จะ

หากสิ่งนี้ยังคงไม่ช่วยคุณตรวจสอบอีกครั้งว่าคุณกำลังเปลี่ยนการตั้งค่าการสร้างสถาปัตยกรรมสำหรับการกำหนดค่าการสร้างที่ถูกต้องจริง ๆ ฉันเสียเวลาไปครึ่งชั่วโมงกับการเล่นที่ผิดและสงสัยว่าทำไมมันไม่ทำงาน ...

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


0

บันทึก; ฉันต้องทำตามขั้นตอนเหล่านี้สำหรับทั้งโครงการพื้นฐานและไฟล์ PhoneGap .xcodeproj ในแอปพลิเคชันของฉัน

ใช่ฉันฝัง PhoneGap; พวกเขาอัปเดตเป็นบ่อยและฉันมีเวลาน้อยกว่าสองเดือนที่จะทราบว่ามีการตัดค่าคุณสมบัติ


0

ลองเปลี่ยนเป้าหมายการปรับใช้ของคุณเป็นอะไรที่สูงกว่าโปรเซสเซอร์ armv6 การตั้งค่าสำหรับ xCode อ้างอิงระดับระบบปฏิบัติการตัวอย่างเช่น iOS เวอร์ชั่น # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) คุณสามารถตั้งค่านี้ในแท็บการตั้งค่าการสร้างหรือแท็บสรุป เริ่มที่ด้านบนซ้ายของหน้าต่างใน Project Navigator พร้อมไฟล์ทั้งหมดที่อยู่ในรายการ คลิกที่ด้านบนสุดที่มีไอคอนสีน้ำเงิน

(ii) หากคุณกำลังวางแผนที่จะใช้วงจรบรรทัด shader ที่สามารถตั้งโปรแกรมได้ซึ่งเข้าถึงและควบคุมผ่าน openGL ES 2.0 API คุณควรตั้งค่า "Deployment Version" ของคุณเป็นประมาณ 4.3 ซึ่งฉันเชื่อว่ามีเฉพาะในอุปกรณ์เช่น 3GS หรือใหม่กว่า xCode รายงานว่าต้องใช้รหัส armv7 สำหรับ iOS 4.2.5 ขึ้นไป ฉันเชื่อว่าโปรเซสเซอร์นี้เริ่มต้นด้วย 3GS อีกครั้ง * iOS 4.3 ดูเหมือนจะเป็นตัวเลือกสำหรับฉันในตอนนี้

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices


0

หาก xCode บ่นเกี่ยวกับ armv7 ตรวจสอบให้แน่ใจว่าคุณได้ยกเลิกการเชื่อมต่ออุปกรณ์ใด ๆ (โดยเฉพาะ iPhone 5 !!) แล้วลองอีกครั้ง ใช้เวลาหลายชั่วโมงในการหาข้อมูลชิ้นเล็ก ๆ


0

การใช้ Xcode 4.2 บน Snow Leopard ฉันใช้การตั้งค่าต่อไปนี้เพื่อสร้างแอพที่ใช้งานได้ทั้ง armv6 (Iphone 3G และต่ำกว่า) และ armv7 (ทุกอย่างที่ใหม่กว่า 3G รวมถึง 3GS)

สถาปัตยกรรม: armv6 และ armv7 (ลบ $ (ARCHS_STANDARD_32_BIT))
สร้างสถาปัตยกรรมที่ใช้งานเท่านั้น: ไม่มี
ความสามารถของอุปกรณ์ที่จำเป็น: armv6

อย่าวาง armv7 ไว้ในความสามารถของอุปกรณ์ที่จำเป็นหากคุณต้องการให้แอปทำงานบน 3G และต่ำกว่าเช่นกัน


1
มันเป็นสิ่งเดียวที่เหมาะกับฉัน ทดสอบกับ iphone4, iphone3g, ipad1, ipad2 อ่านว่าฉันต้องใส่ armv6 AND armv7 ในความสามารถของอุปกรณ์ที่ต้องการ แต่ทันทีที่ฉันใส่ armv7 แอปจะไม่อัปโหลด / เรียกใช้บน
iphone3g

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