दुर्भाग्य से MyApp बंद हो गया है। इसे कैसे हल किया जा सकता है?


785

मैं एक एप्लिकेशन विकसित कर रहा हूं, और हर बार जब मैं इसे चलाता हूं, मुझे संदेश मिलता है:

दुर्भाग्य से, MyApp बंद हो गया है।

इसे हल करने के लिए मैं क्या कर सकता हूं?


इस प्रश्न के बारे में - स्पष्ट रूप से प्रेरित है कि स्टैक ट्रेस क्या है, और मैं इसका उपयोग अपनी एप्लिकेशन त्रुटियों को डीबग करने के लिए कैसे कर सकता हूं? , बहुत सारे प्रश्न हैं जो बताते हैं कि उनका आवेदन दुर्घटनाग्रस्त हो गया है, बिना किसी और विवरण के। इस सवाल का उद्देश्य नौसिखियों के एंड्रॉइड प्रोग्रामर को निर्देश देना है कि वे अपनी समस्याओं को स्वयं कैसे ठीक करें, या सही प्रश्न पूछें।


22
मैंने कई सवालों को इस तरह से बंद कर दिया है। यह लोगों को उनके सवालों में प्रासंगिक डेटा पोस्ट करने में मदद करने के लिए एक अच्छा संदर्भ है। हालाँकि, यह वहाँ किसी भी रूट समस्या का एक डुप्लिकेट नहीं है, लेकिन रूट समस्या को खोदने के लिए सिर्फ कार्यप्रणाली है। मुझे लगता है कि इस सवाल का लिंक एक संदर्भ के रूप में प्रदान करना बेहतर होगा और डुप्लिकेट के रूप में बंद नहीं होगा।
लालाटो

33
मुझे लगता है कि करीबी समारोह इसके लिए एकदम सही है। इनमें से अधिकांश प्रश्न बुनियादी डिबगिंग कौशल का बहुत कम ज्ञान दिखाते हैं। उत्तर में बताए गए तरीके का उपयोग करके, उन्हें अपनी समस्या को स्पष्ट करने का मौका प्रदान करता है। बेहतर अभी तक, वे समस्या को स्वयं हल करने में सक्षम हो सकते हैं। यह चर्चा हालांकि meta.stackoverflow.com के लिए बेहतर अनुकूल हो सकती है।
नाहरमन

यह प्रश्न बहुत अस्पष्ट है। एक बेहतर सवाल '[myIDE] का उपयोग करके मैं कैसे डिबग करूँगा' 'एक एंड्रॉइड एप्लिकेशन जो त्रुटि प्रदर्शित कर रहा है' दुर्भाग्य से, MyApp बंद हो गया है '
क्रिस हैल्क्रो

7
@ChrisHalcrow यह क्यू / ए डिबगिंग के बारे में बिल्कुल नहीं है। यह एंड्रॉइड में शुरुआती मार्गदर्शकों के बारे में है कि ऐप क्रैश से कैसे निपटें।
नहरमन

stackoverflow.com/questions/26609734/… .. APK में परिवर्तित करने के लिए multidex becoz त्रुटि सक्षम करें
RejoylinLokeshwaran

जवाबों:


717

यह उत्तर स्टैक ट्रेस पुनर्प्राप्त करने की प्रक्रिया का वर्णन करता है। पहले से ही स्टैक ट्रेस है? स्टैक के निशान पर पढ़ें " स्टैक ट्रेस क्या है, और मैं इसका उपयोग अपनी एप्लिकेशन त्रुटियों को डीबग करने के लिए कैसे कर सकता हूं? "

समस्या

आपका आवेदन छोड़ दिया गया क्योंकि एक अनकहा RuntimeExceptionफेंक दिया गया था।
इनमें से सबसे आम है NullPointerException

इसे कैसे हल करें?

हर बार एक Android एप्लिकेशन क्रैश (या उस मामले के लिए कोई जावा अनुप्रयोग), Stack traceकंसोल को लिखा जाता है (इस मामले में, logcat)। इस स्टैक ट्रेस में आपकी समस्या को हल करने के लिए महत्वपूर्ण जानकारी है।

