เริ่มต้นใช้งาน Firebase Crashlytics

การเริ่มต้นอย่างรวดเร็วนี้จะอธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปด้วย Firebase Crashlytics SDK เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase

การตั้งค่า Crashlytics จะต้องมีงานทั้งในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์การกำหนดค่า Firebase และ Crashlytics SDK) ในการตั้งค่าให้เสร็จสิ้น คุณจะต้องบังคับให้เกิดข้อขัดข้องการทดสอบเพื่อส่งรายงานข้อขัดข้องรายการแรกไปยัง Firebase

ก่อนเริ่มต้น

  1. เพิ่ม Firebase ลงในโปรเจ็กต์ Unity หากยังไม่ได้ทำ หากไม่มีโปรเจ็กต์ Unity คุณดาวน์โหลดแอปตัวอย่างได้

  2. แนะนำ: หากต้องการรับบันทึกเบรดครัมบ์โดยอัตโนมัติเพื่อทำความเข้าใจการดำเนินการของผู้ใช้ซึ่งนำไปสู่เหตุการณ์ข้อขัดข้อง ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase

    • หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ Google Analytics ได้จากแท็บการผสานรวมของ > การตั้งค่าโปรเจ็กต์ในคอนโซล Firebase

    • หากคุณกำลังสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์

ขั้นตอนที่ 1: เพิ่ม Crashlytics SDK ลงในแอป

โปรดทราบว่าเมื่อคุณลงทะเบียนโปรเจ็กต์ Unity ด้วยโปรเจ็กต์ Firebase แล้ว คุณอาจดาวน์โหลด Firebase Unity SDK ไปแล้ว และเพิ่มแพ็กเกจตามที่อธิบายไว้ในขั้นตอนต่อไปนี้

  1. ดาวน์โหลด Firebase Unity SDK จากนั้นแตกไฟล์ SDK ในที่ที่สะดวก Firebase Unity SDK ไม่ใช่การใช้งานเฉพาะแพลตฟอร์ม

  2. ในโปรเจ็กต์ Unity ที่เปิดอยู่ ให้ไปที่ เนื้อหา > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง

  3. เลือกเพื่อนำเข้า Crashlytics SDK จาก SDK ที่แยกไฟล์แล้ว (FirebaseCrashlytics.unitypackage)

    หากต้องการใช้ประโยชน์จากบันทึกเบรดครัมบ์ ให้เพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปด้วย (FirebaseAnalytics.unitypackage) โปรดตรวจสอบว่า เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว

  4. คลิกนำเข้า ในหน้าต่างนำเข้าแพ็กเกจ Unity

ขั้นตอนที่ 2: เริ่มต้น Crashlytics

  1. สร้างสคริปต์ C# ใหม่ แล้วเพิ่มไปยัง GameObject ในโหมด

    1. เปิดฉากแรก แล้วสร้าง GameObject ที่ว่างเปล่าชื่อ CrashlyticsInitializer

    2. คลิกเพิ่มคอมโพเนนต์ในเครื่องมือตรวจสอบสำหรับออบเจ็กต์ใหม่

    3. เลือกสคริปต์ CrashlyticsInit เพื่อเพิ่มไปยังออบเจ็กต์ CrashlyticsInitializer

  2. เริ่มต้น 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 ที่ใช้แบ็กเอนด์สคริปต์แบบโมโนของ Unity

  • สำหรับแอปแพลตฟอร์ม Apple คุณไม่จำเป็นต้องทำตามขั้นตอนเหล่านี้เนื่องจากปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติเพื่ออัปโหลดสัญลักษณ์

Unity SDK 8.6.1 ขึ้นไปของ Crashlytics จะรวมรายงานข้อขัดข้อง NDK ไว้โดยอัตโนมัติ ซึ่งช่วยให้ Crashlytics รายงานข้อขัดข้อง IL2CPP ใน Android ได้โดยอัตโนมัติ แต่หากต้องการดูสแต็กเทรซสัญลักษณ์ของข้อขัดข้องของไลบรารีเนทีฟในแดชบอร์ด Crashlytics คุณต้องอัปโหลดข้อมูลสัญลักษณ์ ณ เวลาที่สร้างโดยใช้ Firebase CLI

ทำตามวิธีการติดตั้ง Firebase CLI เพื่อตั้งค่าการอัปโหลดสัญลักษณ์

หากติดตั้ง CLI แล้ว อย่าลืมอัปเดตเป็นเวอร์ชันล่าสุด

ขั้นตอนที่ 4: สร้างโปรเจ็กต์และอัปโหลดสัญลักษณ์

iOS+ (แพลตฟอร์มของ Apple)

  1. จากกล่องโต้ตอบการตั้งค่าบิลด์ ให้ส่งออกโปรเจ็กต์ไปยังพื้นที่ทำงาน Xcode

  2. สร้างแอปของคุณ

    สำหรับแพลตฟอร์ม Apple ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติเพื่อสร้างและอัปโหลดไฟล์สัญลักษณ์ที่เข้ากันได้กับ Crashlytics ไปยังเซิร์ฟเวอร์ Firebase สำหรับแต่ละบิลด์

