การส่งแอป iOS: ขาดการสนับสนุน 64 บิต


91

ฉันส่งแอปเมื่อวานนี้เพื่อตรวจสอบโดยไม่มีปัญหา จากนั้นฉันก็รู้ว่าฉันมีการแก้ไขเพียงเล็กน้อยที่ต้องทำ (เปลี่ยนระดับการซูมสูงสุดของแผนที่จาก 19 เป็น 18 ไม่มีอะไรอื่น) ดังนั้นฉันจึงลบไบนารีออกจาก iTunes Connect และพยายามส่งใหม่

ตอนนี้ฉันมีคำเตือนนี้:

Warning_xcode

ฉันไม่เข้าใจว่าทำไมสถาปัตยกรรมของฉันคือ:

  • สถาปัตยกรรม: armv7
  • สถาปัตยกรรมที่ถูกต้อง: armv6, armv7, armv7s, arm64

แอปทำงานได้ดีในโปรแกรมจำลอง หากฉันพยายามใช้สถาปัตยกรรมมาตรฐาน (armv7, arm64) ตามที่แนะนำในคำเตือนแอปจะไม่สร้างและฉันได้รับ:

  • สัญลักษณ์ที่ไม่ได้กำหนดสำหรับสถาปัตยกรรม x86_64
  • ld: ไม่พบสัญลักษณ์สำหรับสถาปัตยกรรม x86_64

ฉันใช้ lib route-me และตั้งค่าสถาปัตยกรรมเดียวกัน


เราก็มีปัญหานี้เช่นกัน :(
Nazik

ตั้งแต่เมื่อวานนี้เท่านั้น?
Tim Autin

1) ลองล้าง DerivedData สำหรับ Xcode หลังจากที่คุณเปลี่ยนแปลง 2) คุณอาจใช้ api ภายนอก, sdk, เฟรมเวิร์ก ฯลฯ รุ่นเก่ากว่า
TonyMkenu

@ ทิมคุณจัดการเพื่อแก้ไขปัญหานี้หรือไม่? คุณช่วยโพสต์วิธีแก้ปัญหานั้นได้ไหม
user2056563

สวัสดีขออภัยฉันไม่พบวิธีแก้ปัญหาและฉันไม่ได้ทำงานในโครงการนี้อีกต่อไป ตอนนี้เป็นเพียงคำเตือนฉันสามารถส่งแอปได้แล้ว
Tim Autin

คำตอบ:


106

ใช้ " Standard architectures" ดังนี้:

  • สถาปัตยกรรม: "สถาปัตยกรรมมาตรฐาน" arm7 , arm64
  • สถาปัตยกรรมที่ถูกต้อง: " arm64 ", armv7 ...
  • สร้างสถาปัตยกรรมที่ใช้งานอยู่เท่านั้น - ไม่ (โดยเฉพาะ ... หากอุปกรณ์ที่เชื่อมต่อของคุณไม่รองรับ arm64)

แบบนี้:

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

  • นอกจากนี้การถอดปลั๊กไอโฟนและไอแพดออกจากเครื่อง Mac เป็นที่รู้กันว่าช่วยได้โดยเฉพาะอย่างยิ่งหากเป็นเวอร์ชัน 32 บิต

2
ขอบคุณสำหรับคำตอบ แต่ตามที่ระบุไว้ในคำถามของฉันฉันได้ลองแล้วและโครงการไม่ได้รวบรวมการตั้งค่านี้: /
Tim Autin

3
@ ทิมใช่ฉันด้วยarmv7 and arm64ใน Architechtures ถึงกระนั้นคำเตือนการสนับสนุน 64 บิตที่ขาดหายไปเกิดขึ้นขณะตรวจสอบความถูกต้องของแอปสำหรับการยอม
Nazik

@NAZIK คุณมี arm64 ทั้งสองสาย (สถาปัตยกรรมและสถาปัตยกรรมที่ถูกต้อง) หรือไม่? ฉันมีข้อผิดพลาดเดียวกันและนี่คือวิธีแก้ปัญหา
TonyMkenu

