คู่มือเริ่มต้นฉบับย่อนี้อธิบายวิธีตั้งค่า Firebase Crashlytics ในแอป ด้วย SDK ของ Firebase Crashlytics เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุม ในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องทำทั้งในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์กำหนดค่า Firebase และ Crashlytics SDK) หากต้องการตั้งค่าให้เสร็จสมบูรณ์ คุณจะต้องบังคับให้เกิดข้อขัดข้องเพื่อส่งรายงานข้อขัดข้องแรกไปยัง Firebase
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Unity หากยังไม่ได้ดำเนินการ หากไม่มีโปรเจ็กต์ Unity คุณสามารถดาวน์โหลดแอปตัวอย่างได้
แนะนํา: หากต้องการรับบันทึกเส้นทางโดยอัตโนมัติ เพื่อทําความเข้าใจการกระทําของผู้ใช้ที่นําไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ Google Analytics ได้จาก แท็บการผสานรวมของ
ในคอนโซล > การตั้งค่าโปรเจ็กต์Firebase หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
ขั้นตอนที่ 1: เพิ่ม Crashlytics SDK ลงในแอป
โปรดทราบว่าเมื่อลงทะเบียนโปรเจ็กต์ Unity กับโปรเจ็กต์ Firebase คุณอาจได้ดาวน์โหลด Firebase Unity SDK และเพิ่มแพ็กเกจที่อธิบายไว้ในขั้นตอนต่อไปนี้แล้ว
ดาวน์โหลด Firebase Unity SDK แล้วแตกไฟล์ SDK ไว้ที่ใดก็ได้ที่คุณสะดวก Firebase Unity SDK ไม่ได้เจาะจงแพลตฟอร์ม
ในโปรเจ็กต์ Unity แบบเปิด ให้ไปที่ เนื้อหา > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง
เลือกตำแหน่งเพื่อนำเข้า Crashlytics SDK จาก SDK ที่แยกไฟล์แล้ว (
FirebaseCrashlytics.unitypackage
)หากต้องการใช้ประโยชน์จาก บันทึกเส้นทาง ให้เพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปด้วย (
FirebaseAnalytics.unitypackage
) ตรวจสอบว่า เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้วคลิกนำเข้า ในหน้าต่างนำเข้าแพ็กเกจ Unity
ขั้นตอนที่ 2: เริ่มต้น Crashlytics
สร้างสคริปต์ C# ใหม่ แล้วเพิ่มลงใน
GameObject
ในฉากเปิดฉากแรก แล้วสร้าง
GameObject
ว่างเปล่าชื่อCrashlyticsInitializer
คลิกเพิ่มคอมโพเนนต์ในเครื่องมือตรวจสอบสำหรับออบเจ็กต์ใหม่
เลือกสคริปต์
CrashlyticsInit
เพื่อเพิ่มลงในออบเจ็กต์CrashlyticsInitializer
เริ่มต้น Crashlytics ในเมธอด
Start
ของสคริปต์using System.Collections; using System.Collections.Generic; using UnityEngine; // Import Firebase and Crashlytics using Firebase; using Firebase.Crashlytics; public class CrashlyticsInit : MonoBehaviour { // Use this for initialization void Start () { // Initialize Firebase Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { // Create and hold a reference to your FirebaseApp, // where app is a Firebase.FirebaseApp property of your application class. // Crashlytics will use the DefaultInstance, as well; // this ensures that Crashlytics is initialized. Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance; // When this property is set to true, Crashlytics will report all // uncaught exceptions as fatal events. This is the recommended behavior. Crashlytics.ReportUncaughtExceptionsAsFatal = true; // Set a flag here for indicating that your project is ready to use Firebase. } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}",dependencyStatus)); // Firebase Unity SDK is not safe to use here. } }); } // Update is called once per frame void Update() // ... }
ขั้นตอนที่ 3: (Android เท่านั้น) เตรียมพร้อมสำหรับการอัปโหลดสัญลักษณ์
ขั้นตอนนี้จำเป็นสำหรับแอป Android ที่ใช้ IL2CPP เท่านั้น
สำหรับแอป Android ที่ใช้แบ็กเอนด์การเขียนสคริปต์ Mono ของ Unity คุณไม่จำเป็นต้องทำตามขั้นตอนเหล่านี้
สำหรับแอปแพลตฟอร์ม Apple คุณไม่จำเป็นต้องทำตามขั้นตอนเหล่านี้ เนื่องจากปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติเพื่ออัปโหลดสัญลักษณ์
Unity SDK 8.6.1 ขึ้นไปของ Crashlytics จะรวมการรายงานข้อขัดข้องของ NDK โดยอัตโนมัติ ซึ่งช่วยให้ Crashlytics รายงานข้อขัดข้องของ Unity IL2CPP ใน Android ได้โดยอัตโนมัติ อย่างไรก็ตาม หากต้องการดู Stack Trace ที่มีสัญลักษณ์สำหรับข้อขัดข้องของไลบรารีเนทีฟในแดชบอร์ด Crashlytics คุณต้องอัปโหลดข้อมูลสัญลักษณ์ในเวลาบิลด์โดยใช้ CLI ของ Firebase
หากต้องการตั้งค่าการอัปโหลดสัญลักษณ์ ให้ทำตามวิธีการเพื่อ ติดตั้ง FirebaseCLI
หากติดตั้ง CLI แล้ว โปรดอัปเดตเป็นเวอร์ชันล่าสุด
ขั้นตอนที่ 4: สร้างโปรเจ็กต์และอัปโหลดสัญลักษณ์
iOS+ (แพลตฟอร์ม Apple)
จากกล่องโต้ตอบการตั้งค่าการสร้าง ให้ส่งออกโปรเจ็กต์ไปยังพื้นที่ทำงาน Xcode
สร้างแอป
สำหรับแพลตฟอร์ม Apple ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติ เพื่อสร้างและอัปโหลดไฟล์สัญลักษณ์ที่เข้ากันได้กับ Crashlytics ไปยังเซิร์ฟเวอร์ Firebase สำหรับแต่ละบิลด์
Android
จากกล่องโต้ตอบการตั้งค่าการสร้าง ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
ส่งออกไปยังโปรเจ็กต์ Android Studio เพื่อสร้างโปรเจ็กต์ หรือ
สร้าง APK จาก Unity Editor โดยตรง
ก่อนที่จะสร้าง ให้ตรวจสอบว่าได้เลือกช่องทำเครื่องหมายสำหรับสร้าง symbols.zip ในกล่องโต้ตอบการตั้งค่าการสร้างแล้ว
เมื่อบิลด์เสร็จสมบูรณ์แล้ว ให้สร้างไฟล์สัญลักษณ์ที่เข้ากันได้กับ Crashlytics และอัปโหลดไปยังเซิร์ฟเวอร์ Firebase โดยเรียกใช้คำสั่ง CLI ต่อไปนี้Firebase
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: รหัสแอป Android ของ Firebase (ไม่ใช่ชื่อแพ็กเกจ)
ตัวอย่างรหัสแอป Android ของ Firebase:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/SYMBOLS: เส้นทางไปยังไฟล์สัญลักษณ์ที่สร้างโดย CLI
ส่งออกไปยังโปรเจ็กต์ Android Studio - PATH/TO/SYMBOLS คือไดเรกทอรี
unityLibrary/symbols
ซึ่งสร้างขึ้นในรูทของโปรเจ็กต์ที่ส่งออกหลังจากที่คุณสร้างแอป ผ่าน Gradle หรือ Android Studioสร้าง APK โดยตรงจากภายใน Unity — PATH/TO/SYMBOLS คือเส้นทางของไฟล์สัญลักษณ์ที่ซิป ซึ่งสร้างขึ้นในไดเรกทอรีรูทของโปรเจ็กต์เมื่อการบิลด์เสร็จสมบูรณ์ (เช่น
)myproject/myapp-1.0-v100.symbols.zip
ดูตัวเลือกขั้นสูงสำหรับการใช้ Firebase คำสั่ง CLI สำหรับการสร้างและอัปโหลดไฟล์สัญลักษณ์
รายงาน คำอธิบาย --generator=csym
ใช้เครื่องมือสร้างไฟล์สัญลักษณ์ cSYM รุ่นเดิมแทนเครื่องมือสร้าง Breakpad เริ่มต้น
ไม่แนะนำให้ใช้ เราขอแนะนำให้ใช้เครื่องมือสร้างไฟล์สัญลักษณ์ Breakpad เริ่มต้น
--generator=breakpad
ใช้เครื่องมือสร้างไฟล์สัญลักษณ์ Breakpad
โปรดทราบว่าค่าเริ่มต้นสำหรับการสร้างไฟล์สัญลักษณ์คือ Breakpad ใช้แฟล็กนี้เฉพาะในกรณีที่คุณได้เพิ่ม
ในการกำหนดค่าบิลด์และต้องการลบล้างเพื่อใช้ Breakpad แทนsymbolGenerator { csym() }
--dry-run
สร้างไฟล์สัญลักษณ์แต่ไม่อัปโหลด
แฟล็กนี้มีประโยชน์หากคุณต้องการตรวจสอบเนื้อหาของไฟล์ที่ส่ง
--debug
ให้ข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติม
ขั้นตอนที่ 5: บังคับให้แอปทดสอบขัดข้องเพื่อตั้งค่าให้เสร็จสมบูรณ์
หากต้องการตั้งค่า Crashlytics ให้เสร็จสมบูรณ์และดูข้อมูลเริ่มต้นใน แดชบอร์ด Crashlytics ของคอนโซล Firebase คุณต้องบังคับให้เกิดข้อขัดข้องในการทดสอบ
ค้นหา
GameObject
ที่มีอยู่ แล้วเพิ่มสคริปต์ต่อไปนี้ลงในสคริปต์นั้น สคริปต์นี้จะทำให้แอปทดสอบขัดข้องหลังจากที่คุณเรียกใช้แอปไม่กี่วินาทีusing System; using UnityEngine; public class CrashlyticsTester : MonoBehaviour { int updatesBeforeException; // Use this for initialization void Start () { updatesBeforeException = 0; } // Update is called once per frame void Update() { // Call the exception-throwing method here so that it's run // every frame update throwExceptionEvery60Updates(); } // A method that tests your Crashlytics implementation by throwing an // exception every 60 frame updates. You should see reports in the // Firebase console a few minutes after running your app with this method. void throwExceptionEvery60Updates() { if (updatesBeforeException > 0) { updatesBeforeException--; } else { // Set the counter to 60 updates updatesBeforeException = 60; // Throw an exception to test your Crashlytics implementation throw new System.Exception("test exception please ignore"); } } }
สร้างแอปและอัปโหลดข้อมูลสัญลักษณ์หลังจากที่สร้างเสร็จแล้ว
iOS+: ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติเพื่ออัปโหลดไฟล์สัญลักษณ์
Android: สำหรับแอป Android ที่ใช้ IL2CPP ให้เรียกใช้คำสั่ง Firebase CLI
crashlytics:symbols:upload
เพื่ออัปโหลดไฟล์ สัญลักษณ์
เรียกใช้แอป เมื่อแอปทํางานแล้ว ให้ดูบันทึกของอุปกรณ์และรอให้ข้อยกเว้นทริกเกอร์จาก
CrashlyticsTester
iOS+: ดูบันทึกในบานหน้าต่างด้านล่างของ Xcode
Android: ดูบันทึกโดยเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
adb logcat
ไปที่แดชบอร์ด Crashlytics ของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ
หากรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นข้อขัดข้องที่ทดสอบ หลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่
เพียงเท่านี้ก็เรียบร้อยแล้ว ตอนนี้ Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง ไปที่Crashlyticsแดชบอร์ดเพื่อดูและตรวจสอบ รายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
- (แนะนํา) สําหรับแอป Android ที่ใช้ IL2CPP ให้รับความช่วยเหลือในการแก้ไขข้อบกพร่องของข้อขัดข้องที่เกิดจากข้อผิดพลาดด้านหน่วยความจําของระบบโดยรวบรวม รายงาน GWP-ASan ข้อผิดพลาดที่เกี่ยวข้องกับหน่วยความจำเหล่านี้อาจเชื่อมโยงกับการเสียหายของหน่วยความจำภายใน แอปของคุณ ซึ่งเป็นสาเหตุหลักของช่องโหว่ด้านความปลอดภัยของแอป หากต้องการใช้ประโยชน์จากฟีเจอร์การแก้ไขข้อบกพร่องนี้ โปรดตรวจสอบว่าแอปของคุณ ใช้ Crashlytics SDK สำหรับ Unity (v10.7.0 ขึ้นไป) เวอร์ชันล่าสุดและมี GWP-ASan ที่เปิดใช้โดยชัดแจ้ง (กำหนดให้คุณต้องแก้ไขไฟล์ Manifest ของแอป Android)
- ปรับแต่งการตั้งค่ารายงานข้อขัดข้อง โดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง
- ผสานรวมกับ Google Play เพื่อให้คุณ กรองรายงานข้อขัดข้องของแอป Android ตามแทร็ก Google Play ได้โดยตรงใน แดชบอร์ด Crashlytics ซึ่งจะช่วยให้คุณมุ่งเน้นแดชบอร์ดไปที่บิลด์ที่เฉพาะเจาะจงได้ดียิ่งขึ้น