android - मैं अपने एंड्रॉइड एप्लिकेशन से क्रैश-डेटा कैसे प्राप्त करूं?




crash stack-trace (20)

मैं अपने एंड्रॉइड एप्लिकेशन से क्रैश डेटा (कम से कम स्टैक निशान) कैसे प्राप्त कर सकता हूं? कम से कम जब मेरे डिवाइस पर केबल द्वारा पुनर्प्राप्त किया जा रहा है, लेकिन आदर्श रूप से जंगली पर चल रहे मेरे आवेदन के किसी भी उदाहरण से, ताकि मैं इसे बेहतर बना सकूं और इसे और अधिक ठोस बना सकूं।


Google Play डेवलपर कंसोल वास्तव में आपको उन ऐप्स से स्टैक निशान देता है जो क्रैश हो चुके हैं और रिपोर्ट भेज चुके हैं, जानकारी देखने में आपकी सहायता के लिए इसमें बहुत अच्छे चार्ट भी हैं, नीचे उदाहरण देखें:


Google ने आपको वास्तव में कितनी क्रैश रिपोर्ट प्राप्त की है। पहले आपको केवल मैन्युअल रिपोर्ट की गई बग रिपोर्ट मिली थी।

अंतिम डेवलपर सम्मेलन और एंड्रॉइड राजधानियों के परिचय के बाद से आपको उन उपयोगकर्ताओं से क्रैश रिपोर्ट भी मिलती हैं, जिन्होंने डायग्नोस्टिक डेटा साझा करने में सक्षम किया है।

आप एंड्रॉइड डिवाइस से एकत्रित सभी क्रैश देखेंगे जिनके उपयोगकर्ताओं ने स्वचालित रूप से उपयोग और डायग्नोस्टिक डेटा साझा करने का विकल्प चुना है। डेटा पिछले दो महीनों के लिए उपलब्ध है।

क्रैश और एप्लिकेशन प्रतिसाद नहीं दे रहा है (एएनआर) त्रुटियां


अब एक दिन फायरबेस क्रैश रिपोर्ट बहुत लोकप्रिय और उपयोग करने में आसान हैं। अधिक जानकारी के लिए कृपया निम्नलिखित लिंक देखें: फायरबेस क्रैश रिपोर्टिंग

आशा है इससे आपकी मदद होगी।


आप BugSense भी आज़मा सकते हैं। बगसेन सभी क्रैश रिपोर्ट एकत्र और विश्लेषण करता है और आपको सार्थक और दृश्य रिपोर्ट देता है। यह मुफ़्त है और एकीकृत करने के लिए कोड की केवल 1 पंक्ति है।

अस्वीकरण: मैं एक सह-संस्थापक हूं


आप केवल पुस्तकालय की बजाय इसके लिए एक संपूर्ण (सरल) सेवा का भी उपयोग कर सकते हैं। हमारी कंपनी ने अभी इसके लिए एक सेवा जारी की है: http://apphance.com

इसमें एक साधारण .jar लाइब्रेरी (एंड्रॉइड के लिए) है जिसे आप 5 मिनट में जोड़ते और एकीकृत करते हैं और फिर लाइब्रेरी न केवल क्रैश जानकारी एकत्र करती है बल्कि चल रहे एप्लिकेशन से लॉग भी होती है, साथ ही यह आपके परीक्षकों को सीधे डिवाइस से समस्याओं की रिपोर्ट करने देती है - संपूर्ण संदर्भ (डिवाइस रोटेशन, चाहे वह वाईफ़ाई से कनेक्ट हो या नहीं और अधिक)। आप बहुत अच्छे और उपयोगी वेब पैनल का उपयोग करके लॉग देख सकते हैं, जहां आप अपने एप्लिकेशन, क्रैश, लॉग, आंकड़े आदि के साथ सत्र ट्रैक कर सकते हैं। सेवा अब बीटा टेस्ट चरण में बंद है, लेकिन आप एक्सेस का अनुरोध कर सकते हैं और हम आपको बहुत जल्दी देते हैं।