Android स्टूडियो

एंड्रॉइड स्टूडियो में स्टैक ट्रेस का पता लगाना

विंडो के निचले बार में, Logcatबटन पर क्लिक करें। वैकल्पिक रूप से, आप alt+ दबा सकते हैं 6। सुनिश्चित करें कि आपका एमुलेटर या डिवाइस Devicesपैनल में चुना गया है । अगला, स्टैक ट्रेस को खोजने का प्रयास करें, जो लाल रंग में दिखाया गया है। लॉगकैट में बहुत अधिक सामान लॉग इन हो सकता है, इसलिए आपको थोड़ा स्क्रॉल करने की आवश्यकता हो सकती है। स्टैक ट्रेस को ढूंढने का एक आसान तरीका है लॉगकट को साफ़ करना (दाईं ओर रीसायकल बिन का उपयोग करना), और ऐप को फिर से क्रैश होने दें।

मैंने स्टैक ट्रेस पाया है, अब क्या?

वाह! आप अपनी समस्या को हल करने के लिए आधे रास्ते पर हैं।
आपको केवल यह पता लगाने की आवश्यकता है कि स्टैक ट्रेस का विश्लेषण करके आपके एप्लिकेशन को वास्तव में क्या बनाया गया है।

स्टैक के निशान पर पढ़ें " स्टैक ट्रेस क्या है, और मैं इसका उपयोग अपनी एप्लिकेशन त्रुटियों को डीबग करने के लिए कैसे कर सकता हूं? "

मैं अभी भी अपनी समस्या को हल नहीं कर सकता!

यदि आपने अपनी Exceptionऔर उस लाइन को ढूंढ लिया है जहां यह हुआ है, और अभी भी यह पता नहीं लगा सकता है कि इसे कैसे ठीक किया जाए, तो Stackververflow पर एक प्रश्न पूछने में संकोच न करें।

जितना संभव हो सके संक्षिप्त करने का प्रयास करें: स्टैक ट्रेस और संबंधित कोड (उदाहरण के लिए कुछ पंक्तियाँ, जो फेंक दी गई हैं Exception) को पोस्ट करें।


33
मुझे पता है कि यह पोस्ट पुरानी है: लेकिन यदि आप IntelliJ IDEA का उपयोग करते हैं, तो आप अंदर जा सकते हैं Android > Devices|Logcatऔर एक नया फ़िल्टर ( i.imgur.com/145dtxx.png ) जोड़ सकते हैं , और इसे by Log Messageयहाँ फ़िल्टर कर सकते हैं, FATAL EXCEPTION( i.imgur.com/HpELhaU) .png ) तो इस बॉक्स में आप वह सब पढ़ सकते हैं Exceptionsजो आपके एप्लिकेशन द्वारा फेंका गया है। इसके साथ आपको लॉगकैट को साफ करने और क्रैश को फिर से करने की आवश्यकता नहीं है। मुझे लगता है कि एंड्रॉइड स्टूडियो के पास भी यह विकल्प है।
बजे मार्को एसेर्नो

1
एक्लिप्स में फ़िल्टरिंग लॉगकैट को फ़िल्टर के एप्लिकेशन नाम क्षेत्र में जावा पैकेज नाम में टाइप करके किया जा सकता है।
स्टीफन

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

4
जब आपके लॉगकैट में त्रुटि के कुछ निशान होते हैं तो चीजें आसान होती हैं, लेकिन अगर लॉगकट में कुछ भी नहीं है? stackoverflow.com/questions/32455645/…
मैरियन पाडज़िओच

4
समस्या यह है कि पंक्ति में वह त्रुटि नहीं है जो स्टैक ट्रेस द्वारा लिखी और इंगित की गई है।
हिलाल

115

समस्या का विश्लेषण करने के लिए आप Google के ADB टूल का उपयोग कर सकते हैं Logcat file

adb logcat > logcat.txt

खुली logcat.txtफ़ाइल और अपने आवेदन नाम के लिए खोज। इसमें क्यों फेल हुआ, लाइन नंबर, क्लास का नाम आदि की जानकारी होनी चाहिए।


