इस क्विकस्टार्ट में बताया गया है कि कैसे Firebase Crashlytics SDK के साथ अपने ऐप्लिकेशन में Firebase Crashlytics को सेट अप किया जाता है, ताकि आप 'Firebase कंसोल' में ऐप्लिकेशन की क्रैश रिपोर्ट से जुड़ी पूरी जानकारी पा सकें.
Crashlytics को सेट अप करने के लिए, Firebase कंसोल और आपके IDE, दोनों में टास्क होने ज़रूरी हैं. जैसे, Firebase कॉन्फ़िगरेशन फ़ाइल और Crashlytics SDK टूल जोड़ना. सेटअप पूरा करने के लिए, आपको Firebase को अपनी पहली क्रैश रिपोर्ट भेजने के लिए, टेस्ट क्रैश को ज़बरदस्ती करना होगा.
शुरू करने से पहले
अगर आपने पहले से अपने Unity प्रोजेक्ट में Firebase नहीं जोड़ा है, तो इसे जोड़ें. अगर आपके पास Unity प्रोजेक्ट नहीं है, तो सैंपल ऐप्लिकेशन डाउनलोड करें.
इसका सुझाव दिया जाता है: अगर आपको उपयोगकर्ता की कार्रवाइयों के बारे में जानने के लिए, अपने-आप ब्रेडक्रंब लॉग मिलेंगे, जिनमें क्रैश, नुकसान न पहुंचाने वाला या ANR इवेंट हुआ, तो आपको अपने Firebase प्रोजेक्ट में Google Analytics की सुविधा चालू करनी होगी.
अगर आपके मौजूदा Firebase प्रोजेक्ट में Google Analytics चालू नहीं है, तो Firebase कंसोल में
के > प्रोजेक्ट सेटिंगइंटिग्रेशन टैब से, Google Analytics को चालू किया जा सकता है. अगर आपको नया Firebase प्रोजेक्ट बनाना है, तो प्रोजेक्ट बनाने के वर्कफ़्लो के दौरान Google Analytics चालू करें.
पहला चरण: अपने ऐप्लिकेशन में Crashlytics SDK टूल जोड़ें
ध्यान दें, अगर आपने Firebase प्रोजेक्ट के साथ अपना Unity प्रोजेक्ट रजिस्टर किया है, तो हो सकता है कि आपने पहले ही Firebase Unity SDK टूल डाउनलोड कर लिया हो और यहां बताए गए पैकेज को जोड़ लिया हो.
Firebase Unity SDK टूल डाउनलोड करें. इसके बाद, SDK टूल को अपनी सुविधा के हिसाब से अनज़िप करें. Firebase Unity SDK टूल, प्लैटफ़ॉर्म के हिसाब से नहीं होता.
अपने ओपन यूनिटी प्रोजेक्ट में, ऐसेट > पैकेज इंपोर्ट करें > कस्टम पैकेज पर जाएं.
अनज़िप किए गए SDK टूल से, Crashlytics SDK टूल (
FirebaseCrashlytics.unitypackage
) इंपोर्ट करने के लिए चुनें.ब्रेडक्रंब लॉग का फ़ायदा पाने के लिए, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल भी जोड़ें (
FirebaseAnalytics.unitypackage
). पक्का करें कि आपके Firebase प्रोजेक्ट में Google Analytics चालू हो.Unity पैकेज को इंपोर्ट करें विंडो में, इंपोर्ट करें पर क्लिक करें.
दूसरा चरण: Crashlytics को शुरू करें
नई C# स्क्रिप्ट बनाएं. इसके बाद, उसे सीन में
GameObject
में जोड़ें.अपना पहला सीन खोलें. इसके बाद,
CrashlyticsInitializer
नाम का एक खालीGameObject
बनाएं.नए ऑब्जेक्ट के लिए जांच करने वाले टूल में, कॉम्पोनेंट जोड़ें पर क्लिक करें.
अपनी
CrashlyticsInit
स्क्रिप्ट को चुनकर, उसेCrashlyticsInitializer
ऑब्जेक्ट में जोड़ें.
स्क्रिप्ट के
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 यूनिटी एडिटर प्लगिन, आपके Xcode प्रोजेक्ट को अपने-आप कॉन्फ़िगर करता है, ताकि सिंबल अपलोड किए जा सकें.
Crashlytics के Unity SDK 8.6.1+ के बाद के वर्शन में, एनडीके की क्रैश रिपोर्टिंग अपने-आप शामिल हो जाती है. इससे Crashlytics, Android पर Unity IL2CPP क्रैश की जानकारी अपने-आप रिपोर्ट कर देता है. हालांकि, Crashlytics डैशबोर्ड में नेटिव लाइब्रेरी के क्रैश के लिए, सिंबल वाले स्टैक ट्रेस देखने के लिए, आपको Firebase सीएलआई का इस्तेमाल करके, बिल्ड टाइम के समय सिंबल की जानकारी अपलोड करनी होगी.
सिंबल अपलोड करने का तरीका सेट अप करने के लिए, Firebase सीएलआई इंस्टॉल करने के निर्देशों का पालन करें.
अगर आपने पहले ही सीएलआई इंस्टॉल कर लिया है, तो उसे इसके नए वर्शन में अपडेट करें.
चौथा चरण: अपना प्रोजेक्ट बनाएं और सिंबल अपलोड करें
iOS+ (Apple प्लैटफ़ॉर्म)
बिल्ड सेटिंग डायलॉग में जाकर, अपने प्रोजेक्ट को Xcode के फ़ाइल फ़ोल्डर में एक्सपोर्ट करें.
अपना ऐप्लिकेशन बनाएं.
Apple प्लैटफ़ॉर्म के लिए Firebase यूनिटी एडिटर प्लगिन, आपके Xcode प्रोजेक्ट को अपने-आप कॉन्फ़िगर करता है. ऐसा करने से, हर बिल्ड के लिए Firebase सर्वर पर Crashlytics के साथ काम करने वाली सिंबल फ़ाइल जनरेट और अपलोड की जाती है.
Android
सेटिंग बनाएं डायलॉग में जाकर, इनमें से कोई एक काम करें:
अपना प्रोजेक्ट बनाने के लिए, उसे किसी Android Studio प्रोजेक्ट में एक्सपोर्ट करें या
सीधे Unity Editor से अपना APK बनाएं.
बनाने से पहले, यह पक्का कर लें कि Create sign.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:17104a2ced0c9b9b
PATH/TO/SYMBOLS: सीएलआई से जनरेट की गई सिंबल फ़ाइल का पाथ
Android Studio प्रोजेक्ट में एक्सपोर्ट किया गया — PATH/TO/SYMBOLS,
unityLibrary/symbols
डायरेक्ट्री है. यह Gradle या Android Studio की मदद से ऐप्लिकेशन बनाने के बाद, एक्सपोर्ट किए गए प्रोजेक्ट रूट में बनाई जाती है.सीधे Unity से APK बनाया गया — आपके बिल्ड खत्म होने के बाद PATH/TO/SYMBOLS, प्रोजेक्ट रूट डायरेक्ट्री में जनरेट हुई ज़िप की गई सिंबल फ़ाइल का पाथ है (उदाहरण के लिए:
).myproject/myapp-1.0-v100.symbols.zip
सिंबल फ़ाइल जनरेट करने और अपलोड करने के लिए, Firebase सीएलआई कमांड का इस्तेमाल करने के लिए बेहतर विकल्प देखें
फ़्लैग करें जानकारी --generator=csym
डिफ़ॉल्ट ब्रेकपैड जनरेटर के बजाय, लेगसी cSYM सिंबल फ़ाइल जनरेटर का इस्तेमाल करता है
इसका इस्तेमाल करने का सुझाव नहीं दिया जाता. हमारा सुझाव है कि आप डिफ़ॉल्ट ब्रेकपैड सिंबल फ़ाइल जनरेटर का इस्तेमाल करें.
--generator=breakpad
ब्रेकपैड सिंबल फ़ाइल जनरेटर का इस्तेमाल करता है
ध्यान दें कि सिंबल फ़ाइल जनरेट करने का डिफ़ॉल्ट तरीका 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 CLI
crashlytics:symbols:upload
कमांड चलाएं.
अपना ऐप्लिकेशन चलाएं. ऐप्लिकेशन चलने के बाद, डिवाइस का लॉग देखें. इसके बाद,
CrashlyticsTester
से अपवाद ट्रिगर होने का इंतज़ार करें.iOS+: Xcode के सबसे नीचे वाले पैनल में लॉग देखें.
Android: टर्मिनल में यह निर्देश चलाकर लॉग देखें:
adb logcat
.
टेस्ट क्रैश देखने के लिए, Firebase कंसोल के Crashlytics डैशबोर्ड पर जाएं.
अगर आपने कंसोल रीफ़्रेश किया है और पांच मिनट के बाद भी टेस्ट क्रैश, नहीं दिखता है, तो डीबग लॉग करने की सुविधा चालू करके देखें कि आपका ऐप्लिकेशन क्रैश रिपोर्ट भेज रहा है या नहीं.
बस, हो गया. Crashlytics, अब आपके ऐप्लिकेशन के क्रैश होने पर नज़र रख रहा है. अपनी सभी रिपोर्ट और आंकड़ों को देखने और उनकी जांच करने के लिए, Crashlytics डैशबोर्ड पर जाएं.
अगले चरण
- (सुझाया गया) IL2CPP का इस्तेमाल करने वाले Android ऐप्लिकेशन के लिए, नेटिव मेमोरी की गड़बड़ियों की वजह से होने वाले क्रैश को डीबग करने में मदद पाएं. इसके लिए, GWP-ASan की रिपोर्ट इकट्ठा करें. मेमोरी से जुड़ी ये गड़बड़ियां आपके ऐप्लिकेशन में मेमोरी खराब होने की वजह से हो सकती हैं. यह ऐप्लिकेशन की सुरक्षा में जोखिम की सबसे बड़ी वजह है. डीबग करने की इस सुविधा का फ़ायदा पाने के लिए, पक्का करें कि आपका ऐप्लिकेशन Unity के लिए नए Crashlytics SDK टूल (v10.7.0+) का इस्तेमाल करता है. साथ ही, ऐप्लिकेशन में GWP-ASan की सुविधा को साफ़ तौर पर चालू किया गया है. इसके लिए, आपको अपने Android ऐप्लिकेशन मेनिफ़ेस्ट में बदलाव करना ज़रूरी है.
- ऑप्ट-इन रिपोर्टिंग, लॉग, कुंजी, और गंभीर गड़बड़ियों को ट्रैक करके, ऐप्लिकेशन की क्रैश रिपोर्ट को अपनी पसंद के मुताबिक सेटअप करें.
- Google Play के साथ इंटिग्रेट करें, ताकि Crashlytics डैशबोर्ड में, अपने Android ऐप्लिकेशन की क्रैश रिपोर्ट को Google Play ट्रैक के हिसाब से फ़िल्टर किया जा सके. इससे अपने डैशबोर्ड को किसी खास बिल्ड पर बेहतर तरीके से फ़ोकस करने में मदद मिलती है.