“ ไฟล์สัญลักษณ์มากเกินไป” หลังจากส่งแอพของฉันสำเร็จ


201

ฉันดาวน์โหลด Xcode 6 GM และส่งแอพ Swift สองแอปไปยัง app store วันนี้ ทั้งสองผ่านการตรวจสอบก่อนการอัปโหลดทั้งหมดและสิ่งอื่น ๆ ที่พวกเขาต้องผ่านและถูกส่งเรียบร้อยแล้ว แต่จากนั้นฉันได้รับอีเมลสองฉบับจาก Apple ... หนึ่งรายการสำหรับแต่ละโปรแกรมและพวกเขาทั้งสองพูดว่า:

เรียนผู้พัฒนา

เราได้ค้นพบปัญหาอย่างน้อยหนึ่งปัญหาเกี่ยวกับการจัดส่งล่าสุดของคุณสำหรับ "xxxxxxxx" (ลบชื่อแอปของฉันแล้ว) การจัดส่งของคุณสำเร็จ แต่คุณอาจต้องการแก้ไขปัญหาต่อไปนี้ในการจัดส่งครั้งถัดไป:

ไฟล์สัญลักษณ์มากเกินไป - สัญลักษณ์เหล่านี้ไม่มีส่วนย่อยใด ๆ ในไบนารี [1431D977-72BC-308F-AB71-71529F25400B.symbols, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols ใด ๆ , 678BF06F-0C3D-3A09-BFBF-699C7079FECD.symbols, 90907DDB-04A4F4A-AFA, ABF-0C12333F4F-6C733F4A-7C4F4A-7B4A4F4A-93B7F4F4A-6704F4A-93 สีฟ้า, 93B79949-5757-374F4A4F4A-7A4F4A-7B4A-7B4F4A -4422-32B8-8C40-CF9B45A2CCC6.symbols, B0CC9F7D-C542-3E18-EE8-DSA-CFD-CFA-CFA, BF6A4C3B-6FA-C6B-6FA-C6F-6F-6F-AAC-CF-6B-6F-6F-6B-6B-6C-6F -3845-BAD5-F6E51045D396.symbols, D4967AA3-8FB0-3712-B5-FF7-F7E5F5-F7F5-F6FF-D813B314-AD37-31D4-B675-4420524F3-F6E-F6E-F6E-F4E6F3-F6E5F3-D4-F6E5F3-D4-F6E4-B4 -8F7D-C49A36CD5C65.symbols]

หลังจากที่คุณแก้ไขปัญหาแล้วคุณสามารถใช้ Xcode หรือ Application Loader เพื่ออัปโหลดไบนารีใหม่ไปยัง iTunes Connect

ความนับถือ,

ทีม App Store

ฉันจะเดาว่าไม่มีอะไรเกี่ยวข้องกับฉันหรือแอพของฉัน ... และมันก็แค่การส่งแอป Swift หนึ่งวัน แอปทั้งสองยังคงอยู่ในโหมด "รอการอนุมัติ" แน่นอนฉันไม่สามารถคิดอะไรที่ฉันสามารถเปลี่ยนเพื่อให้สิ่งที่พวกเขาพูดหายไป! มีใครอีกคนที่ส่งแอพ Swift และรับการตอบกลับนั้นหรือไม่ คิดว่าฉันควรเพิกเฉยและรอดูว่าเกิดอะไรขึ้น


ฉันพูดอย่างนั้นและInvalid Swift Support. มีความคิดอะไรที่ทำให้ฉันได้รับสิ่งนี้? ฉันใช้ Xcode ล่าสุด
Dehli

ปัญหาเดียวกันที่นี่และแอพของฉันไม่สามารถส่งเพื่อตรวจทานเนื่องจากปัญหานี้มีใครอีกบ้างที่แก้ไขได้?
yudun1989

1
ปัญหาเดียวกันที่นี่ ส่งเพื่อตรวจสอบแล้ว .. มาดูกันว่าเกิดอะไรขึ้น :)
dandoen

แอป Swift ทั้งสองของฉันเพิ่งได้รับการอนุมัติให้ใช้กับ App Store ... ดังนั้นฉันเดาว่าฉันกังวลเรื่องอะไร! วุ้ย ... :)
จิมบาร์เบอร์

คำตอบ:


128

สิ่งนี้จะเกิดขึ้นหากคุณกำลังรวมข้อมูลการดีบักของไลบรารีของคุณด้วยไฟล์เก็บถาวรโครงการ แต่ไม่รวมไบนารี

  1. เปิดหน้าต่าง Organizer ใน Xcode
  2. คลิกขวาที่ไฟล์เก็บถาวรที่มีปัญหานี้แล้วเลือก "แสดงใน Finder"
  3. คลิกขวาที่ไฟล์เก็บถาวรและเลือก "แสดงเนื้อหาแพ็คเกจ"
  4. ในโฟลเดอร์ "dSYMs" คุณจะเห็นหลายไฟล์ หากคุณรันdwarfdumpคำสั่ง consoleบนไฟล์เหล่านี้คุณจะได้รับรายการของสตริง UUID:

    dwarfdump -u MyFile.dSYM