यह बहुत अच्छा है, यह आपको डिवाइस पर जल्दी से कुछ भी दिखाएगा भले ही आपका डिबगर इसे पकड़ने में विफल हो रहा हो, जो कि Xamarin के लिए हो सकता है यदि रनटाइम लोड करने में विफल रहता है।

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

आप को जोड़ना चाहिए -d, अन्यथा आप logcat से बाहर निकलने के लिए ctrl-C को nave करते हैं। मैंadb logcat -v time -d > filename.txt
करकुरी

37

सबसे पहले, आप जांचें कि आपका ऐप किस बिंदु पर क्रैश हुआ है ( Unfortunately, MyApp has stopped.)। इसके लिए, आप उपयोग कर सकते हैं Log.e("TAG", "Message");, इस लाइन का उपयोग करके आप लॉगकैट में अपना ऐप लॉग देख सकते हैं।

उसके बाद, आप पाते हैं कि आपके ऐप को किस बिंदु पर रोका गया है, यह आपके पक्ष में हल करना बहुत आसान है।


28

बस लॉग कैट में त्रुटि की जाँच करें।

आपको ग्रहण में लॉग कैट विकल्प मिलता है:

विंडो-> शो व्यू-> अन्य-> एंड्रॉइड-> लॉगकट

लॉग कैट में त्रुटि है।

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

दाईं ओर प्रोजेक्ट पर क्लिक करें-> डिबग as-> Android एप्लिकेशन


27

नोट: यह उत्तर एंड्रॉइड स्टूडियो 2.2.2 का उपयोग कर रहा है

नोट 2: मैं विचार कर रहा हूं कि आपका उपकरण सफलतापूर्वक जुड़ा हुआ है।


जब आपका एप्लिकेशन क्रैश हो जाता है, तो सबसे पहली बात आप LogCat में देखते हैं, Android Studio के निचले भाग में एक टूलबार है जिसमें सूची का एक संस्करण है:

छवि

"एंड्रॉइड मॉनिटर" पर क्लिक करें (ऊपर मैंने जो चित्र में रेखांकित किया है। ^)

अब, आपको कुछ इस तरह मिलेगा:

छवि

"" Verbose"को बदलें" Errorअब यह केवल आपको लॉग की गई त्रुटियों को दिखाएगा। इन सभी त्रुटियों के बारे में चिंता न करें (यदि आप उन्हें मिल गए हैं)।

छवि

ठीक है। अब, आपने अपने ऐप को क्रैश करने के लिए क्या किया। आपका ऐप क्रैश होने के बाद, अपने लॉगकैट पर जाएं। आपको एक नया क्रैश लॉग ढूंढना चाहिए जिसमें बहुत कुछ है at:x.x.x: और Caused by: TrumpIsPresidentExceptionउदाहरण के लिए। Caused by:अपने logcat में उस स्टेटमेंट पर जाएं ।

छवि

के बगल में है कि Caused By:, वहाँ अपवाद कि क्या हुआ होना चाहिए। मेरे मामले में, यह एक है RuntimeExceptionऔर इसके तहत एक पंक्ति होनी चाहिए जिसमें एक नीली कड़ी शामिल है जैसे:

छवि

अगर उसCaused by: DOESN'T के नीचे कहीं एक नीले रंग की टेक्स्ट के साथ एक पंक्ति है, तो दूसरे के लिए देखो Caused by:जो करता है।

उस नीले लिंक पर क्लिक करें । यह आपको उस स्थान पर ले जाना चाहिए जहाँ समस्या हुई थी। मेरे मामले में, यह इस लाइन के कारण था:

throw new RuntimeException();

तो, अब मुझे पता है कि यह दुर्घटनाग्रस्त क्यों है। ऐसा इसलिए है क्योंकि मैं खुद अपवाद को फेंक रहा हूं। यह एक स्पष्ट त्रुटि थी


हालाँकि, मान लें कि मुझे एक और त्रुटि मिली:

java.lang.NullPointerException

मैंने अपना लॉगिन चेक किया, मैंने उस नीले लिंक पर क्लिक किया जो उसने मुझे दिया था, और यह मुझे यहाँ ले गया:

