Unity के लिए Crashlytics का इस्तेमाल शुरू करना

प्लैटफ़ॉर्म चुनें: iOS+ Android Android NDK Flutter Unity


इस गाइड में, Unity प्रोजेक्ट में Firebase Crashlytics का इस्तेमाल शुरू करने का तरीका बताया गया है.

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

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

शुरू करने से पहले

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

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

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

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

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

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

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

  2. खुले हुए Unity प्रोजेक्ट में, Assets > Import Package > Custom Package पर जाएं.

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

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

  4. Import Unity Package विंडो में, Import पर क्लिक करें.

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

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

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

    2. नए ऑब्जेक्ट के लिए, Inspector में Add Component पर क्लिक करें.

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

  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 के Mono स्क्रिप्टिंग बैकएंड का इस्तेमाल करने वाले Android ऐप्लिकेशन के लिए, इन चरणों को पूरा करने की ज़रूरत नहीं है.

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

Crashlytics SDK for Unity (v8.6.1+) में, NDK क्रैश रिपोर्टिंग की सुविधा अपने-आप शामिल होती है. इससे Crashlytics को Android पर Unity IL2CPP क्रैश की रिपोर्ट अपने-आप भेजने की अनुमति मिलती है. हालांकि, Crashlytics डैशबोर्ड में नेटिव लाइब्रेरी के क्रैश के लिए, सिंबोलाइज्ड स्टैक ट्रेस देखने के लिए, आपको Firebase CLI का इस्तेमाल करके, बिल्ड प्रोसेस में लगने वाले समय पर सिंबल की जानकारी अपलोड करनी होगी.

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

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

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

तब यह तरीका अपनाएं.

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

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

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

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

Android

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

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

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

  2. बिल्ड पूरा होने के बाद, Crashlytics के साथ काम करने वाली सिंबल फ़ाइल जनरेट करें. इसके बाद, Firebase CLI कमांड चलाकर, उसे 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

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

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

    --generator=breakpad

    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 console में, DevOps & Engagement > Crashlytics डैशबोर्ड पर जाएं. यहां आपको टेस्ट क्रैश की रिपोर्ट दिखेगी.

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


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

अगले चरण

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

  • क्रैश रिपोर्ट के सेटअप को अपनी पसंद के मुताबिक बनाएं. इसके लिए, ऑप्ट-इन रिपोर्टिंग, लॉग, कुंजियां, और नुकसान न पहुंचाने वाली गड़बड़ी को ट्रैक करने की सुविधा जोड़ें.

  • अपने डेटा को BigQuery या Cloud Logging में एक्सपोर्ट करें, ताकि आपको बेहतर विश्लेषण और सुविधाएं मिल सकें. जैसे, अपने डेटा के बारे में क्वेरी करना, कस्टम डैशबोर्ड बनाना, और कस्टम अलर्ट सेट अप करना.