ฉันแน่ใจว่าคุณจะพบ UUID ที่ตรงกันจากอีเมลของ Apple

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

ตัวอย่างเช่นในภาพหน้าจอด้านล่างคุณจะพบกับกรอบลายทาง iOS

ภาพหน้าจอการตั้งค่าโครงการ Xcode


13
dwarfdump -u *ในโฟลเดอร์เพื่อดู UUID ทั้งหมด
Jon

@ จอน ooooh ทำไมฉันเห็นหลังจากฉันทำทีละคน? :) ต่อไปขอบคุณ!
Serj Rubens

6
การลบไฟล์ dSYM หมายถึงการขัดข้องใด ๆ ที่เกี่ยวข้องกับบุคคลที่สามจะไม่ถูกใช้เป็นสัญลักษณ์อีกต่อไปใน Crashlytics (หรือเครื่องมือรายงานข้อขัดข้องอื่น ๆ )
Eugenio

อย่างไรก็ตามหากคุณใช้ firebase \ fabric ควรใช้ไฟล์ dsym เพื่อดูบันทึกข้อผิดพลาดบนไซต์ พวกเขายังคงทำงานกับการเปลี่ยนแปลงนี้หรือไม่?
Mattia Lancieri

91

หากคุณพบปัญหานี้ขณะใช้ CocoaPods ให้เพิ่มสิ่งนี้ใน Podfile ของคุณ:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
        end
    end
end

มันจะตั้งค่ารูปแบบข้อมูลการดีบักเป็น DWARF สำหรับเป้าหมาย Pod ของคุณทั้งหมดเท่านั้น (ไม่ใช่เป้าหมายหลักของแอป)


@ wzbozon ใช่ฉันขอเพียงแค่ตรวจสอบอีกครั้ง เพราะหลังจากที่ฉันทำมัน Crashlyticts หยุดทำงาน ขอบคุณ!
Cesar Rodriguez

Crashlytics ควรทำงานต่อไปสำหรับแอปของคุณเนื่องจากสคริปต์นี้เปลี่ยนการตั้งค่าการสร้างสำหรับพ็อดเท่านั้น
Stan

1
ฉันเห็นด้วย. แต่คุณจะไม่เห็นรายงานสำหรับพ็อด ท่านสามารถตั้งค่า DWARF ด้วยไฟล์ dSYM สำหรับพ็อดบางตัวเท่านั้นตัวอย่างเช่นฝักการพัฒนา
Denis Kutlubaev

@Stan คุณกำลังบอกว่า Crashlytics จะทำงานต่อไปหรือไม่ Cesar Rodriguez ดูเหมือนจะบอกว่ามันไม่ทำงาน
ไอโรว

8
วิธีนี้แก้ไขได้สำหรับฉัน อย่าลืมpod install
firebear

18

หากคุณใช้ CocoaPods และแอปของคุณถูกตั้งค่าให้ใช้ arm64 เท่านั้น (เช่นมี arm64 เท่านั้นใน info.plist ของโครงการของคุณ)

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>

จากนั้นคุณสามารถลองเพิ่มสคริปต์ต่อไปนี้ใน Podfile ของคุณเพื่อแก้ไขปัญหานี้

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['ARCHS'] = 'arm64'
    end
  end
end

และ

กำหนดเป้าหมายโครงการทั้งหมดของคุณ (ไม่ใช่เป้าหมายในพ็อด) เป็น arm64 เท่านั้น

การตั้งค่าโครงการ Xcode

CocoaPods Github อ้างอิงปัญหา


สันนิษฐานว่าคุณควรใส่ arm64e ด้วยตอนนี้ใช่ไหม
ชิม

ฉันจะใส่ arm64s สำหรับเครื่องจำลอง มันจะถูกลบออกโดยอัตโนมัติเพื่อการสร้างรีลีส
cybergen

13

ฉันมีปัญหานี้เนื่องจากโครงการมีสถาปัตยกรรมแขนที่ถูกต้อง64ซึ่งเป้าหมาย CocoaPods มีสถาปัตยกรรมแขนที่ถูกต้อง64, armv7 และ armv7sarmv7s

ในการตรวจสอบว่าเป้าหมายใดมีสถาปัตยกรรมที่ถูกต้องให้ทำตามขั้นตอนต่อไปนี้

  1. ใน Xcode -> หน้าต่าง -> ออแกไนเซอร์
  2. เลือกที่เก็บถาวรและเปิดเผยใน Finder
  3. บนไฟล์. xcarchiveแสดงเนื้อหาแพ็กเกจ
  4. เปิดเทอร์มินัลและกำหนดพา ธ ของโฟลเดอร์dSYMs

  5. ป้อนคำสั่งdwarfdump --uuid *และมันจะแสดงรายการของ UUIDs ด้วยสถาปัตยกรรมที่ถูกต้อง

UUID จะตรงกับอีเมลเตือนของ Apple

เป้าหมายหลักของโครงการและฝักโกโก้ควรมีสถาปัตยกรรมที่ถูกต้องเหมือนกัน โดยการทำเช่นนี้มันจะแก้ปัญหา