mTextView.setText(myString);

इसलिए, अब मैं डिबग करना चाहता हूं। इस StackOverflow प्रश्न के अनुसार , एक NullPointerException कहता है कि कुछ है null

तो, आइए जानें कि क्या अशक्त है । दो संभावनाएं हैं। या तो mTextViewअशक्त है, या myStringअशक्त है। पता करने के लिए, mTextView.setText(mString)लाइन से पहले , मैं इन दो लाइनों को जोड़ता हूं:

Log.d("AppDebug","mTextView is null: " + String.valueOf(mTextView == null);
Log.d("AppDebug","myString is null: " + String.valueOf(myString== null);

अब, जैसे हमने पहले किया था (हमने Verose को Error में बदल दिया है), हम "Error" को "Debug" में बदलना चाहते हैं। चूंकि हम डिबगिंग द्वारा लॉगिंग कर रहे हैं। यहाँ सभी लॉग तरीके हैं:

Log.
  d means Debug
  e means error
  w means warning
  v means verbose
  i means information
  wtf means "What a terrible failure". This is similar to Log.e

इसलिए, जब से हमने उपयोग किया Log.d, हम डिबग में जाँच कर रहे हैं। इसलिए हमने इसे डिबग में बदल दिया।

नोटिस Log.dका पहला पैरामीटर है, हमारे मामले में "AppDebug"। लॉगकैट के शीर्ष-दाईं ओर "नो फिल्टर" ड्रॉप डाउन मेनू पर क्लिक करें। "फ़िल्टर कॉन्फ़िगरेशन संपादित करें" चुनें, अपने फ़िल्टर को एक नाम दें, और "लॉग टैग" में "ऐप डीबग" डालें। ओके पर क्लिक करें"। अब, आपको logcat में दो लाइनें देखनी चाहिए:

yourPackageNameAndApp: mTextView is null: true
yourPackageNameAndApp: myString is null: false

तो अब हम जानते हैं कि mTextView शून्य है।

मैं अपने कोड का निरीक्षण करता हूं, अब मैं कुछ नोटिस करता हूं।

मैंने private TextView mTextViewअपनी कक्षा में सबसे ऊपर घोषित किया है। लेकिन, मैं इसे परिभाषित नहीं कर रहा हूं।

मूल रूप से मैं अपने onCreate में यह करना भूल गया ():

mTextView = (TextView) findViewById(R.id.textview_id_in_xml);

इसलिए mTextView, यह अशक्त क्यों है, क्योंकि मैं अपना ऐप बताना भूल गया हूं कि यह क्या है। इसलिए मैं उस लाइन को जोड़ता हूं, अपना ऐप चलाता हूं, और अब ऐप क्रैश नहीं होता है।



1
यह अच्छी जानकारी है, लेकिन स्टैक ट्रेस की छवियों का उपयोग करने से इसकी उपयोगिता कम हो जाती है - छवियों को खोजा नहीं जा सकता है, कॉपी और पेस्ट नहीं किया जा सकता है, स्क्रीन पाठकों द्वारा नहीं उठाया जा सकता है, और पढ़ना अधिक कठिन है। (मैं नीचे नहीं था, वैसे, बस उस ओर इशारा करते हुए)।
EJoshuaS - मोनिका

1
@EJoshuaS मैं छवियों को प्रदान करने के लिए नहीं कहा था।
Ab

19

यह पॉपअप तभी दिखाई देता है जब आपको अपने कोड में एक घातक अपवाद मिलता है जो ऐप के निष्पादन को रोक देता है। यह कोई अपवाद हो सकता है NullPointerException, OutOfMemoryExceptionआदि।

लॉगकैट के माध्यम से जांच करने का सबसे अच्छा तरीका है यदि आप अभी भी एंड्रॉइड स्टूडियो में ऐप विकसित कर रहे हैं जो स्टैक ट्रेस पढ़ने और ऐप के कारण की जांच करने का त्वरित तरीका है।

यदि आपका ऐप पहले से लाइव है, तो आप लॉगकैट का उपयोग नहीं कर सकते । इसलिए, इसके लिए आप Crashlyticsकिसी भी अपवाद की बग रिपोर्ट प्रदान करने के लिए कार्यान्वित कर सकते हैं ।


17

अपना Logcatसंदेश जांचें और अपनी Manifestफ़ाइल देखें । Activity,उपयोगकर्ता की अनुमति को परिभाषित करने जैसे कुछ गायब होना चाहिए , आदि।


14

आप इनमें से किसी भी उपकरण का उपयोग कर सकते हैं:

  1. adb logcat

  2. adb logcat> log.txt (आप त्रुटियों को खोलने और खोजने के लिए संपादकों का उपयोग कर सकते हैं।)

  3. ग्रहण लॉगकैट (यदि ग्रहण में दिखाई नहीं देता है, तो Windows पर जाएं-> दृश्य देखें-> अन्य-> Android-> लॉग-इन)

  4. Android डिबग मॉनिटर या Android डिवाइस मॉनिटर (प्रकार कमांड मॉनिटर या UI के माध्यम से खोलें)

यहां छवि विवरण दर्ज करें

  1. Android स्टूडियो

मैं Android डिबग मॉनिटर का उपयोग करने का सुझाव देता हूं , यह अच्छा है। क्योंकि ग्रहण बहुत सारे लॉग होने पर लटका रहता है, और adb logcat फ़िल्टर और सभी मुश्किलों के माध्यम से।


12

आपको जाँच करनी है Stack trace

उसको कैसे करे?

आपकी IDE पर, Windows फ़ॉर्म LOGCAT की जाँच करें

यदि आप नहीं देख सकते हैं कि logcat विंडो इस पथ पर जाती है और इसे खोलती है

window->show view->others->Android->Logcat

यदि आप Google-Api का उपयोग कर रहे हैं तो इस पथ पर जाएं

adb logcat> logcat.txt


10

नीचे showToast () विधि में आपको संदर्भ या अनुप्रयोग संदर्भ के लिए एक और पैरामीटर पास करना होगा ऐसा करके आप इसे आज़मा सकते हैं।

  public void showToast(String error, Context applicationContext){
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.custom_toast, (ViewGroup)      
        findViewById(R.id.toast_root));
        TextView text = (TextView) findViewById(R.id.toast_error);
        text.setText(error);
        Toast toast = new Toast(applicationContext);
        toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(view);
        toast.show();
}

9

जब आप किसी फ़ोर्स क्लोज़ से मिलते हैं (जब ऐप काम करना बंद कर देता है) तो मुझे एक बेसिक लॉगकट विश्लेषण साझा करें।

डॉक्स

लॉग को इकट्ठा / विश्लेषण करने के लिए एंड्रॉइड से मूल उपकरण लॉगकैट है।

HERE , logcat के बारे में Android का पेज है

यदि आप Android Studio का उपयोग करते हैं, तो आप इस LINK को भी देख सकते हैं ।

वश में कर लेना

मूल रूप से, आप निम्न कमांड के साथ लॉगकिट को मैन्युअल रूप से कैप्चर कर सकते हैं (या AndroidStudio में AndroidMonitor विंडो की जांच कर सकते हैं):

adb logcat

ऐसे बहुत सारे पैरामीटर हैं जिन्हें आप कमांड में जोड़ सकते हैं जो आपको इच्छित संदेश को फ़िल्टर करने और प्रदर्शित करने में मदद करता है ... यह व्यक्तिगत है ... मैं हमेशा संदेश टाइमस्टैम्प प्राप्त करने के लिए नीचे दिए गए कमांड का उपयोग करता हूं:

adb logcat -v time

आप आउटपुट को किसी फ़ाइल में रीडायरेक्ट कर सकते हैं और टेक्स्ट एडिटर में उसका विश्लेषण कर सकते हैं।

का विश्लेषण

यदि आप ऐप क्रैश कर रहे हैं, तो आपको कुछ मिलेगा:

07-09 08:29:13.474 21144-21144/com.example.khan.abc D/AndroidRuntime: Shutting down VM
07-09 08:29:13.475 21144-21144/com.example.khan.abc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.khan.abc, PID: 21144
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
     at com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
     at android.view.View.performClick(View.java:4848)
     at android.view.View$PerformClick.run(View.java:20262)
     at android.os.Handler.handleCallback(Handler.java:815)
     at android.os.Handler.dispatchMessage(Handler.java:104)
     at android.os.Looper.loop(Looper.java:194)
     at android.app.ActivityThread.main(ActivityThread.java:5631)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
07-09 08:29:15.195 21144-21144/com.example.khan.abc I/Process: Sending signal. PID: 21144 SIG: 9

लॉग का यह हिस्सा आपको बहुत सारी जानकारी दिखाता है:

  • जब समस्या हुई: 07-09 08:29:13.475

जब समस्या हुई तब जाँच करना महत्वपूर्ण है ... आपको लॉग में कई त्रुटियां मिल सकती हैं ... आपको यह सुनिश्चित करना चाहिए कि आप उचित संदेशों की जाँच कर रहे हैं :)

  • कौन सा ऐप क्रैश हुआ: com.example.khan.abc

