คู่มือเริ่มต้นฉบับย่อนี้อธิบายวิธีตั้งค่า 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: เพิ่ม Crashlytics SDK ลงในแอป
โปรดทราบว่าเมื่อลงทะเบียนโปรเจ็กต์ Unity กับโปรเจ็กต์ Firebase แล้ว อาจดาวน์โหลด SDK Unity Firebase และเพิ่มแพ็กเกจแล้ว ตามที่อธิบายไว้ในขั้นตอนต่อไปนี้
ดาวน์โหลด Firebase Unity SDK แล้วแตกไฟล์ SDK ในที่ที่สะดวก SDK ของ Firebase Unity ไม่ได้เจาะจงแพลตฟอร์ม
ในโปรเจ็กต์ 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 ไม่จําเป็นต้องทำขั้นตอนเหล่านี้เนื่องจาก Firebase Unity ปลั๊กอิน Editor จะกำหนดค่าโปรเจ็กต์ 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 tags.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 ใช้แฟล็กนี้เมื่อคุณได้เพิ่มไว้เท่านั้น
ในการกำหนดค่าบิลด์ และต้องการลบล้างใช้ เบรกแพดแทน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 ข้อผิดพลาดที่เกี่ยวข้องกับหน่วยความจำเหล่านี้อาจเชื่อมโยงกับการเสียหายของหน่วยความจำภายในแอป ซึ่งเป็นสาเหตุหลักของช่องโหว่ด้านความปลอดภัยของแอป หากต้องการใช้ประโยชน์จากฟีเจอร์การแก้ไขข้อบกพร่องนี้ โปรดตรวจสอบว่าแอปของคุณ ใช้ SDK ของ Crashlytics ล่าสุดสำหรับ Unity (v10.7.0 ขึ้นไป) และมี เปิดใช้ GWP-ASan อย่างชัดแจ้ง (กำหนดให้คุณต้อง แก้ไขไฟล์ Manifest ของแอป Android)
- ปรับแต่งการตั้งค่ารายงานข้อขัดข้องโดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง
- ผสานรวมกับ Google Play เพื่อให้คุณกรองรายงานข้อขัดข้องของแอป Android ตามแทร็ก Google Play ได้โดยตรงในแดชบอร์ด Crashlytics ซึ่งจะช่วยให้คุณมุ่งเน้นแดชบอร์ดไปยังบิลด์ที่เฉพาะเจาะจงได้ดียิ่งขึ้น