บทแนะนำฉบับย่อนี้จะอธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปด้วย Firebase Crashlytics SDK เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล 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: เพิ่ม SDK ของ Crashlytics ลงในแอป
โปรดทราบว่าเมื่อลงทะเบียนโปรเจ็กต์ 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 คุณไม่จําเป็นต้องทำตามขั้นตอนเหล่านี้ เนื่องจากปลั๊กอิน Unity Editor ของ Firebase จะกําหนดค่าโปรเจ็กต์ Xcode ให้อัปโหลดสัญลักษณ์โดยอัตโนมัติ
Unity SDK 8.6.1+ ของ Crashlytics จะรวมการรายงานข้อขัดข้อง NDK โดยอัตโนมัติ ซึ่งทำให้ Crashlytics รายงาน Unity ได้โดยอัตโนมัติ IL2CPP ไม่สำเร็จบน Android แต่หากต้องการดูสแต็กเทรซที่แทนที่ด้วยสัญลักษณ์สำหรับไลบรารีเนทีฟ ขัดข้องในแดชบอร์ด Crashlytics คุณต้องอัปโหลดข้อมูลสัญลักษณ์ที่ เวลาบิลด์โดยใช้ Firebase CLI
หากต้องการตั้งค่าสำหรับการอัปโหลดสัญลักษณ์ ให้ทำตามวิธีการติดตั้ง Firebase CLI
หากคุณติดตั้ง CLI ไว้แล้ว โปรดอัปเดตเป็นเวอร์ชันล่าสุด
ขั้นตอนที่ 4: สร้างโปรเจ็กต์และอัปโหลดสัญลักษณ์
iOS+ (แพลตฟอร์ม Apple)
ส่งออกโปรเจ็กต์ไปยังพื้นที่ทำงาน Xcode จากกล่องโต้ตอบ Build Settings
สร้างแอป
สําหรับแพลตฟอร์ม Apple ปลั๊กอิน Firebase Unity Editor โดยอัตโนมัติ กำหนดค่าโปรเจ็กต์ Xcode เพื่อสร้างและอัปโหลด ไฟล์สัญลักษณ์ที่เข้ากันได้กับ Crashlytics ไปยังเซิร์ฟเวอร์ Firebase สำหรับแต่ละบิลด์
Android
จากกล่องโต้ตอบการตั้งค่าการสร้าง ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
ส่งออกไปยังโปรเจ็กต์ Android Studio เพื่อสร้างโปรเจ็กต์ หรือ
สร้าง APK โดยตรงจาก Unity Editor
ก่อนสร้าง ให้ตรวจสอบว่าได้เลือกช่องทําเครื่องหมายสําหรับ Create 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 ใช้ Flag นี้เฉพาะในกรณีที่คุณเพิ่ม
ในการกำหนดค่าบิลด์และต้องการลบล้างเพื่อใช้ 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
เพื่ออัปโหลด ไฟล์สัญลักษณ์
เรียกใช้แอป เมื่อแอปทำงานแล้ว ให้ดูบันทึกของอุปกรณ์และรอ ข้อยกเว้นที่จะทริกเกอร์จาก
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 หน้าแดชบอร์ด วิธีนี้ช่วยให้คุณมุ่งเน้นแดชบอร์ดไปที่บิลด์ที่เฉพาะเจาะจงได้ดีขึ้น