इस तरह, आप जानते हैं कि कौन सा ऐप क्रैश हो गया है (यह सुनिश्चित करने के लिए कि आप अपने संदेश के बारे में लॉग की जाँच कर रहे हैं)

  • कौन सा त्रुटि: java.lang.NullPointerException

एक पूर्ण सूचक अपवाद त्रुटि

  • त्रुटि के बारे में विस्तृत जानकारी: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference

आपने onBackPressed()किसी FragmentActivityऑब्जेक्ट से कॉल करने का प्रयास किया है । हालाँकि, वह वस्तु nullतब थी जब आपने इसे किया था।

  • स्टैक ट्रेस: ​​स्टैक ट्रेस आपको विधि मंगलाचरण आदेश दिखाता है ... कभी-कभी, त्रुटि कॉलिंग विधि में होती है (और तथाकथित विधि में नहीं)।

    com.example.khan.abc.AudioFragment $ 1.on पर क्लिक करें (AudioFragment.java:125)

त्रुटि फ़ाइल में com.example.khan.abc.AudioFragment.java, onClick()लाइन में विधि के अंदर हुई : 125(स्टैकट्रेस उस रेखा को दिखाता है जो त्रुटि हुई)

इसके द्वारा बुलाया गया था:

at android.view.View.performClick(View.java:4848)

