| प्लैटफ़ॉर्म चुनें: | iOS+ Android Android NDK Flutter Unity |
इस गाइड में, Unity प्रोजेक्ट में Firebase Crashlytics का इस्तेमाल शुरू करने का तरीका बताया गया है.
अपने ऐप्लिकेशन में Firebase Crashlytics SDK टूल सेट अप करने के बाद, आपको Firebase कंसोल में क्रैश की पूरी रिपोर्ट मिल सकती है.
Crashlytics को सेट अप करने के लिए, Firebase कंसोल और आईडीई, दोनों में टास्क पूरे करने होंगे. जैसे, Firebase कॉन्फ़िगरेशन फ़ाइल और Crashlytics SDK टूल जोड़ना. सेटअप पूरा करने के लिए, आपको टेस्ट क्रैश को ज़बरदस्ती बंद करना होगा, ताकि Firebase को पहली क्रैश रिपोर्ट भेजी जा सके.
शुरू करने से पहले
अगर आपने पहले से ही ऐसा नहीं किया है, तो अपने Unity प्रोजेक्ट में Firebase जोड़ें. अगर आपके पास Unity प्रोजेक्ट नहीं है, तो सैंपल के तौर पर मिला ऐप्लिकेशन डाउनलोड किया जा सकता है.
सुझाव: क्रैश, नॉन-फ़ेटल या एएनआर इवेंट से पहले उपयोगकर्ता की कार्रवाइयों को समझने के लिए, ब्रेडक्रंब लॉग अपने-आप जनरेट होने की सुविधा चालू करें. इसके लिए, आपको अपने Firebase प्रोजेक्ट में Google Analytics को चालू करना होगा.
अगर आपको नया Firebase प्रोजेक्ट बनाना है, तो प्रोजेक्ट बनाने के वर्कफ़्लो के दौरान Google Analytics को चालू करें.
अगर किसी ऐसे मौजूदा Firebase प्रोजेक्ट का इस्तेमाल किया जा रहा है जिसमें Google Analytics चालू नहीं है, तो उसे चालू करने के लिए Firebase कंसोल के
सेटिंग > इंटिग्रेशन पेज पर जाएं.
पहला चरण: अपने ऐप्लिकेशन में Crashlytics SDK टूल जोड़ें
ध्यान दें कि जब आपने अपने Unity प्रोजेक्ट को Firebase प्रोजेक्ट के साथ रजिस्टर किया था, तब हो सकता है कि आपने Firebase Unity SDK टूल पहले ही डाउनलोड कर लिया हो. साथ ही, यहां बताए गए चरणों में दिए गए पैकेज जोड़ लिए हों.
Firebase Unity SDK डाउनलोड करें. इसके बाद, SDK टूल को किसी सुविधाजनक जगह पर अनज़िप करें. Firebase Unity SDK टूल, किसी खास प्लैटफ़ॉर्म के लिए नहीं है.
अपने खुले हुए Unity प्रोजेक्ट में, Assets > Import Package > Custom Package पर जाएं.
अनज़िप किए गए एसडीके से, Crashlytics एसडीके (
FirebaseCrashlytics.unitypackage) को इंपोर्ट करने के लिए चुनें.ब्रेडक्रंब लॉग का फ़ायदा पाने के लिए, अपने ऐप्लिकेशन (
FirebaseAnalytics.unitypackage) में Google Analytics के लिए Firebase SDK टूल भी जोड़ें. पक्का करें कि आपके Firebase प्रोजेक्ट में Google Analytics चालू हो.Import Unity Package विंडो में, Import पर क्लिक करें.
दूसरा चरण: Crashlytics को शुरू करना
कोई नई C# स्क्रिप्ट बनाएं. इसके बाद, उसे सीन में मौजूद किसी
GameObjectमें जोड़ें.अपना पहला सीन खोलें. इसके बाद,
CrashlyticsInitializerनाम का एक खालीGameObjectबनाएं.नए ऑब्जेक्ट के लिए, Inspector में जाकर Add Component पर क्लिक करें.
CrashlyticsInitializerऑब्जेक्ट में जोड़ने के लिए, अपनीCrashlyticsInitस्क्रिप्ट चुनें.
स्क्रिप्ट के
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 प्रोजेक्ट को अपने-आप कॉन्फ़िगर कर देता है.
Unity (v8.6.1+) के लिए Crashlytics SDK में, एनडीके क्रैश की रिपोर्टिंग अपने-आप शामिल हो जाती है. इससे Crashlytics, Android पर Unity IL2CPP के क्रैश होने की रिपोर्ट अपने-आप भेज पाता है. हालांकि, Crashlytics डैशबोर्ड में नेटिव लाइब्रेरी के क्रैश होने से जुड़े सिंबॉलिकेट किए गए स्टैक ट्रेस देखने के लिए, आपको Firebase सीएलआई का इस्तेमाल करके, बिल्ड के समय सिंबल की जानकारी अपलोड करनी होगी.
सिंबल अपलोड करने के लिए, Firebase सीएलआई इंस्टॉल करने के निर्देशों का पालन करें.
अगर आपने पहले से ही सीएलआई इंस्टॉल किया है, तो पक्का करें कि आपने इसे नए वर्शन पर अपडेट किया हो.
चौथा चरण: अपना प्रोजेक्ट बनाना और सिंबल अपलोड करना
iOS+ (Apple प्लैटफ़ॉर्म)
Build Settings डायलॉग बॉक्स से, अपने प्रोजेक्ट को Xcode वर्कस्पेस में एक्सपोर्ट करें.
अपना ऐप्लिकेशन बनाएं.
Apple प्लैटफ़ॉर्म के लिए, Firebase Unity Editor प्लग इन, आपके Xcode प्रोजेक्ट को अपने-आप कॉन्फ़िगर करता है. इससे हर बिल्ड के लिए, Crashlytics के साथ काम करने वाली सिंबल फ़ाइल जनरेट होती है और Firebase सर्वर पर अपलोड होती है.
Android
Build Settings डायलॉग बॉक्स में जाकर, इनमें से कोई एक काम करें:
अपने प्रोजेक्ट को बनाने के लिए, उसे Android Studio प्रोजेक्ट में एक्सपोर्ट करें; या
सीधे Unity Editor से अपना APK बनाएं.
बिल्ड करने से पहले, पक्का करें कि बिल्ड सेटिंग डायलॉग बॉक्स में, symbols.zip बनाएं के लिए चेकबॉक्स पर सही का निशान लगा हो.
बिल्ड पूरा होने के बाद, Crashlytics के साथ काम करने वाली सिंबल फ़ाइल जनरेट करें. इसके बाद, Firebase सीएलआई कमांड चलाकर, उसे Firebase सर्वर पर अपलोड करें:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: आपके Firebase Android ऐप्लिकेशन का आईडी (पैकेज का नाम नहीं)
Firebase Android ऐप्लिकेशन के आईडी का उदाहरण:1:567383003300:android:17104a2ced0c9b9bPATH/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=breakpadBreakpad सिंबल फ़ाइल जनरेटर का इस्तेमाल करना
ध्यान दें कि सिंबल फ़ाइल जनरेट करने के लिए, डिफ़ॉल्ट रूप से Breakpad का इस्तेमाल किया जाता है. इस फ़्लैग का इस्तेमाल सिर्फ़ तब करें, जब आपने अपने बिल्ड कॉन्फ़िगरेशन में
जोड़ा हो और आपको इसकी जगह Breakpad का इस्तेमाल करना हो.symbolGenerator { csym() }--dry-runसिंबल फ़ाइलें जनरेट करता है, लेकिन उन्हें अपलोड नहीं करता
अगर आपको भेजी गई फ़ाइलों के कॉन्टेंट की जांच करनी है, तो यह फ़्लैग काम का है.
--debugडीबग करने की ज़्यादा जानकारी देता है
पांचवां चरण: सेटअप पूरा करने के लिए, टेस्ट क्रैश को फ़ोर्स करना
Crashlytics को सेट अप करने और Firebase कंसोल के Crashlytics डैशबोर्ड में शुरुआती डेटा देखने के लिए, आपको टेस्ट क्रैश को फ़ोर्स करना होगा.
कोई मौजूदा
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: IL2CPP का इस्तेमाल करने वाले Android ऐप्लिकेशन के लिए, Firebase सीएलआई
crashlytics:symbols:uploadकमांड चलाएं. इससे सिंबल फ़ाइल अपलोड की जा सकेगी.
अपना ऐप्लिकेशन चलाएं. ऐप्लिकेशन चलने के बाद, डिवाइस लॉग देखें और
CrashlyticsTesterसे अपवाद ट्रिगर होने का इंतज़ार करें.iOS+: Xcode के सबसे नीचे मौजूद पैनल में लॉग देखें.
Android: टर्मिनल में यह कमांड चलाकर लॉग देखें:
adb logcat.
Firebase कंसोल में, DevOps और यूज़र ऐक्टिविटी > Crashlytics डैशबोर्ड पर जाकर, क्रैश की जांच वाली रिपोर्ट देखें.
अगर आपने कंसोल को रीफ़्रेश किया है और पांच मिनट के बाद भी आपको टेस्ट क्रैश नहीं दिख रहा है, तो डीबग लॉगिंग चालू करें. इससे आपको यह पता चलेगा कि आपका ऐप्लिकेशन, क्रैश रिपोर्ट भेज रहा है या नहीं.
बस, हो गया! Crashlytics अब आपके ऐप्लिकेशन के क्रैश होने की निगरानी कर रहा है. अपनी सभी रिपोर्ट और आंकड़े देखने और उनकी जांच करने के लिए, Crashlytics डैशबोर्ड पर जाएं.
अगले चरण
(सुझाया गया) IL2CPP का इस्तेमाल करने वाले Android ऐप्लिकेशन के लिए, नेटिव मेमोरी की गड़बड़ियों की वजह से होने वाले क्रैश को डीबग करने में मदद पाएं. इसके लिए, GWP-ASan रिपोर्ट इकट्ठा करें. मेमोरी से जुड़ी ये गड़बड़ियां, आपके ऐप्लिकेशन में मेमोरी के खराब होने से जुड़ी हो सकती हैं. यह ऐप्लिकेशन की सुरक्षा से जुड़े जोखिमों की मुख्य वजह है. डीबग करने की इस सुविधा का फ़ायदा पाने के लिए, पक्का करें कि आपका ऐप्लिकेशन, Unity के लिए Crashlytics SDK टूल के सबसे नए वर्शन (v10.7.0+) का इस्तेमाल करता हो. साथ ही, उसमें GWP-ASan को साफ़ तौर पर चालू किया गया हो. इसके लिए, आपको अपने Android ऐप्लिकेशन मेनिफ़ेस्ट में बदलाव करना होगा.
क्रैश रिपोर्ट के सेटअप को पसंद के मुताबिक बनाएं. इसके लिए, ऑप्ट-इन रिपोर्टिंग, लॉग, कुंजियां, और गंभीर नहीं होने वाली गड़बड़ियों को ट्रैक करने की सुविधा जोड़ें.
अपने डेटा को BigQuery या Cloud Logging में एक्सपोर्ट करें. इससे आपको बेहतर विश्लेषण और सुविधाओं का ऐक्सेस मिलेगा. जैसे, डेटा के बारे में क्वेरी करना, कस्टम डैशबोर्ड बनाना, और कस्टम अलर्ट सेट अप करना.