เริ่มต้นใช้งาน 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. จาก SDK ที่แยกไฟล์แล้ว ให้เลือกเพื่อนำเข้า Crashlytics 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 ที่ใช้แบ็กเอนด์สคริปต์ Mono ของ Unity ขั้นตอนเหล่านี้จะไม่ ที่จำเป็น

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

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

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

หากคุณติดตั้ง CLI แล้ว โปรดตรวจสอบว่า อัปเดตเป็นเวอร์ชันล่าสุด

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

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

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

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

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

Android

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

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

    • สร้าง APK โดยตรงจาก Unity Editor
      ก่อนสร้าง โปรดตรวจสอบว่าช่องทำเครื่องหมาย Create tags.zip เลือกในกล่องโต้ตอบการตั้งค่าบิลด์

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

    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 ใช้แฟล็กนี้เมื่อคุณได้เพิ่มไว้เท่านั้น symbolGenerator { csym() } ในการกำหนดค่าบิลด์ และต้องการลบล้างใช้ เบรกแพดแทน

    --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 ให้เรียกใช้ คำสั่ง crashlytics:symbols:upload ของ Firebase CLI เพื่ออัปโหลด ไฟล์สัญลักษณ์

  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 อย่างชัดแจ้ง (กำหนดให้คุณต้อง แก้ไขไฟล์ Manifest ของแอป Android)
  • ผสานรวมกับ Google Play เพื่อให้ คุณสามารถกรองรายงานข้อขัดข้องของแอป Android ตามแทร็ก Google Play ได้โดยตรงใน หน้าแดชบอร์ด Crashlytics ซึ่งจะช่วยให้คุณมุ่งเน้นแดชบอร์ดไปยังบิลด์ที่เฉพาะเจาะจงได้ดียิ่งขึ้น