अस्वीकरण: मैं पोलिडेडा का सीटीओ हूं, और सेवा के सह-निर्माता हूं।


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


एंड्रॉइड 2.2 में एंड्रॉइड मार्केट एप्लीकेशन से स्वचालित रूप से क्रैश रिपोर्ट प्राप्त करना संभव है:

एंड्रॉइड मार्केट ऐप के लिए नई बग रिपोर्टिंग सुविधा डेवलपर्स को अपने उपयोगकर्ताओं से क्रैश और फ्रीज रिपोर्ट प्राप्त करने में सक्षम बनाती है। जब वे अपने प्रकाशक खाते में लॉग इन करेंगे तो रिपोर्ट उपलब्ध होगी।

http://developer.android.com/sdk/android-2.2-highlights.html


कपड़े नामक एक उपकरण है, यह एक क्रैश विश्लेषणात्मक उपकरण है, जो आपको क्रैश रिपोर्ट प्राप्त करने की अनुमति देगा, जब आवेदन लाइव और विकास के दौरान तैनात किया जाएगा। इस एप्लिकेशन को आपके एप्लिकेशन में जोड़ना भी आसान था .. जब आपका एप्लिकेशन दुर्घटनाग्रस्त हो जाता है तो क्रैश की रिपोर्ट आपके fabric.io डैशबोर्ड से देखी जा सकती है। thw रिपोर्ट स्वचालित रूप से पकड़ लिया गया था। यह उपयोगकर्ता को अनुमति के लिए नहीं पूछेगा। चाहे वह बग / क्रैश रिपोर्ट भेजना चाहे। और यह पूरी तरह से स्वतंत्र है ... https://get.fabric.io/


त्रुटि रिपोर्ट को ट्रैक करने के लिए मुझे एक और शानदार वेब एप्लिकेशन मिला।

https://mint.splunk.com/

कॉन्फ़िगर करने के लिए चरणों की छोटी संख्या।

  1. उपरोक्त लिंक का उपयोग करके लॉगिन या साइन अप करें और कॉन्फ़िगर करें। एक बार आवेदन करने के बाद वे नीचे की तरह कॉन्फ़िगर करने के लिए एक लाइन प्रदान करेंगे।
Mint.initAndStartSession(YourActivity.this, "api_key");
  1. एप्लिकेशन के build.gradl में निम्न जोड़ें।
android {
...
    repositories {
        maven { url "https://mint.splunk.com/gradle/"}
    }
...
}

dependencies {
...
    compile "com.splunk.mint:mint:4.4.0"
...
}
  1. जिस कोड को हमने ऊपर कॉपी किया है उसे जोड़ें और इसे प्रत्येक गतिविधि में जोड़ें।

    Mint.initAndStartSession (YourActivity.this, "api_key");

बस। आप लॉगिन करते हैं और एप्लिकेशन डैशबोर्ड पर जाते हैं, आपको सभी त्रुटि रिपोर्ट मिल जाएगी।

उम्मीद है कि यह किसी की मदद करता है।


पार्टी के लिए देर, मैं समर्थन करता हूं और विश्वास करता हूं कि एसीआरए सभी के बीच सबसे अच्छा विकल्प है। सेटअप और कॉन्फ़िगर करना आसान है। मैंने ACRA का उपयोग करके क्रैश रिपोर्ट लाने के लिए सभी से इनपुट के साथ एक विस्तृत मार्गदर्शिका बनाई है और MandrillAp का उपयोग करके अपने ईमेल पते पर मेल खाता हूं।

पोस्ट करने के लिए लिंक: https://androidician.wordpress.com/2015/03/29/sending-crash-reports-with-acra-over-email-using-mandrill/

Github पर नमूना प्रोजेक्ट से लिंक करें: https://github.com/ayushhgoyal/AcraSample