ฉันคิดว่ามันอธิบายสิ่งที่ดีที่สุดว่าเกิดอะไรขึ้น ฉันมีคำเตือนเหล่านี้เฉพาะเกี่ยวกับห้องสมุดที่มีสถาปัตยกรรม armv7 เพราะโครงการของฉันถูกสร้างขึ้นสำหรับ arm64 เท่านั้น คำถามยังคงอยู่ถ้าฉันควรเพิ่ม armv7 ในโครงการหรือลบออกจาก Pods
Ariel Bogdziewicz

6

ทำงานให้ฉันด้วยการเปิดใช้งาน bitcode มันเคยเป็นมาก่อน

เปิดใช้งาน Bitcode - ใช่

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


1

ข้างต้นช่วยแก้ไขปัญหา แต่ไม่สามารถแก้ไขได้ เรามีโครงการที่ iOS 12 แต่พ็อด 10 - นำไปสู่ไฟล์ armv7 จำนวนมาก การอัปเดตพ็อดเป็น iOS 12 แก้ไขได้ทันที


0

มีปัญหาเดียวกันแก้ไขโดยมี "ทั่วไป" => "ข้อมูลการปรับใช้" => "เป้าหมายการปรับใช้" สำหรับเป้าหมายทั้งหมดของฉัน


0

ใน Xcode ให้ดูที่การตั้งค่าการสร้างสำหรับ“ สัญลักษณ์แก้จุดบกพร่องในระหว่างการคัดลอก” (COPY_PHASE_STRIP) เมื่อเปิดใช้งานสัญลักษณ์การดีบักจะถูกละไว้จาก. app ของคุณและวางไว้ในไฟล์. dSYM มิฉะนั้น. app ของคุณมีสัญลักษณ์เหล่านี้ (โดยค่าเริ่มต้นสัญลักษณ์การดีบั๊กจะถูกถอดออกจากบิลด์ที่วางจำหน่ายเนื่องจากเหตุผลที่ทำให้สับสนคุณอาจไม่ควรเปลี่ยนการตั้งค่านี้สำหรับการกำหนดค่าการปล่อย)

ตรวจสอบให้แน่ใจว่าคุณเลือกตัวเลือกนี้ในโครงการ การตั้งค่าการสร้าง

https://possiblemobile.com/2015/03/symbolicating-your-ios-crash-reports/


0

ปัญหาสำหรับฉันคือบรรทัดในbuild.xcconfigไฟล์ของฉัน ฉันต้องลบ

IPHONEOS_DEPLOYMENT_TARGET = 11.0

ซึ่งกำลังตั้งค่าโครงการให้สร้างสำหรับ arm64 เท่านั้น (ไม่ใช่ arm7) ทำตามขั้นตอนโดย@miOSฉันจะเห็นว่าโครงการพ็อดสร้างขึ้นสำหรับทั้งสอง


1
stackoverflow.com/a/49063850/3293172 iOS 11 ลดการสนับสนุน armv7 และ armv7s ดังนั้นจึงจำเป็นต้องใช้ arm64 เท่านั้นหากคุณมีเป้าหมายการปรับใช้> = iOS 11.0
Ariel Bogdziewicz

-3

สำหรับฉันทุกอย่างง่ายมาก ฉันมีปัญหาเดียวกันและไม่รู้ว่าต้องทำอะไรเป็นเวลาหนึ่งสัปดาห์

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

สกรีนช็อตของช่องทำเครื่องหมายและป๊อปอัพ:

สกรีนช็อตของช่องทำเครื่องหมายและป๊อปอัพ


ฉันหวังว่าคุณจะมีรายละเอียดมากขึ้น .... ฉันไม่รู้ว่าช่องทำเครื่องหมายหรือป๊อปอัปที่คุณกำลังพูดถึงอยู่ อาจเป็นภาพหน้าจอไหม
Louis Hong

gyazo.com/6d7bb2035979cb75253ba92a40e8d898ฉันคิดว่าฉันเห็นแล้วมันคืออันนี้
Louis Hong

6
ใช่ แต่จะตัดสัญลักษณ์ทั้งหมดออกจากแพ็คเกจดังนั้นคุณจะไม่ได้รับรายงานข้อผิดพลาดที่เป็นสัญลักษณ์ใช่หรือไม่ (พวกเขายังให้รายงานความผิดพลาดที่เป็นสัญลักษณ์ในแอพ App Store ตอนนี้ด้วย TestFlight หรือไม่)
Markus Rautopuro

31
นี่ไม่ใช่วิธีแก้ไขปัญหาที่ถูกต้อง นี่คือการหลีกเลี่ยงอาการไม่ได้แก้ไขปัญหา ดูคำตอบ Mikhails สำหรับคำอธิบายเกี่ยวกับวิธีการอัพโหลดสัญลักษณ์ที่คุณไม่ต้องการ คำตอบนี้ป้องกันการอัพโหลดสัญลักษณ์ใด ๆดังนั้นจึงเป็นการทำลายสัญลักษณ์ความผิดพลาดผ่าน iTunesConnect
JConway

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