Firebase Crashlytics का इस्तेमाल शुरू करना

इस क्विकस्टार्ट में, Firebase Crashlytics SDK टूल की मदद से अपने ऐप्लिकेशन में Firebase Crashlytics सेट अप करने का तरीका बताया गया है. इसकी मदद से, Firebase कंसोल में क्रैश की पूरी रिपोर्ट देखी जा सकती है.

Crashlytics को सेट अप करने के लिए, Firebase कंसोल और आपके आईडीई, दोनों में टास्क जोड़े जाते हैं. जैसे, Firebase कॉन्फ़िगरेशन फ़ाइल और Crashlytics SDK टूल जोड़ना. सेटअप पूरा करने के लिए, आपको Firebase को अपनी पहली क्रैश रिपोर्ट भेजने के लिए, टेस्ट क्रैश को ज़बरदस्ती करना होगा.

वेब कंटेनर इंस्टॉल करने से पहले

  1. अगर आपने पहले से ऐसा नहीं किया है, तो अपने Unity प्रोजेक्ट में Firebase जोड़ें. अगर आपके पास Unity प्रोजेक्ट नहीं है, तो ऐप्लिकेशन का सैंपल डाउनलोड किया जा सकता है.

  2. सुझाव: अपने-आप ब्रेडक्रंब लॉग पाने के लिए, आपको अपने Firebase प्रोजेक्ट में Google Analytics चालू करना होगा. इससे उपयोगकर्ता की उन कार्रवाइयों को समझने में मदद मिलेगी जो क्रैश होने, नुकसान न पहुंचाने वाली या ANR इवेंट की वजह से होती हैं.

    • अगर आपके मौजूदा Firebase प्रोजेक्ट में Google Analytics चालू नहीं है, तो आप Firebase कंसोल में > प्रोजेक्ट सेटिंग के इंटिग्रेशन टैब से Google Analytics को चालू कर सकते हैं.

    • अगर कोई नया Firebase प्रोजेक्ट बनाया जा रहा है, तो प्रोजेक्ट बनाने के वर्कफ़्लो के दौरान Google Analytics चालू करें.

पहला चरण: अपने ऐप्लिकेशन में Crashlytics SDK टूल जोड़ना

ध्यान दें कि अपने Unity प्रोजेक्ट को Firebase प्रोजेक्ट के साथ रजिस्टर करने पर, हो सकता है कि आपने पहले से ही Firebase Unity SDK टूल डाउनलोड कर लिया हो और यहां दिए गए पैकेज को जोड़ लिया हो.

  1. Firebase Unity SDK डाउनलोड करें. इसके बाद, SDK टूल को किसी दूसरी जगह पर अनज़िप करें. Firebase यूनिटी SDK टूल, प्लैटफ़ॉर्म के हिसाब से नहीं होता.

  2. अपने खुले हुए Unity प्रोजेक्ट में, ऐसेट > पैकेज इंपोर्ट करें > कस्टम पैकेज पर जाएं.

  3. अनज़िप किए गए SDK टूल से, Crashlytics SDK (FirebaseCrashlytics.unitypackage) को इंपोर्ट करने का विकल्प चुनें.

    ब्रेडक्रंब लॉग का फ़ायदा पाने के लिए, अपने ऐप्लिकेशन (FirebaseAnalytics.unitypackage) में Google Analytics के लिए Firebase SDK टूल भी जोड़ें. पक्का करें कि आपके Firebase प्रोजेक्ट में Google Analytics चालू हो.

  4. Unity पैकेज को इंपोर्ट करें विंडो में, इंपोर्ट करें पर क्लिक करें.

दूसरा चरण: Crashlytics को शुरू करें

  1. एक नई C# स्क्रिप्ट बनाएं. इसके बाद, उसे सीन में GameObject में जोड़ें.

    1. अपना पहला सीन खोलें. इसके बाद, CrashlyticsInitializer नाम का एक खाली GameObject बनाएं.

    2. नए ऑब्जेक्ट के लिए इंस्पेक्टर में जाकर, कॉम्पोनेंट जोड़ें पर क्लिक करें.

    3. अपनी CrashlyticsInit स्क्रिप्ट को चुनकर, उसे CrashlyticsInitializer ऑब्जेक्ट में जोड़ें.

  2. स्क्रिप्ट की Start तरीके में Crashlytics को शुरू करें:

    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()
        // ...
    }

तीसरा चरण: (सिर्फ़ Android के लिए) सिंबल अपलोड करने की सुविधा सेट अप करना