@Tim พยายามล้าง DerivedData ของคุณและตรวจสอบเฟรมเวิร์กภายนอกหรือ SDK ล่าสุดของคุณว่ามีการรองรับ 64 บิตหรือไม่
TonyMkenu

3
ตรวจสอบให้แน่ใจว่าอุปกรณ์ของคุณไม่ได้เชื่อมต่อเมื่อเก็บไฟล์บิลด์สุดท้าย ดู @powertoold คำตอบร้อง ( stackoverflow.com/a/26848865/1715004 )
Filipe Borges

68

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

สาเหตุที่คำเตือนนี้ปรากฏขึ้นเป็นเพราะ DEVICE ที่คุณเชื่อมต่ออาจไม่รองรับ arm64


4
ถอดหมวกออก! : D คุณประหยัดเวลาของฉัน
Vaibhav Limbani

1
ช่วยใหญ่ !! ช่วยฉันประหยัดเวลาได้มากในเรื่องนี้ เคล็ดลับดีๆในการอัปเกรดแอปเก่า
harry

ผมเชื่อว่าคุณสามารถเก็บอุปกรณ์ที่ไม่ใช่ 64bit ของคุณเชื่อมต่อถ้าคุณเปลี่ยนการสร้างการตั้งค่าไปBuild Active Architecture Only Noสิ่งนี้จะบังคับให้ xcode สร้างไบนารี 64 บิตไม่ว่าจะเชื่อมต่อกับอุปกรณ์ใดก็ตาม
jxmallett

3
นอกจากนี้ในการ @jxmallett 's คำตอบให้แน่ใจว่าการกำหนดค่าโครงการของคุณ Archive ตั้งที่จะปล่อยในที่มีการตั้งค่าBuild Active Architecture Set Archive SchemeNo
KarenAnne

1
ฉันต้องถอดปลั๊กอุปกรณ์เปลี่ยนไปใช้โปรแกรมจำลองจากนั้นเปลี่ยนกลับเป็น "อุปกรณ์ iOS" เพื่อให้สิ่งนี้ใช้งานได้
nwkeeley

37

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