किसके द्वारा बुलाया गया था:

at android.view.View$PerformClick.run(View.java:20262)

जिसके द्वारा बुलाया गया था:

at android.os.Handler.handleCallback(Handler.java:815)

आदि....

अवलोकन

यह सिर्फ एक अवलोकन था ... सभी लॉग सरल नहीं हैं आदि ... यह केवल विचार साझा करने और आपको प्रवेश-स्तर की जानकारी प्रदान करने के लिए है ...

मुझे उम्मीद है कि मैं किसी और की मदद कर सकता हूं ... सादर


8

LogCat का उपयोग करें और यह जानने की कोशिश करें कि ऐप क्रैश होने का कारण क्या है।

Logcat देखने के लिए यदि आप Android Studio का उपयोग करते हैं तो ALT + 6 दबाएँ या

यदि आप ग्रहण का उपयोग करते हैं तो विंडो -> ओपन पर्सपेक्टिव -> अन्य - लॉगकट

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


7

अगर किसी कारणवश आपका ऐप बिना अच्छे स्टैकट्रेस के क्रैश हो जाता है। पहली पंक्ति से इसे डीबग करने का प्रयास करें, और क्रैश होने तक लाइन से लाइन पर जाएं। तब आपके पास जवाब होगा, कौन सी रेखा आपको परेशान कर रही है। फिर आप इसे फिर से पकड़ ब्लॉक और प्रिंट त्रुटि आउटपुट में आज़मा सकते हैं।


5

आप स्टैक ट्रेस या किसी भी अन्य त्रुटि संदेश के बिना, अपने आप यह त्रुटि संदेश प्राप्त कर सकते हैं।

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


3
यदि आप इस घटना को प्रदर्शित करने वाली परियोजना को अपलोड कर सकते हैं तो मुझे इसमें रुचि होगी।
कॉमन्सवेयर

5