मैं Bugsnag के संस्थापकों में से एक Bugsnag जिसे हमने बिल्कुल इस उद्देश्य के लिए डिजाइन किया है। बग्सगैग स्वचालित रूप से एंड्रॉइड ऐप्स में अनचाहे अपवादों को कैप्चर करता है और उन्हें हमारे डैशबोर्ड पर भेजता है, जहां आप डायग्नोस्टिक जानकारी में फिक्स और गोता को प्राथमिकता दे सकते हैं।

कुछ कोड स्निपेट के साथ, क्रैश रिपोर्टिंग सिस्टम का चयन या निर्माण करते समय विचार करने के लिए कुछ महत्वपूर्ण बातें यहां दी गई हैं:

  • स्वचालित रूप से अनचाहे अपवादों का पता लगाता है ( उदाहरण कोड )
  • डायग्नोस्टिक डेटा एकत्र करता है जैसे स्मृति उपयोग, डिवाइस जानकारी, आदि ( उदाहरण कोड )
  • प्रभावशाली समूह रूट कारण से एक साथ दुर्घटनाग्रस्त हो जाते हैं
  • आपको पुन: उत्पन्न करने में सहायता के लिए प्रत्येक क्रैश से पहले किए गए कार्यों को ट्रैक करने की अनुमति देता है ( उदाहरण कोड )

यदि आप एंड्रॉइड पर क्रैश हैंडलिंग / रिपोर्टिंग के आसपास कुछ बेहतरीन प्रथाओं को देखना चाहते हैं तो आप बग्सनाग की क्रैश रिपोर्टिंग लाइब्रेरी के लिए पूर्ण स्रोत कोड देख सकते हैं जो पूरी तरह से खुला स्रोत है, इसे अलग करने के लिए स्वतंत्र महसूस करें और इसे अपने स्वयं के अनुप्रयोगों में उपयोग करें!


मैं अपने एंड्रॉइड और आईओएस ऐप्स के लिए क्रिटरसिज्म का उपयोग कर रहा हूं - टेकक्रंच पर उनके बारे में सुना। अब तक उनके साथ बहुत खुश!


मैंने अपना खुद का संस्करण यहां बनाया: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html

यह मूल रूप से वही बात है, लेकिन मैं रिपोर्ट भेजने के लिए http कनेक्शन के बजाय मेल का उपयोग कर रहा हूं, और, अधिक महत्वपूर्ण, मैंने कुछ रिपोर्ट जैसे एप्लिकेशन संस्करण, ओएस संस्करण, फोन मॉडल, या मेरी रिपोर्ट में उपलब्ध स्मृति को जोड़ा। ।


यदि आप तुरंत जवाब चाहते हैं तो आप logcat उपयोग कर सकते हैं

$adb shell logcat -f /sdcard/logoutput.txt *:E

यदि अभी आपके लॉग में बहुत अधिक जंक है, तो इसे पहले साफ़ करने का प्रयास करें।

$adb shell logcat -c

फिर अपने ऐप को फिर से चलाने का प्रयास करें।


यह बहुत क्रूर है, लेकिन कहीं भी लॉगकैट चलाने के लिए संभव है, इसलिए किसी भी कैच ब्लॉक में एक त्वरित और गंदे हैक को जोड़ना है getRuntime().exec("logcat >> /sdcard/logcat.log");


वैकल्पिक क्रैश रिपोर्टिंग / अपवाद ट्रैकिंग सेवा के लिए Raygun.io - इसे एंड्रॉइड क्रैश को संभालने के लिए अच्छे तर्क का एक गुच्छा मिला है, जिसमें आपके ऐप में प्लग इन करते समय सभ्य उपयोगकर्ता अनुभव शामिल है (आपकी मुख्य गतिविधि में कोड की दो पंक्तियां और कुछ AndroidManifest में चिपकाए गए एक्सएमएल की रेखाएं)।