ฉันทำอะไรไป:

  • ฉันไปที่การกำหนดค่าโครงการ (เทียบกับเป้าหมาย)
  • พิมพ์ "arm64" ในสถาปัตยกรรมที่ถูกต้อง (จะแสดงในเป้าหมายและสคีมาโดยอัตโนมัติ

หลังจากทำความสะอาด / สร้างแล้วฉันยังได้รับคำเตือนเกี่ยวกับการแปลง float เป็น CGFloat และอื่น ๆ ที่ไม่เหมาะสมดังนั้นการตั้งค่าจึงมีผลอย่างชัดเจน

คำเตือนการตรวจสอบก็หายไปด้วย!

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


1
> ไม่ปรากฏใน "สถาปัตยกรรมที่ถูกต้อง" แม้ว่าจะแสดงเป็นมาตรฐานก็ตามนี่คือประเด็นสำหรับฉัน ขอบคุณ!
Romain

1
ในกรณีที่ช่วยคนอื่นได้ฉันต้องเปลี่ยนทั้ง Project และ Target เพื่อไปทำงาน
djburdick

@djburdick ขอบคุณ นั่นใช้ได้ผลสำหรับฉันเมื่อไม่มีอะไรทำ
Dave Chambers

27

ถอดปลั๊กอุปกรณ์จริงของคุณออกจาก Mac ใน XCode บนรายการอุปกรณ์ให้เลือกอุปกรณ์ iOS และสร้างที่เก็บถาวรอีกครั้ง มันได้ผลสำหรับฉัน


5

วันนี้ฉันแก้ปัญหานั้นด้วยขั้นตอนต่อไปนี้:

การตั้งค่าอาคาร:

สถาปัตยกรรม:สถาปัตยกรรมมาตรฐาน (arm7, arm64) - $ (ARCH_STANDARD)

สถาปัตยกรรมที่ถูกต้อง: armv7 armv7s arm64

  1. ทำความสะอาดและสร้างแอพของคุณด้วย iPhone ที่เชื่อมต่อ
  2. ยกเลิกการเชื่อมต่อ iPhone ของคุณและตรวจสอบแถบด้านบนหากอยู่ใน "อุปกรณ์ iOS"
  3. เก็บถาวร
  4. ตรวจสอบและส่ง

@ Timuçin. ขอโทษที่ฉันตอบช้าคุณพูดถูกคือ: armv7 armv7s arm64
Leonel Folmer

3

เพียงสร้างโครงการใหม่โดยใช้ xCode เวอร์ชันล่าสุดและค้นหาการตั้งค่าการสร้าง โครงการใหม่ที่สร้างขึ้นโดยใช้เวอร์ชันล่าสุดมีการสนับสนุน 64 โดยค่าเริ่มต้น

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


มีคนน้อยกว่า 2% ที่ใช้ iOS 6 หรือน้อยกว่า developer.apple.com/support/appstore
Kirit Vaghela

2

โอเคนี่มันบ้า ฉันพยายามทุกคำตอบ แต่มันใช้ได้เฉพาะเมื่อฉันวางไว้arm64ก่อนarmv7และarmv7sในสถาปัตยกรรมที่ถูกต้อง

PS: xcode version : 7.2


1
ได้. หลังจากเชื่อมต่ออุปกรณ์แล้วเท่านั้นบันทึกข้อผิดพลาดที่แท้จริงแสดงขึ้น จากนั้นโค้ดบางบรรทัดที่เลิกใช้แล้วและจำเป็นต้องแก้ไข (สีแดง) และปัญหาบางอย่างกับ RSA lib ก็ปรากฏขึ้น
maxweber

1

ฉันแก้ไขปัญหาโดยการเปลี่ยน

สถาปัตยกรรม: arm7, arm64

สถาปัตยกรรมที่ถูกต้อง: arm7, arm64

สร้างสถาปัตยกรรมที่ใช้งานอยู่เท่านั้น: ใช่


1

ฉันส่งสำเร็จโดย config เป็นรูปภาพ: ป้อนคำอธิบายภาพที่นี่

(เก็บถาวรด้วยอุปกรณ์จริง)


1
ควรตั้งค่าโหมดปลดเป็นไม่ใช่
ZYiOS

1

กำจัดทุกคำเตือน ผ่านทุกอย่างซ้ำแล้วซ้ำเล่า. พบคำตอบคำเดียวที่นี่ด้านบน

"Build Active Architecture Only - ไม่ (โดยเฉพาะ ... หากอุปกรณ์ที่เชื่อมต่อของคุณไม่รองรับ arm64)"

iPad ของฉันไม่ใช่ 64 บิต ใส่ NO สำหรับ Build Active Architecture และการส่งของฉันได้ผล!


0

เปลี่ยนเป้าหมายการพัฒนา iOS ของคุณเป็นอย่างน้อย 5.1.1 หรือลบการตั้งค่าสถาปัตยกรรมมาตรฐานและนำไปใช้ใหม่ คุณอาจเคยเห็นคำเตือนว่า arm64 เข้ากันไม่ได้กับบิลด์เป้าหมายของคุณ ในหน้าภาพรวมให้ตรวจสอบทั้งการสร้างและการตั้งค่าเป้าหมายการปรับใช้เป้าหมาย ในกรณีของฉันเป้าหมายคือ 6.0 แต่โครงการคือ 5.0

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

สลับระหว่างโครงการ / เป้าหมายในหน้าภาพรวมที่มุมบนซ้ายของกล่อง


คุณหมายถึง 5.1.1 จริงเหรอ? 5.1 ล่าสุดไม่เพียงพอ?
Dirk

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

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