यह चरण सिर्फ़ उन Android ऐप्लिकेशन के लिए ज़रूरी है जो IL2CPP का इस्तेमाल करते हैं.

  • Unity के मोनो स्क्रिप्टिंग बैकएंड का इस्तेमाल करने वाले Android ऐप्लिकेशन के लिए, यह तरीका ज़रूरी नहीं है.

  • Apple प्लैटफ़ॉर्म ऐप्लिकेशन के लिए, यह तरीका ज़रूरी नहीं है, क्योंकि Firebase Unity Editor प्लगिन, सिंबल अपलोड करने के लिए आपके Xcode प्रोजेक्ट को अपने-आप कॉन्फ़िगर कर देता है.

Crashlytics के Unity SDK 8.6.1+ के वर्शन में, एनडीके क्रैश की रिपोर्ट अपने-आप शामिल हो जाती है. इससे Crashlytics, Android पर Unity IL2CPP के क्रैश होने की जानकारी अपने-आप भेज सकता है. हालांकि, Crashlytics के डैशबोर्ड में, नेटिव लाइब्रेरी के क्रैश होने के बाद सिम्बॉलिकेट किए गए स्टैक ट्रेस देखने के लिए, आपको Firebase सीएलआई का इस्तेमाल करके, बिल्ड के समय सिंबल की जानकारी अपलोड करनी होगी.

सिंबल अपलोड करने का सेट अप करने के लिए, Firebase सीएलआई इंस्टॉल करने के निर्देशों का पालन करें.

अगर आपने सीएलआई को पहले ही इंस्टॉल कर लिया है, तो उसका सबसे नया वर्शन पर अपडेट करना न भूलें.

चौथा चरण: अपना प्रोजेक्ट बनाना और सिंबल अपलोड करना

iOS+ (Apple प्लैटफ़ॉर्म)

  1. बिल्ड सेटिंग डायलॉग से, अपने प्रोजेक्ट को Xcode फ़ाइल फ़ोल्डर में एक्सपोर्ट करें.

  2. अपना ऐप्लिकेशन बनाएं.

    Apple प्लैटफ़ॉर्म के लिए, Firebase Unity Editor प्लगिन आपके Xcode प्रोजेक्ट को अपने-आप कॉन्फ़िगर करता है, ताकि हर बिल्ड के लिए Firebase सर्वर पर Crashlytics के साथ काम करने वाली सिंबल फ़ाइल जनरेट और अपलोड की जा सके.

Android

  1. बिल्ड सेटिंग डायलॉग से, इनमें से कोई एक काम करें:

    • अपना प्रोजेक्ट बनाने के लिए किसी Android Studio प्रोजेक्ट में एक्सपोर्ट करें; या

    • सीधे Unity Editor से अपना APK बनाएं.
      बनाने से पहले, यह पक्का कर लें कि बिल्ड सेटिंग डायलॉग में सिंबल बनाएं के चेकबॉक्स पर सही का निशान लगा हो.

  2. बिल्ड पूरा होने के बाद, Crashlytics के साथ काम करने वाली सिंबल फ़ाइल जनरेट करें और Firebase सीएलआई कमांड चलाकर उसे Firebase सर्वर पर अपलोड करें:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: आपका Firebase Android ऐप्लिकेशन आईडी (आपके पैकेज का नाम नहीं)
      Firebase Android ऐप्लिकेशन आईडी का उदाहरण: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS: सिंबल फ़ाइल का पाथ, जिसे सीएलआई जनरेट करता है

      • किसी Android Studio प्रोजेक्ट में एक्सपोर्ट किया गया — PATH/TO/SYMBOLS, unityLibrary/symbols डायरेक्ट्री है. यह Gradle या Android Studio से ऐप्लिकेशन बनाने के बाद, एक्सपोर्ट किए गए प्रोजेक्ट रूट में बनती है.

      • APK को सीधे Unity के अंदर से बनाया जाता है — PATH/TO/SYMBOLS आपका बिल्ड पूरा होने के बाद, प्रोजेक्ट रूट डायरेक्ट्री में जनरेट की गई ज़िप की गई सिंबल फ़ाइल का पाथ होता है (उदाहरण के लिए: myproject/myapp-1.0-v100.symbols.zip).

    सिंबल फ़ाइल जनरेट करने और अपलोड करने के लिए, Firebase सीएलआई कमांड का इस्तेमाल करने के बेहतर विकल्प देखें

    फ़्लैग करें जानकारी
    --generator=csym

    यह डिफ़ॉल्ट ब्रेकपैड जनरेटर के बजाय, लेगसी cSYM सिंबल फ़ाइल जनरेटर का इस्तेमाल करता है

    इस्तेमाल करने का सुझाव नहीं दिया जाता. हमारा सुझाव है कि आप डिफ़ॉल्ट ब्रेकपैड सिंबल फ़ाइल जनरेटर का इस्तेमाल करें.

    --generator=breakpad

    ब्रेकपैड सिंबल के फ़ाइल जनरेटर का इस्तेमाल करता है

    ध्यान दें कि सिंबल फ़ाइल जनरेट करने के लिए डिफ़ॉल्ट तरीका Breakpad है. इस फ़्लैग का इस्तेमाल सिर्फ़ तब करें, जब आपने symbolGenerator { csym() } को अपने बिल्ड कॉन्फ़िगरेशन में जोड़ा हो और आपको Breakpad इस्तेमाल करने के लिए इसे बदलना हो.

    --dry-run

    सिंबल वाली फ़ाइलें जनरेट करता है, लेकिन उन्हें अपलोड नहीं करता

    अगर आपको भेजी गई फ़ाइलों के कॉन्टेंट की जांच करनी है, तो यह फ़्लैग उपयोगी होता है.

    --debug डीबग करने के बारे में ज़्यादा जानकारी देता है