जब आपका ऐप दुर्घटनाग्रस्त हो जाता है, तो यह स्वचालित रूप से स्टैक ट्रेस, हार्ड / सॉफ़्टवेयर के लिए पर्यावरण डेटा, उपयोगकर्ता ट्रैकिंग जानकारी, आपके द्वारा निर्दिष्ट कोई भी कस्टम डेटा इत्यादि ले जाएगा। यह एपीआई को असीमित रूप से पोस्ट करता है ताकि यूआई थ्रेड को अवरुद्ध न किया जा सके और इसे कैश किया जा सके। यदि कोई नेटवर्क उपलब्ध नहीं है तो डिस्क पर।

अस्वीकरण: मैंने एंड्रॉइड प्रदाता बनाया :)


हालांकि इस पृष्ठ पर कई उत्तरों उपयोगी हैं, उनके लिए तारीख से बाहर होना आसान है। ऐपब्रेन वेबसाइट उन आंकड़ों को जोड़ती है जो आपको सबसे लोकप्रिय क्रैश रिपोर्टिंग समाधान ढूंढने की अनुमति देती हैं जो वर्तमान है:

एंड्रॉइड क्रैश रिपोर्टिंग पुस्तकालयों

आप देख सकते हैं कि इस तस्वीर को पोस्ट करने के समय, क्रैशलिटिक्स का उपयोग 5.24% ऐप्स और 12.38% इंस्टॉल में किया जाता है।


Flurry एनालिटिक्स आपको क्रैश जानकारी, हार्डवेयर मॉडल, एंड्रॉइड संस्करण और लाइव ऐप उपयोग आंकड़े देता है। नए एसडीके में वे अधिक विस्तृत क्रैश जानकारी http://www.flurry.com/flurry-crash-analytics.html प्रदान करते हैं।


शेरलाक नामक इस एंड्रॉइड लाइब्रेरी है। यह आपको डिवाइस और एप्लिकेशन की जानकारी के साथ दुर्घटना की पूरी रिपोर्ट देता है। जब भी कोई दुर्घटना होती है, तो यह अधिसूचना बार में अधिसूचना प्रदर्शित करती है और अधिसूचना पर क्लिक करके, यह क्रैश विवरण खोलती है। आप ईमेल या अन्य साझाकरण विकल्पों के माध्यम से दूसरों के साथ क्रैश विवरण भी साझा कर सकते हैं।

स्थापना

android {
    dataBinding {
      enabled = true
    }
}

compile('com.github.ajitsing:sherlock:[email protected]') {
    transitive = true
}

डेमो


Thread.setDefaultUncaughtExceptionHandler() साथ इन अपवादों को संभालना संभव है, हालांकि यह अपवादों को संभालने के एंड्रॉइड की विधि के साथ गड़बड़ प्रतीत होता है। मैंने इस प्रकृति के हैंडलर का उपयोग करने का प्रयास किया:

private class ExceptionHandler implements Thread.UncaughtExceptionHandler {
    @Override
    public void uncaughtException(Thread thread, Throwable ex){
        Log.e(Constants.TAG, "uncaught_exception_handler: uncaught exception in thread " + thread.getName(), ex);

        //hack to rethrow unchecked exceptions
        if(ex instanceof RuntimeException)
            throw (RuntimeException)ex;
        if(ex instanceof Error)
            throw (Error)ex;

        //this should really never happen
        Log.e(Constants.TAG, "uncaught_exception handler: unable to rethrow checked exception");
    }
}

हालांकि, अपवादों को पुनर्जीवित करने के साथ भी, मैं वांछित व्यवहार प्राप्त करने में असमर्थ था, यानी अपवाद को लॉग इन कर रहा था, जबकि एंड्रॉइड को उस घटक को बंद करने की इजाजत दे रही थी, इसलिए मैंने इसे थोड़ी देर बाद छोड़ दिया।






stack-trace