การเริ่มต้นอย่างรวดเร็วนี้จะอธิบายวิธีตั้งค่า 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 ใหม่ ให้เปิดใช้งาน Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
ขั้นตอนที่ 1 : เพิ่ม Crashlytics SDK ลงในแอปของคุณ
โปรดทราบว่าเมื่อคุณลงทะเบียนโปรเจ็กต์ Unity กับโปรเจ็กต์ Firebase คุณอาจดาวน์โหลด Firebase Unity SDK แล้วและเพิ่มแพ็คเกจที่อธิบายไว้ในขั้นตอนต่อไปนี้
ดาวน์โหลด Firebase Unity SDK จากนั้นแตกไฟล์ SDK ในที่ที่สะดวก Firebase Unity SDK ไม่ใช่เฉพาะแพลตฟอร์ม
ในโปรเจ็กต์ Unity ที่เปิดอยู่ ให้ไปที่ Assets > Import Package > Custom Package
จาก SDK ที่คลายซิปแล้ว ให้เลือกเพื่อนำเข้า Crashlytics SDK (
FirebaseCrashlytics.unitypackage
)หากต้องการใช้ประโยชน์จาก บันทึกเบรดครัมบ์ ให้เพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ (
FirebaseAnalytics.unitypackage
) ตรวจสอบให้แน่ใจว่า เปิดใช้งาน Google Analytics ในโปรเจ็กต์ Firebase ของคุณในหน้าต่าง นำเข้า Unity Package คลิก นำเข้า
ขั้นตอนที่ 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+ (แพลตฟอร์มแอปเปิล)
จากกล่องโต้ตอบ การตั้งค่า Build ให้ส่งออกโปรเจ็กต์ของคุณไปยังพื้นที่ทำงาน Xcode
สร้างแอปของคุณ
สำหรับแพลตฟอร์ม Apple ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode ของคุณโดยอัตโนมัติเพื่อสร้างและอัปโหลดไฟล์สัญลักษณ์ที่เข้ากันได้กับ Crashlytics ไปยังเซิร์ฟเวอร์ Firebase สำหรับแต่ละบิลด์
หุ่นยนต์
จากกล่องโต้ตอบ การตั้งค่า Build ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้:
ส่งออกไปยังโครงการ Android Studio เพื่อสร้างโครงการของคุณ หรือ
สร้าง APK ของคุณโดยตรงจาก Unity Editor
ก่อนสร้าง ตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายในช่อง สร้างสัญลักษณ์.zip ในกล่องโต้ตอบ การตั้งค่าบิวด์ แล้ว
เมื่อบิลด์ของคุณเสร็จสิ้น ให้สร้างไฟล์สัญลักษณ์ที่เข้ากันได้กับ 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
ต่อไปนี้เป็นสองวิธีในการค้นหารหัสแอป Firebase ของคุณ:
ในไฟล์
google-services.json
รหัสแอปของคุณคือค่าmobilesdk_app_id
หรือในคอนโซล Firebase ให้ไปที่ การตั้งค่าโครงการ เลื่อนลงไปที่การ์ด แอปของคุณ จากนั้นคลิกที่แอป Firebase ที่ต้องการเพื่อค้นหารหัสแอป
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 คุณจะต้องบังคับการทดสอบข้อขัดข้อง
ค้นหา
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"); } } }
สร้างแอปของคุณและอัปโหลดข้อมูลสัญลักษณ์หลังจากสร้างเสร็จแล้ว
iOS+ : ปลั๊กอิน Firebase Unity Editor จะกำหนดค่าโปรเจ็กต์ Xcode ของคุณโดยอัตโนมัติเพื่ออัปโหลดไฟล์สัญลักษณ์ของคุณ
Android : สำหรับแอป Android ของคุณที่ใช้ IL2CPP ให้เรียกใช้คำสั่ง Firebase CLI
crashlytics:symbols:upload
เพื่ออัปโหลดไฟล์สัญลักษณ์ของคุณ
เรียกใช้แอปของคุณ เมื่อแอปของคุณทำงาน ให้ดูบันทึกของอุปกรณ์และรอให้ข้อยกเว้นทริกเกอร์จาก
CrashlyticsTester
iOS+ : ดูบันทึกในบานหน้าต่างด้านล่างของ Xcode
Android : ดูบันทึกโดยการรันคำสั่งต่อไปนี้ในเทอร์มินัล:
adb logcat
ไปที่ แดชบอร์ด 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 วิธีนี้ช่วยให้คุณมุ่งความสนใจไปที่แดชบอร์ดของคุณไปที่บิวด์เฉพาะได้ดีขึ้น