Crashlytics ไม่ได้ส่งรายงานข้อขัดข้องจาก iPhone


86

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


5
ฉันมีปัญหาเดียวกันกับบริการ Crashlytics จะไม่มีการส่งรายงานข้อขัดข้องจากอุปกรณ์ (จากประสบการณ์ของฉัน) - จากเครื่องจำลองเท่านั้น ฉันลงเอยด้วยการใช้การรายงานข้อขัดข้องของ Crittercism และการจัดการข้อผิดพลาด
Sam Spencer

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

ใช่ฉันกำลังใช้อุปกรณ์การพัฒนาของฉัน มันทำให้ปัญหา?
farhad rubel

1
หากไม่มีคำอธิบายการตั้งค่าที่สมบูรณ์หรือโครงการทดสอบก็เป็นไปไม่ได้ที่จะตอบ คุณควรติดต่อฝ่ายสนับสนุน crashlytics การเดาป่าไม่ได้ช่วยอะไร
Kerni

3
ฉันประหลาดใจมากที่มีคนจาก Crashlytics เห็นโพสต์นี้ของฉันใน StackOverflow และเขาก็ติดต่อฉันทางอีเมล เขาช่วยฉันแก้ปัญหานี้ มาดูกันว่าเกิดอะไรขึ้น
farhad rubel

คำตอบ:


84

Xcode debugger ไม่อนุญาตให้ Crashlytics ประมวลผลรายงานข้อขัดข้อง ใช่มันดูแปลกสำหรับฉันเมื่อฉันอ่านครั้งแรก แต่มันเป็นความจริง ( ที่มา ) นั่นคือเหตุผลที่เราไม่เคยเห็นรายงานข้อขัดข้องเมื่อ:
- ใช้งานแอปใน Simulator
- เรียกใช้แอปบน iDevice โดยสร้างและเรียกใช้จาก Xcode โดยตรงโดยเปิดดีบักเกอร์

เพื่อให้แน่ใจว่ามีการรายงานข้อขัดข้องระหว่างการทดสอบของคุณ ( คัดลอกมาจากไซต์สนับสนุน Crashlytics ):
1. เรียกใช้โปรแกรมจำลอง
2. กดหยุด
3. เปิดแอปของคุณและบังคับให้เกิดข้อขัดข้อง
4. เปิดแอปใหม่จากโปรแกรมจำลอง
5. ดูรายงานข้อขัดข้องใน แดชบอร์ดของเว็บ

แก้ไข:

เพิ่มการอ้างอิง; Crashlytics นอกจากนี้ยังมีบทความสั้น ๆ เกี่ยวกับวิธีที่รวดเร็วเพื่อบังคับให้ผิดพลาด


6
สิ่งนี้ช่วยฉันได้ ฉันยังค้นพบว่าในบางกรณี Crashlytics จะไม่ส่งรายงานข้อขัดข้องเว้นแต่จะเปิดแอปพลิเคชันอีกครั้ง เพื่อย้ำ: ผู้ใช้ประสบปัญหาขัดข้อง ผู้ใช้เปิดแอปพลิเคชันอีกครั้ง Crashlytics ส่งรายงานข้อขัดข้องก่อนหน้านี้
tambykojak

1
@tambykojak อาจเป็นเพราะ iOS Crashes ค่อนข้างผันผวนในกรณีส่วนใหญ่และเส้นทางที่ปลอดภัยกว่าคือการส่งรายงานข้อขัดข้องในการโหลดแอปครั้งต่อไปเทียบกับการส่งทันที เครื่องมือรายงานข้อขัดข้องจำนวนมากใช้กระบวนทัศน์นี้บน iOS และตัวจัดการข้อขัดข้องอื่น ๆ ที่ไม่ใช่ VM
pixelknitter

2
ขอขอบคุณ. ควรทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง :)
iMemon