विकास के दौरान क्रैश

लॉग प्राप्त करने और विकास के दौरान उनका विश्लेषण करने के लिए मेरे पसंदीदा टूल लॉगव्यू का प्रयास करें । लिनक्स में चलने के दौरान और निष्पादन योग्य के रूप में
चिह्नित करना सुनिश्चित करें ।./logview./lib/logview.jar

यदि आपको यह पसंद नहीं है, तो एंड्रॉइड के लिए बहुत सारे वैकल्पिक डेस्कटॉप लॉग दर्शक हैं

जंगली में क्रैश

उपयोगकर्ताओं के उपकरणों पर होने वाले बिना किसी अपवाद के स्टैकट्रैक प्राप्त करने के लिए एक वास्तविक समय क्रैश रिपोर्टिंग उपकरण जैसे कि फायरबेस क्रैशलाईटिक्स को एकीकृत करें ।

फ़ील्ड में बग्स से निपटने के बारे में अधिक जानने के लिए एक छोटी गाड़ी ऐप (और लाइव टू टेल टेल) कैसे पढ़ें ।


4

लोग गलती करते हैं, और इसलिए कोडिंग भी करते हैं।

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

सुनिश्चित करें कि यदि आप एक नया बनाते हैं activity, तो हमेशा फ़ाइल activityमें घोषित करें AndroidManifest

यदि परमिशन जोड़ रहा है, तो इसे AndroidMainifestफ़ाइल में भी घोषित करें ।


4

Logcat - एंड्रॉइड स्टूडियो के विकास चरण में लॉग की जांच करने के लिए

प्रारंभ में Logcat को साफ़ करें और ऐप को फिर से क्रैश होने दें ताकि आप केवल दुर्घटनाग्रस्त लॉग डिटेल प्राप्त कर सकें। आपको स्टैक ट्रेस की जाँच करनी है

जबकि, दुर्भाग्य से, MyApp बंद हो गया है। इसके कई कारण हैं। आप लॉग में एक ही जाँच कर सकते हैं। इसके लिए, आप Log.e ("TAG", "संदेश") का उपयोग कर सकते हैं;

ऐप क्रैश के दौरान सामान्य त्रुटि:

  1. कोडिंग गलती (कीवर्ड का गलत उपयोग)।
  2. बेमेल संपत्ति का नाम।
  3. असमर्थित प्लगइन (शायद)।
  4. बेमेल संस्करण (शायद)।
  5. AndroidManifest फ़ाइल में गतिविधि गायब है।
  6. AndroidManifest फ़ाइल में अनुमति गायब है।
  7. सबसे आम NullPointerException।
  8. घोषित लेकिन परिभाषित नहीं।

एप्लिकेशन क्रैश त्रुटि को हल करने के लिए:

  • अंक से ऊपर ध्यान रखें और इसके माध्यम से जाएं।
  • त्रुटि के साथ, आपको फ़ाइल नाम भी नीले रंग में मिलेगा (उन पर क्लिक करें और त्रुटि से कोड पर जाएं)।

3

सबसे पहले, आपको यह जांचने की आवश्यकता है कि आपका ऐप कहां और क्यों क्रैश हो गया है (Unfortunately, MyApp has stopped.)., इसकी मदद से LOGआप यह पता लगा सकते हैं कि क्या गलत हुआ।

उसके बाद, आप पाते हैं कि आपके बिंदु से आपके ऐप ने किस बिंदु को ठीक कर दिया है।


3

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

टोलस्टोन फ़ाइलों के लिए डिफ़ॉल्ट स्थान हर डिवाइस पर निर्भर करता है, लेकिन अगर ऐसा है, तो आपके पास एक लॉग इनिंग होगी: Tombstone written to: /data/tombstones/tombstone_06

अधिक जानकारी के लिए, https://source.android.com/devices/tech/debug पर देखें


0

टर्मिनल में इस कमांड को चलाने से समस्या को हल करने में मदद मिल सकती है:

gradlew build > log.txt 2>details.txt

फिर आपको लॉग इन उपर्युक्त दो फ़ाइलों को पढ़ने के लिए फाइल स्थान में जाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.