เริ่มต้นใช้งาน 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 ที่เปิดอยู่ ให้ไปที่ Assets > Import Package > Custom Package

  3. จาก SDK ที่คลายซิปแล้ว ให้เลือกเพื่อนำเข้า Crashlytics SDK ( FirebaseCrashlytics.unitypackage )

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

  4. ในหน้าต่าง นำเข้า Unity Package คลิก นำเข้า

ขั้นตอนที่ 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+ (แพลตฟอร์มแอปเปิล)

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

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

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

หุ่นยนต์

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

    • ส่งออกไปยังโครงการ 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 ของคุณ (ไม่ใช่ชื่อแพ็คเกจของคุณ)
      ตัวอย่างรหัสแอป 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 .zip )

    ดูตัวเลือกขั้นสูงสำหรับการใช้คำสั่ง Firebase CLI สำหรับการสร้างและอัปโหลดไฟล์สัญลักษณ์

    ธง คำอธิบาย
    --generator=csym

    ใช้ตัวสร้างไฟล์สัญลักษณ์ cSYM แบบเดิมแทนตัวสร้างไฟล์ Breakpad เริ่มต้น

    ไม่แนะนำให้ใช้ เราขอแนะนำให้ใช้ตัวสร้างไฟล์สัญลักษณ์ Breakpad เริ่มต้น

    --generator=breakpad

    ใช้ตัวสร้างไฟล์สัญลักษณ์ Breakpad

    โปรดทราบว่าค่าเริ่มต้นสำหรับการสร้างไฟล์สัญลักษณ์คือ Breakpad ใช้แฟล็กนี้เฉพาะเมื่อคุณได้เพิ่มแล้ว symbolGenerator { csym() } ในการกำหนดค่าบิลด์ของคุณและคุณต้องการแทนที่เพื่อใช้ Breakpad แทน

    --dry-run

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

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

    --debug ให้ข้อมูลการดีบักเพิ่มเติม

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

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

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

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

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

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

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

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

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

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


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

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

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