ฉันต้องอัปโหลด dsyms ในกรณีนี้หรือไม่? ถ้าเป็นเช่นนั้นฉันจะหาได้ที่ไหน?
SoliQuiD

ลิงค์ตายแล้ว
luky

67

ถึงจะสาย แต่ทำงานได้ 100%

ทำการเปลี่ยนแปลงบางอย่างในการตั้งค่าการสร้างโครงการเช่นในภาพด้านล่าง

ใส่คำอธิบายภาพที่นี่

และปฏิบัติตามคำแนะนำเหล่านี้


แม้ว่าหลังจากปิดใช้งาน Bitcode แล้วฉันก็ยังคงมีข้อผิดพลาด dSYMS หายไปทุกครั้งและ 100% ของเวลาที่ดีบักด้วยโปรแกรมจำลอง สิ่งนี้แก้ไขได้ ขอขอบคุณ.
user3344977

ด้วยการเปลี่ยนการตั้งค่านี้ฉันสามารถเห็นข้อขัดข้องในแพลตฟอร์ม
firebase

21

สาเหตุหลักที่ผู้รายงานข้อขัดข้องไม่ทำงานบน iOS เกิดจากการรบกวนจากผู้รายงานข้อขัดข้องที่แตกต่างกัน อย่างไรก็ตามด้วย Crashlytics โดยเฉพาะอาจมีบางอย่างที่เฉพาะเจาะจงสำหรับพวกเขาทำให้รายงานข้อขัดข้องไม่ได้รับการรายงาน

โปรแกรมดีบัก Xcode ไม่อนุญาตให้Crash Reporterประมวลผลรายงานข้อขัดข้อง เนื่องจาก XCode แทนที่ hooks ใด ๆ ในการจัดการการโทรกลับที่ขัดข้อง สิ่งนี้จะเกิดขึ้นเมื่อ:

  • กำลังเรียกใช้แอปใน Simulator (พร้อมกับ debugger)
  • เรียกใช้แอปบน iDevice โดยสร้างและเรียกใช้โดยตรงจาก Xcode โดยเปิดดีบักเกอร์

เพื่อให้แน่ใจว่ามีการรายงานข้อขัดข้องระหว่างการทดสอบของคุณ ( http://support.crashlytics.com/knowledgebase/articles/92523-why-can-ti-have-xcode-connected- ):

  1. เปิดตัวจำลอง
  2. กดหยุด
  3. เปิดแอปของคุณและบังคับให้หยุดทำงาน
  4. เปิดแอปใหม่จากโปรแกรมจำลอง
  5. ดูรายงานข้อขัดข้องในหน้าแดชบอร์ดของเว็บ

แม้ว่าวิดีโอเก่า ๆ จะยังคงมีความเกี่ยวข้อง แต่นี่คือวิดีโอของขั้นตอนด้านบน (ตัวอย่างจาก Crittercism): https://www.youtube.com/watch?v=sU6Su3PBFH4


1
Crashlytics ปิดการใช้งานตัวเองเมื่อตรวจพบดีบักเกอร์ที่แนบมา ไม่ใช่เพราะมันจะไม่ทำงาน แต่เป็นเพราะมันจะหยุดการดีบั๊กจากการทำงานอย่างถูกต้อง Crashlytics ใช้กลไกเดียวกับที่ตัวดีบักใช้เองและมันจะน่าผิดหวังมากที่ SDK จะทำให้ขั้นตอนการดีบักปกติยุ่งเหยิง สำหรับการอ้างอิงฉันได้เขียน Crashlytics SDK เป็นส่วนใหญ่
Mattie

9

สำหรับฉันปัญหาคืออุปกรณ์เชื่อมต่อกับ Mac ของฉัน :) จากแหล่งนี้ :

นอกจากนี้หากคุณมีอุปกรณ์ของคุณเชื่อมต่อกับ Mac ของคุณดีบักเกอร์ของ XCode ก็จะเข้ามาเช่นกัน ดังนั้นเพียงแค่ตัดการเชื่อมต่ออุปกรณ์ก่อนทดสอบ :)