पांचवां चरण: सेटअप पूरा करने के लिए, टेस्ट क्रैश को हर हाल में पूरा करना

Crashlytics का सेट अप पूरा करने और Firebase कंसोल के Crashlytics डैशबोर्ड में शुरुआती डेटा देखने के लिए, आपको ज़बरदस्ती टेस्ट बंद करना होगा.

  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: IL2CPP का इस्तेमाल करने वाले अपने Android ऐप्लिकेशन के लिए, Firebase CLI crashlytics:symbols:upload कमांड चलाकर अपनी सिंबल फ़ाइल अपलोड करें.

  3. अपना ऐप्लिकेशन चलाएं. ऐप्लिकेशन चलने के बाद, डिवाइस लॉग देखें और CrashlyticsTester से अपवाद ट्रिगर होने का इंतज़ार करें.

    • iOS+: Xcode के निचले पैनल में लॉग देखें.

    • Android: टर्मिनल में इस निर्देश को चलाकर लॉग देखें: adb logcat.

  4. अपने टेस्ट क्रैश को देखने के लिए Firebase कंसोल के Crashlytics डैशबोर्ड पर जाएं.

    अगर आपने कंसोल रीफ़्रेश कर दिया है और पांच मिनट बाद भी टेस्ट क्रैश नहीं दिख रहा है, तो डीबग लॉगिंग को चालू करें. इससे आपको पता चलेगा कि आपका ऐप्लिकेशन क्रैश रिपोर्ट भेज रहा है या नहीं.


बस, हो गया. Crashlytics, अब आपके ऐप्लिकेशन को क्रैश होने से बचाने के लिए उसे मॉनिटर कर रहा है. अपनी सभी रिपोर्ट और आंकड़ों को देखने और उनकी जांच करने के लिए, Crashlytics डैशबोर्ड पर जाएं.

अगले चरण

  • (सुझाया गया) IL2CPP का इस्तेमाल करने वाले Android ऐप्लिकेशन के लिए, GWP-ASan रिपोर्ट इकट्ठा करके, नेटिव मेमोरी की गड़बड़ियों की वजह से होने वाले क्रैश को डीबग करने में मदद पाएं. मेमोरी से जुड़ी ये गड़बड़ियां, आपके ऐप्लिकेशन में मेमोरी के ठीक से काम न करने की वजह से हो सकती हैं. यही वजह है कि ऐप्लिकेशन के लिए सुरक्षा से जुड़े जोखिम पैदा हो सकते हैं. डीबग करने की इस सुविधा का फ़ायदा पाने के लिए, पक्का करें कि आपका ऐप्लिकेशन Unity के लिए नए Crashlytics SDK टूल (v10.7.0+) का इस्तेमाल करता हो और उसमें GWP-ASan को साफ़ तौर पर चालू किया गया हो (इसके लिए, आपको अपने Android ऐप्लिकेशन मेनिफ़ेस्ट में बदलाव करना होगा.
  • Google Play के साथ इंटिग्रेट करें, ताकि Google Play ट्रैक के हिसाब से, अपने Android ऐप्लिकेशन की क्रैश रिपोर्ट को सीधे Crashlytics डैशबोर्ड में फ़िल्टर किया जा सके. इससे आपको अपने डैशबोर्ड को खास बिल्ड पर बेहतर तरीके से फ़ोकस करने में मदद मिलती है.