| เลือกแพลตฟอร์ม | iOS+ Android Android NDK Flutter Unity |
คู่มือนี้อธิบายวิธีเริ่มต้นใช้งาน Firebase Crashlytics ในโปรเจ็กต์ Unity
หลังจากตั้งค่า SDK ของ Firebase Crashlytics ในแอปแล้ว คุณจะได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องดำเนินการทั้งในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์การกำหนดค่า Firebase และ SDK ของ Crashlytics) หากต้องการตั้งค่าให้เสร็จสมบูรณ์ คุณจะต้องบังคับให้เกิดข้อขัดข้องเพื่อทดสอบการส่งรายงานข้อขัดข้องฉบับแรกไปยัง Firebase
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Unity หากยังไม่ได้เพิ่ม หากไม่มีโปรเจ็กต์ Unity คุณสามารถดาวน์โหลดแอปตัวอย่างได้
แนะนำ: หากต้องการรับบันทึกเบรดครัมบ์โดยอัตโนมัติเพื่อทำความเข้าใจการกระทำของผู้ใช้ที่นำไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
หากใช้โปรเจ็กต์ Firebase เดิมที่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ได้ในหน้า
การตั้งค่า > การผสานรวมของคอนโซล Firebase
ขั้นตอนที่ 1: เพิ่ม SDK ของ Crashlytics ลงในแอป
โปรดทราบว่าเมื่อลงทะเบียนโปรเจ็กต์ Unity กับโปรเจ็กต์ Firebase คุณอาจดาวน์โหลด SDK ของ Firebase Unity และเพิ่มแพ็กเกจที่อธิบายไว้ในขั้นตอนต่อไปนี้แล้ว
ดาวน์โหลด Firebase Unity SDK แล้วแตกไฟล์ SDK ไว้ในตำแหน่งที่สะดวก SDK ของ Firebase Unity ไม่ได้เจาะจงแพลตฟอร์ม
ในโปรเจ็กต์ Unity ที่เปิดอยู่ ให้ไปที่เนื้อหา > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง
จาก SDK ที่แตกไฟล์แล้ว ให้เลือกนำเข้า SDK ของ Crashlytics (
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 ให้คุณอัปโหลดสัญลักษณ์โดยอัตโนมัติ
SDK ของ Crashlytics สำหรับ Unity (v8.6.1 ขึ้นไป) จะรวมการรายงานข้อขัดข้องของ NDK โดยอัตโนมัติ ซึ่งช่วยให้ Crashlytics สามารถรายงานข้อขัดข้องของ IL2CPP ของ Unity ใน Android ได้โดยอัตโนมัติ อย่างไรก็ตาม หากต้องการดูสแต็กเทรซที่มีสัญลักษณ์สำหรับการขัดข้องของไลบรารีแบบเนทีฟในแดชบอร์ด Crashlytics คุณต้องอัปโหลดข้อมูลสัญลักษณ์ในเวลาบิลด์โดยใช้ Firebase CLI
หากต้องการตั้งค่าการอัปโหลดสัญลักษณ์ ให้ทำตามวิธีการติดตั้ง Firebase CLI
หากคุณติดตั้ง CLI แล้ว โปรดอัปเดตเป็นเวอร์ชันล่าสุด
ขั้นตอนที่ 4: สร้างโปรเจ็กต์และอัปโหลดสัญลักษณ์
iOS+ (แพลตฟอร์ม Apple)
จากกล่องโต้ตอบการตั้งค่าบิลด์ ให้ส่งออกโปรเจ็กต์ไปยัง Xcode Workspace
สร้างแอป
สำหรับแพลตฟอร์ม Apple ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติเพื่อสร้างและอัปโหลดไฟล์สัญลักษณ์ที่เข้ากันได้กับ Crashlytics ไปยังเซิร์ฟเวอร์ Firebase สำหรับแต่ละบิลด์
Android
จากกล่องโต้ตอบการตั้งค่าบิลด์ ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
ส่งออกไปยังโปรเจ็กต์ Android Studio เพื่อสร้างโปรเจ็กต์ หรือ
สร้าง APK โดยตรงจาก Unity Editor
ก่อนสร้าง โปรดตรวจสอบว่าได้เลือกช่องทำเครื่องหมายสร้าง symbols.zip ในกล่องโต้ตอบการตั้งค่าบิลด์แล้ว
เมื่อบิลด์เสร็จแล้ว ให้สร้างไฟล์สัญลักษณ์ที่เข้ากันได้กับ 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:17104a2ced0c9b9bPATH/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
ดูตัวเลือกขั้นสูงสำหรับการใช้คำสั่ง CLI Firebase เพื่อสร้างและอัปโหลดไฟล์สัญลักษณ์
Flag คำอธิบาย --generator=csymใช้เครื่องมือสร้างไฟล์สัญลักษณ์ cSYM เดิมแทนเครื่องมือสร้าง Breakpad เริ่มต้น
ไม่แนะนำให้ใช้ เราขอแนะนำให้ใช้เครื่องมือสร้างไฟล์สัญลักษณ์ Breakpad เริ่มต้น
--generator=breakpadใช้โปรแกรมสร้างไฟล์สัญลักษณ์ Breakpad
โปรดทราบว่าค่าเริ่มต้นสำหรับการสร้างไฟล์สัญลักษณ์คือ Breakpad ใช้แฟล็กนี้เฉพาะในกรณีที่คุณเพิ่ม
ในการกำหนดค่าบิลด์และต้องการลบล้างเพื่อใช้ Breakpad แทนsymbolGenerator { csym() }--dry-runสร้างไฟล์สัญลักษณ์แต่ไม่อัปโหลด
แฟล็กนี้มีประโยชน์หากคุณต้องการตรวจสอบเนื้อหาของไฟล์ที่ส่ง
--debugให้ข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติม
ขั้นตอนที่ 5: บังคับให้เกิดข้อขัดข้องเพื่อทดสอบการตั้งค่าให้เสร็จสมบูรณ์
หากต้องการตั้งค่า Crashlytics ให้เสร็จและดูข้อมูลเบื้องต้นในแดชบอร์ด Crashlytics ของคอนโซล Firebase คุณต้องบังคับให้เกิดข้อขัดข้องทดสอบ
ค้นหา
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"); } } }
สร้างแอปและอัปโหลดข้อมูลสัญลักษณ์หลังจากสร้างเสร็จแล้ว
iOS+: ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode โดยอัตโนมัติเพื่ออัปโหลดไฟล์สัญลักษณ์
Android: สำหรับแอป Android ที่ใช้ IL2CPP ให้เรียกใช้คำสั่ง Firebase CLI
crashlytics:symbols:uploadเพื่ออัปโหลดไฟล์สัญลักษณ์
เรียกใช้แอป เมื่อแอปทำงานแล้ว ให้ดูบันทึกของอุปกรณ์และรอให้ข้อยกเว้นทริกเกอร์จาก
CrashlyticsTesteriOS+: ดูบันทึกในแผงด้านล่างของ Xcode
Android: ดูบันทึกโดยเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
adb logcat
ในคอนโซล Firebase ให้ไปที่แดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics เพื่อตรวจสอบรายงานข้อขัดข้องทดสอบ
หากรีเฟรชคอนโซลแล้วและยังไม่เห็นข้อขัดข้องทดสอบหลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่องเพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่
เพียงเท่านี้ก็เรียบร้อยแล้ว ตอนนี้ Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง ไปที่แดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
(แนะนำ) สำหรับแอป Android ที่ใช้ IL2CPP ให้รับความช่วยเหลือในการแก้ไขข้อบกพร่องของข้อขัดข้องที่เกิดจากข้อผิดพลาดด้านหน่วยความจำของระบบโดยรวบรวมรายงาน GWP-ASan ข้อผิดพลาดเกี่ยวกับหน่วยความจำเหล่านี้อาจเชื่อมโยงกับความเสียหายของหน่วยความจำภายในแอป ซึ่งเป็นสาเหตุหลักของช่องโหว่ด้านความปลอดภัยของแอป หากต้องการใช้ประโยชน์จากฟีเจอร์การแก้ไขข้อบกพร่องนี้ ให้ตรวจสอบว่าแอปใช้ SDK Crashlytics สำหรับ Unity เวอร์ชันล่าสุด (v10.7.0 ขึ้นไป) และเปิดใช้ GWP-ASan อย่างชัดแจ้ง (คุณต้องแก้ไข Android App Manifest)
ปรับแต่งการตั้งค่ารายงานข้อขัดข้องโดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง
ส่งออกข้อมูลไปยัง BigQuery หรือ Cloud Logging เพื่อใช้การวิเคราะห์และฟีเจอร์ขั้นสูง เช่น การค้นหาข้อมูล การสร้างแดชบอร์ดที่กำหนดเอง และการตั้งค่าการแจ้งเตือนที่กำหนดเอง