7

ฉันพบวิธีแก้ไขโดยใช้ขั้นตอนต่อไปนี้
1. ไปที่ Edit Scheme 2. Run -> Info 3. เปลี่ยน Build Configuration เป็น release ตอนนี้เรียกใช้แอปขัดข้อง คุณจะได้รับจดหมาย


6

เมื่อเร็ว ๆ นี้เราพบปัญหานี้และพบว่ามีการลบสคริปต์บิวด์ออกไป การเพิ่มกลับเข้าไปในสิ่งต่อไปนี้ช่วยแก้ปัญหาให้เราได้:
./Crashlytics.framework/run <your_api_key> <build_secret>

หมายเหตุ:เมื่อใช้ Cocoapods คุณจะต้องการสิ่งต่อไปนี้แทนเราด้านบน (ที่มา ): ./Pods/CrashlyticsFramework/Crashlytics.framework/run

การเพิ่มบิลด์สคริปต์:

  1. ในการเพิ่ม Run Script Build Phase ใน Xcode 6 ให้เลือกเป้าหมายแอปพลิเคชันของคุณในโปรเจ็กต์ของคุณจากนั้นเลือก "Build Phases"
  2. คลิกไอคอน "บวก" ขนาดเล็กแล้วเลือก "New Run Script Build Phase"
  3. ตอนนี้คุณควรเห็นส่วน Run Script ตรงกลางของตัวเลือก Build Phase ดังที่แสดงไว้ด้านบน
  4. ภายในเนื้อหาของ Run Script Build Phase ให้วางในสคริปต์ "

คำพูดข้างต้นมาจากการสอนด้วยภาพของ Crashlytics ซึ่งอ้างถึงในโพสต์นี้

หมายเหตุ:ฉันเดิมโพสต์คำตอบนี้คำต่อคำสำหรับรหัสข้อผิดพลาด Crashlytics: 202 เมื่อมีการส่งไฟล์


สิ่งนี้ดูเหมือนจะช่วยฉันได้
Chris Prince

1
ฉันใช้ fabric ก่อนหน้านี้สำหรับการรวม twitter ตอนนี้ฉันต้องการ crashlytics ด้วยฉันเพิ่มเฟรมเวิร์กและฉันทำตามคำแนะนำทั้งหมด แต่ฉันไม่ได้รับรายงานข้อขัดข้องใด ๆ ในแดชบอร์ดของฉันโปรดช่วยฉันด้วย
RameshIos

@iOS_Ramesh ฉันชอบที่จะพยายามช่วยคุณ แต่ถ้าไม่รู้มากกว่านี้มันจะยาก ในการดำเนินการนี้คุณควรเปิดคำถามใหม่โดยสรุปว่าคุณอยู่ที่ใด (ขั้นตอนที่คุณทำตามเพื่อรวมข้อมูลโค้ดที่เหมาะสมและข้อเสนอแนะที่คุณได้รับจาก Crashlytics หรือคอนโซล)
James Nelson

ฉันตั้งคำถามใหม่แล้ว ... stackoverflow.com/questions/30215049/…
RameshIos

1
ขอบคุณสำหรับคำใบ้ เราได้ทำการตรวจสอบ ["Release" = "$ {CONFIGURATION}"] ใน Run Script ของเราและเราได้เปลี่ยนชื่อการกำหนดค่ารุ่นของเรา
MariánČerný

4

จากเว็บไซต์ RayWenderlich:

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


3

Crashlytics ใช้ได้ผลกับฉันจนถึงตอนนี้ ไม่รู้ทำไม แต่ตอนนี้ใช้ไม่ได้แล้ว

คุณควรเปิดโหมดดีบักโดย

[Crashlytics sharedInstance].debugMode = YES;