Android

  1. จากกล่องโต้ตอบการตั้งค่าบิลด์ ให้เลือกดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

    • ส่งออกไปยังโปรเจ็กต์ Android Studio เพื่อสร้างโปรเจ็กต์ หรือ

    • สร้าง APK จาก Unity Editor โดยตรง
      ก่อนสร้าง โปรดตรวจสอบว่าได้เลือกช่องสร้างสัญลักษณ์.zip ในกล่องโต้ตอบการตั้งค่าบิลด์แล้ว

  2. เมื่อบิลด์เสร็จสิ้นแล้ว ให้สร้างไฟล์สัญลักษณ์ที่ใช้ร่วมกับ Crashlytics ได้ แล้วอัปโหลดไฟล์ดังกล่าวไปยังเซิร์ฟเวอร์ Firebase โดยเรียกใช้คำสั่ง Firebase CLI ต่อไปนี้

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: รหัสแอป Firebase Android (ไม่ใช่ชื่อแพ็กเกจ)
      ตัวอย่างรหัสแอป Firebase บน Android: 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 ใช้แฟล็กนี้เฉพาะในกรณีที่คุณได้เพิ่ม symbolGenerator { csym() } ในการกำหนดค่าบิลด์แล้วและต้องการลบล้างให้ใช้ Breakpad แทน

    --dry-run

    สร้างไฟล์สัญลักษณ์ แต่ไม่ได้อัปโหลดไฟล์

    แฟล็กนี้มีประโยชน์หากคุณต้องการตรวจสอบเนื้อหาของไฟล์ที่ส่ง

    --debug ให้ข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติม

ขั้นตอนที่ 5: บังคับให้การทดสอบขัดข้องเพื่อตั้งค่าให้เสร็จ

คุณต้องบังคับให้เกิดข้อขัดข้องทดสอบเพื่อตั้งค่า Crashlytics ให้เสร็จสมบูรณ์และดูข้อมูลเริ่มต้นในแดชบอร์ด Crashlytics ของคอนโซล Firebase

  1. ค้นหา GameObject ที่มีอยู่ แล้วเพิ่มลงในสคริปต์ต่อไปนี้ สคริปต์นี้จะทำให้การทดสอบขัดข้องใน 2-3 วินาทีหลังจากที่คุณเรียกใช้แอป

    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");
            }
        }
    }
    
  2. สร้างแอปและอัปโหลดข้อมูลสัญลักษณ์หลังจากที่งานสร้างเสร็จ

    • iOS+: ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติเพื่ออัปโหลดไฟล์สัญลักษณ์

    • Android: สำหรับแอป Android ที่ใช้ IL2CPP ให้เรียกใช้คำสั่ง Firebase CLI crashlytics:symbols:upload เพื่ออัปโหลดไฟล์สัญลักษณ์

  3. เรียกใช้แอป เมื่อแอปทำงานแล้ว ให้คอยดูบันทึกของอุปกรณ์และรอให้ข้อยกเว้นเริ่มทำงานจาก CrashlyticsTester

    • iOS+: ดูบันทึกในแผงด้านล่างของ Xcode

    • Android: ดูบันทึกโดยเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล adb logcat

  4. ไปที่แดชบอร์ด Crashlytics ของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ

    หากคุณได้รีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นข้อขัดข้องการทดสอบหลังผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่องเพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่


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

ขั้นตอนถัดไป

  • (แนะนำ) สำหรับแอป Android ที่ใช้ IL2CPP รับความช่วยเหลือในการแก้ไขข้อบกพร่องสำหรับข้อขัดข้องที่เกิดจากข้อผิดพลาดด้านหน่วยความจําของระบบโดย รวบรวมรายงานของ GWP-ASan ข้อผิดพลาดเกี่ยวกับหน่วยความจำเหล่านี้อาจเกี่ยวข้องกับความเสียหายของหน่วยความจำภายในแอป ซึ่งเป็นสาเหตุหลักที่ทำให้เกิดช่องโหว่ด้านความปลอดภัยของแอป หากต้องการใช้ประโยชน์จากฟีเจอร์การแก้ไขข้อบกพร่องนี้ โปรดตรวจสอบว่าแอปใช้ Crashlytics SDK เวอร์ชันล่าสุดสำหรับ Unity (v10.7.0+) และเปิดใช้ GWP-ASan อย่างชัดแจ้ง (กำหนดให้คุณต้องแก้ไขไฟล์ Android App Manifest)
  • ผสานรวมกับ Google Play เพื่อให้คุณกรองรายงานข้อขัดข้องของแอป Android ได้ด้วยแทร็ก Google Play ในแดชบอร์ด Crashlytics โดยตรง ซึ่งจะช่วยให้คุณมุ่งเน้นหน้าแดชบอร์ดไปยังบิลด์ที่เฉพาะเจาะจงได้ดีขึ้น