เมื่อฉันเริ่มแอปด้วย XCode ฉันมีข้อขัดข้อง แต่ไม่มีข้อผิดพลาด
แอปกำลังหยุดอยู่ในชุดข้อความนี้
ฉันจะทำอย่างไรเพื่อขอข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้
คำตอบ:
หากคุณใช้เฟรมเวิร์กที่กำหนดเองคุณต้องวางไว้ในส่วน "ไบนารีฝังตัว" ที่อยู่ในโครงการ Xcode ใต้แท็บเป้าหมาย / ทั่วไป
สำหรับฉันเป็นเรื่องง่ายClean
และRebuild
แยกออก หวังว่าจะช่วยได้
การเพิ่มเฟรมเวิร์กไปยังรายการสินทรัพย์ไบนารีที่ฝังไว้แก้ไขสิ่งนี้ นี่คือลักษณะการตั้งค่าของเฟรมเวิร์กต่างประเทศในรูปแบบสุดท้ายใน Xcode GUI เป็น Embedded Framework (Xcode 9.2 โดยส่วนตัวแล้วฉันชอบภาพเศษขนมปังที่ดีกว่า ;-)):
Apple จงใจขัดข้องรันไทม์เพื่อบอกนักพัฒนาเกี่ยวกับปัญหาที่ว่าคุณไม่สามารถใช้เฟรมเวิร์กที่ไม่ใช่ของ Apple เป็นเพียงเฟรมเวิร์กที่เชื่อมโยงในการพัฒนา iOS ได้หรือไม่? มันจะดีกว่าถ้ามันเป็นข้อผิดพลาดในการสร้างฉันจะคิดว่า ... มีปุ่มที่บอกว่า "ย้าย!"
การใช้ Embedded Binaries ช่วยให้ผู้ใช้ไม่ต้องเพิ่ม Framework โดยไม่ขึ้นกับแอพของคุณ (หรือคุณทำกับโปรแกรมติดตั้ง) ในกรณีของ iPhone (iOS) นั้นเป็นไปไม่ได้ แต่บน macOS เป็นไปได้ แต่จะยุ่งเหยิงอย่างรวดเร็ว
สำหรับผู้ใช้ปลายทางจะดีกว่ามากเพียงแค่ลากและวางแอพเพื่อติดตั้งบน macOS ซึ่งเป็นจุดที่การฝังจะกลายเป็นประโยชน์ การฝังยังช่วยหลีกเลี่ยง "ความขัดแย้งของ DLL" แบบคลาสสิกของการมีเวอร์ชันภายนอกของเฟรมเวิร์กให้จัดการ (พื้นที่ดิสก์ถูกเวลาของลูกค้ามีค่า)
คลี่คลายในที่สุด!
สิ่งที่ได้ผลสำหรับฉันคือการทำให้เฟรมเวิร์กเป็น "ทางเลือก" แทนที่จะเป็น "จำเป็น"
หวังว่าจะช่วยได้!
1) ดำเนินการต่อเพื่อดูว่าข้อความใด ๆ ปรากฏในดีบักเกอร์เช่นไม่พบ "MyFramework.framework" หากเป็นเช่นนั้นให้ทำตามการสนทนานี้: OS X Framework Library ไม่ได้โหลด: 'ไม่พบรูปภาพ' สำหรับฉันคำตอบนี้ใช้ได้: https://stackoverflow.com/a/44796734/4060763
2) ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มไบนารีของคุณผ่านส่วน "ฝังไบนารี"
3) ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานการลงนามของเฟรมเวิร์กในส่วนการสร้างเฟส
4) ตรวจสอบให้แน่ใจว่าเฟรมเวิร์กที่ฝังไม่ใช่ลิงก์สัญลักษณ์
5) คุณสามารถทำให้เฟรมเวิร์กที่เชื่อมโยงเป็นทางเลือกแทนที่จะจำเป็นในเฟส สิ่งนี้จะบอกให้ iOS ไม่มองหาเฟรมเวิร์กเหล่านี้ในระหว่างการเปิดตัว แต่อย่างไรก็ตามคุณต้องแก้ไขข้อผิดพลาดเพื่อใช้กรอบงานเหล่านั้น!
6) ตรวจสอบว่ารายการ info.plist ทั้งหมดนั้นดีหรือไม่ ในกรณีของฉันฉันใช้ไฟล์ mac info.plist สำหรับ iOS กำลังมองหาไฟล์ xib ซึ่งไม่มีอยู่ในโปรเจ็กต์ iOS
7) ทำความสะอาดและสร้างหลังจากการเปลี่ยนแปลงดังกล่าว สิ่งนี้จำเป็นเนื่องจาก xcode ไม่คัดลอก / เปลี่ยนแปลงไฟล์เหล่านี้หากมีอยู่แล้ว
8) ลบแอพออกจาก iPad แล้วติดตั้ง เหตุผลเดียวกับ 7.
Guard Malloc
เพื่อให้ถูกต้อง ใครรู้ว่าทำไมมันถึงแก้ไขข้อผิดพลาด?
หากต้องการตอบคำถามเดิม "ฉันจะทำอย่างไรเพื่อให้มีข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้" เธรดฟอรัมของ Apple นี้ให้คำแนะนำง่ายๆ: เพียงเรียกใช้แอปที่ขัดข้องนอก XCode (เช่นหยุดจาก XCode จากนั้นเรียกใช้ด้วยตนเองบน อุปกรณ์). ซึ่งจะสร้างบันทึกข้อขัดข้องที่มีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้น จากนั้นคุณสามารถตรวจสอบบันทึกนี้ได้จากเมนูหน้าต่าง XCode / อุปกรณ์และเครื่องจำลอง -> ดูบันทึกอุปกรณ์
ฉันเพิ่งพลาดการใช้ "ความเป็นส่วนตัว - คำอธิบายการใช้งานกล้อง" ใน info.plist
ไม่รู้ว่าข้อมูลนี้จะช่วยใครได้บ้างหรือเปล่า ...
ฉันประสบปัญหาเดียวกันกับ Xcode 11.3 และ macOS Catalina 10.15.2 แอปทำงานได้ดีของอุปกรณ์ แต่ไม่ได้อยู่ใน Simulator ดูเหมือนว่ามีปัญหากับ Simulator และวิธีแก้ปัญหาคือปิดการใช้งาน Thread Sanitizer
อ้างอิง: https://forums.developer.apple.com/message/397978#397978
หวังว่านี่จะช่วยได้
ฉันพบข้อผิดพลาดเกี่ยวกับลายเซ็นเดียวกัน (โครงการของฉันอยู่ใน Obj-C) และพบว่าฉันลืมเชื่อมโยงกับกรอบงานที่เหมาะสม ข้อความแสดงข้อผิดพลาดในบันทึกการดีบักที่นำไปสู่การค้นหาข้อผิดพลาดคือ:
dyld: ไม่พบสัญลักษณ์: _OBJC_CLASS _ $ _ SFSafariViewController
สำหรับข้อผิดพลาดเฉพาะของฉันการเพิ่ม SafariServices.framework ใน Targets -> Build Phases -> "Link Binary With Libraries" ช่วยแก้ปัญหาได้ แม้ว่าคุณอาจไม่มีข้อผิดพลาดและวิธีแก้ไขที่เฉพาะเจาะจงเหมือนกัน แต่การตรวจสอบบันทึกการแก้ปัญหาเพื่อหาเบาะแสก็มีประโยชน์
ฉันมีสถานการณ์นี้หลังจากอัปเดตXcode เป็น v10.2.1และรวดเร็วเป็น v5.0ถ้าคุณกำลังใช้คาร์เธจ + RxSwift RxRelay.framework
ใช้ คุณควรไปที่ไดเร็กทอรี / Carthage / Build ของคุณค้นหาเฟรมเวิร์กนั้นและลากไปยังโปรเจ็กต์ของคุณ อย่าลืมเพิ่มลงในcarthage copy-frameworks
สคริปต์ของคุณด้วย:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
แก้ไขแล้วขอบคุณ: https://stackoverflow.com/a/52550148/2493555
หากคุณใช้เฟรมเวิร์กที่เขียนด้วย Swift ในแอปพลิเคชัน Objective-C คุณต้องรวม Swift toolchain ไว้ในแอพที่ใช้เฟรมเวิร์ก
วิธีที่ฉันพบคือการสร้างไฟล์จำลองที่รวดเร็วในแอปเพื่อให้ XCode จดจำได้อย่างรวดเร็วและเพิ่มลงในโครงการอย่างเหมาะสม จากนั้นคุณสามารถลบไฟล์ดัมมี่
ฉันจะชอบถ้ามีคนรู้วิธีที่ดีกว่าในการเพิ่มอย่างรวดเร็วในโครงการวัตถุประสงค์ -c โดยไม่ต้องเพิ่มไฟล์ที่รวดเร็ว
หากคุณใช้ Carthage build framework หลังจากลาก framework ไปยัง proj ของคุณคุณควรเพิ่มไปที่ General / Embeded Binaries
ฉันพบวิธีที่ถูกต้องในการแก้ไข
ตรวจสอบให้แน่ใจว่าAppleWWDRCA.cer
ได้ตั้งค่าโหมดเริ่มต้นของระบบแล้วมันจะทำงาน:
ฉันประสบปัญหาเดียวกัน การตั้งค่า 'ฝังไลบรารีมาตรฐาน Swift เสมอ' เป็นใช่ในการตั้งค่าการสร้างของเป้าหมายของฉันได้ผลสำหรับฉัน
ฉันมีปัญหาที่คล้ายกันซึ่งได้รับการแก้ไขโดยไม่มีข้อกำหนดการอนุญาตใน plist (แปลกเหมือนกัน .. )
ฉันพยายามใช้ AVCaptureDevice และมันก็พังเมื่อเริ่มต้น (แอพของฉันน้อยมาก)
กำลังเพิ่ม -
Privacy - Camera Usage Description
เพื่อinfo.plist
แก้ไขให้ฉัน
นอกจากนี้หากคุณใช้เฟรมเวิร์กแบบกำหนดเองตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าประเภท Mach-O เป็นไลบรารีแบบคงที่ ฉันอ่านบางที่ IOS ไม่อนุญาต dylib อย่างไรก็ตามสิ่งนี้ใช้ได้ผลสำหรับฉัน
หากต้องการเพิ่มลงในรายการที่ยาวของข้อผิดพลาดนี้จะเกิดขึ้นเมื่อฉันใช้ XCode12.2 Beta 2 กับ Mac ที่ใช้ MacOS 10.15.5 โดยมีเป้าหมายการปรับใช้ที่ตั้งค่าเป็น MacOS 11.0 สถานการณ์นี้เกิดขึ้นเนื่องจากฉันกำลังลองใช้แอป Mac Catalyst Tutorialในการเพิ่ม SideBar การเปลี่ยนเป้าหมายเป็น MacOS 10.15.5 จะกำจัดข้อผิดพลาดและเปิดแอปอย่างถูกต้อง
ฉันได้แก้ไขข้อผิดพลาดในโครงการของฉันแล้ว
1. ตรวจสอบเธรดอื่น ๆ เมื่อเกิดข้อผิดพลาดฉันพบว่าข้อผิดพลาดของฉันเกี่ยวกับกล้อง
ฉันเพิ่งมีปัญหาเดียวกันและสาเหตุเกิดจากการที่ฉันเพิกถอนใบรับรองนักพัฒนาซอฟต์แวร์และสร้างใบรับรองใหม่ด้วย Xcode 10 หลังจากอัปเดต macOS Mojave ใหม่ (สำหรับบางรายการจะลบข้อมูลรับรองการเข้าสู่ระบบทั้งหมดและล้าสมัยไปแล้ว ใบรับรองพวงกุญแจ)
ดังนั้นสิ่งที่ฉันต้องทำคือลบแอพที่ติดตั้งออกจากอุปกรณ์ของฉันและเรียกใช้ผ่าน Xcode อีกครั้งเพื่อให้แอพนั้นติดตั้งโปรไฟล์การจัดสรรใหม่ที่ถูกต้องในอุปกรณ์ของฉัน :)
บางครั้งมันเกิดขึ้นเมื่อคุณใช้กรอบระบบที่สามารถเข้าถึงได้จาก iOS เวอร์ชันใหม่กว่าซึ่งเป็นเวอร์ชันเป้าหมายของคุณเท่านั้น อาจได้รับการแก้ไขโดยทำเครื่องหมายกรอบงานที่เชื่อมโยงนี้เป็นทางเลือก
ตัวอย่างเช่นโครงการที่กำหนดเป้าหมายบน iOS 11 และกำลังใช้คุณลักษณะAuthenticationServicesสำหรับ iOS 12 AutoFill จะขัดข้องใน iOS 11 ตามที่อธิบายไว้
จริงๆแล้วฉันมีปัญหากับ 11.3.1 และ Thread Sanitizer ก็ปิดอยู่แล้วตามที่กล่าวไว้ข้างต้น ในกรณีของฉันปัญหาคือฉันเคยมีเวอร์ชัน xCode ที่แตกต่างกันในโฟลเดอร์แอปพลิเคชันของฉันเช่นนั้น
/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app
และ
/Applications/Xcode.app - was 11.2
ฉันใช้เวลา 2 วันในการทำความเข้าใจว่าระบบบิวด์ดู /Applications/Xcode.app ตามค่าเริ่มต้น ดังนั้นการนำ 11.3.1 ไปที่ /Applications/Xcode.app ในที่สุดก็แก้ปัญหาได้
เกิดปัญหาเดียวกันกับฉัน ฉันมี iOS 14 Beta และปัญหาได้รับการแก้ไขเมื่อฉันอัปเดตเป็นเวอร์ชันทางการ
ฉันประสบปัญหานั้นเฉพาะเมื่อใช้งานบนอุปกรณ์จริง (iPhone SE) ในโครงการจำลองทำงานได้ตามที่คาดไว้
ฉันได้ลองแก้ไขทั้งหมดจากเธรดนี้และจากที่นี่: OS X Framework Library ไม่โหลด: 'ไม่พบรูปภาพ' ไม่มีสิ่งใดที่เหมาะกับฉัน
สำหรับฉันปัญหาได้รับการแก้ไขแล้วหลังจากรีสตาร์ท iPhone (sic!)
ฉันทำ:
และในที่สุดก็ใช้งานได้ :)
หากวิธีอื่น ๆ ล้มเหลวอย่าลืมลองใช้
ฉันได้รับการจัดเรียงตามคำสั่ง "pod install"