ปัญหาของฉันอยู่ที่นี่รหัสข้อผิดพลาด Crashlytics: 202 เมื่อส่งไฟล์ :(


3

ตรวจสอบว่าคุณไม่ได้บังคับให้เกิดข้อผิดพลาดเร็วเกินไป

ตั้งค่า[Crashlytics sharedInstance].debugModeเป็นYES;

ดูสำหรับ

Crashlytics] Settings loaded

บนบันทึกคอนโซล Xcode

จากนั้นบังคับให้เกิดข้อขัดข้องและรีสตาร์ทแอปจากนั้นระบบจะรายงานข้อขัดข้องทันที


3

ฉันพบปัญหาที่คล้ายกันเมื่อลองทดสอบรหัสข้อขัดข้อง

Crashlytics.sharedInstance().crash()

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

  • ตรวจสอบให้แน่ใจว่าได้เปิดแอปหลังจากที่เกิดข้อขัดข้องเพื่อให้สามารถอัปโหลดข้อขัดข้องได้

ฉันแสดงความคิดเห็นเกี่ยวกับการโทร crash () ข้างต้นและเรียกใช้แอปอีกครั้ง จากนั้นข้อขัดข้องปรากฏขึ้นในแดชบอร์ด



1

คุณได้ลองรัน[[Crashlytics sharedInstance] crash]บนอุปกรณ์และดูว่าได้รับรายงานหรือไม่? มีสาเหตุบางประการที่ Crashlytics อาจไม่ทำงานรวมถึงผู้รายงานข้อขัดข้องอื่น ๆ เป็นต้น


ไม่ฉันใช้ int * x = NULL; * x = 42; รหัสเพื่อดูรายงานข้อขัดข้อง ยิ่งไปกว่านั้นแอปของฉันขัดข้องสำหรับโมเดลข้อมูลหลักที่แตกต่างกัน
farhad rubel

1

หากคุณไม่อัปโหลดไฟล์ dSYM Crashlytics จะไม่แสดงข้อขัดข้องแม้ว่าจะอัปโหลดรายงานสำเร็จแล้วก็ตาม

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



1

บางครั้งอาจต้องใช้เวลาสักพักกว่าจะแสดงบันทึก ฉันสามารถค้นหาได้หลังจาก 15-20 นาที


0

ปัญหาอย่างหนึ่งที่ฉันรู้สึกว่าใน Run Script Phase ควรเป็น Run Script Phase แยกต่างหากสำหรับ CrashLytics เมื่อไหร่ที่เรียกใช้สคริปต์

./Fabric.framework/run

ด้วยสคริปต์อื่น ๆ ของฉันทุกอย่างก็โอเคส่งรายงานการแสดงบันทึก CrashLytics แล้ว แต่ไม่มีอะไรอยู่ในอินเทอร์เฟซเว็บ

เมื่อฉันเพิ่มเฟส Run script อื่นด้วย Fabric run เท่านั้นดูเหมือนเวทมนตร์ :)

การลองครั้งแรกของฉันคือกับ cocoapods แต่ก็ไม่ได้ผล เมื่อฉันเพิ่มเฟรมเวิร์กทั้งหมดและเฟสสคริปต์การรันแยกต่างหากที่ใช้งานได้ด้วยตนเอง


-1

สิ่งนี้ได้ผลสำหรับฉัน

หากคุณกำลังทดสอบบน iDevice เพียงถอดปลั๊ก iDevice ด้วย Xcode ของคุณและเรียกใช้แอปของคุณ ตอนนี้หากเกิดข้อผิดพลาดจะมีการอัปเดตบนแดชบอร์ด


-3

ฉันแก้ไขโดยการยกเลิกการเลือกตัวเลือก "เรียกใช้สคริปต์เฉพาะเมื่อติดตั้ง" ในสคริปต์เรียกใช้ (หนึ่งสำหรับ Fabric (crashlytics))

ใส่คำอธิบายภาพที่นี่


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