25

क्या कोई जानता है कि ऐसा क्यों होता है? मुझे यह ऐप मेरे ऐप द्वारा रिपोर्ट किया गया है लेकिन मुझे नहीं पता कि यह क्या है।NoClassDefFoundError: android.app.ANRManagerProxy

java.lang.NoClassDefFoundError: android.app.ANRManagerProxy 

Thread: Binder_3, Exception: java.lang.NoClassDefFoundError: android.app.ANRManagerProxy 
at android.app.ANRManagerNative.asInterface(ANRManagerNative.java:30) 
at android.app.ANRManagerNative$1.create(ANRManagerNative.java:94) 
at android.app.ANRManagerNative$1.create(ANRManagerNative.java:88) 
at android.util.Singleton.get(Singleton.java:34) at android.app.ANRManagerNative.getDefault(ANRManagerNative.java:37) 
at android.os.MessageLogger.dump(MessageLogger.java:253) 
at android.app.ANRAppManager.dumpMessageHistory(SourceFile:38) 
at android.app.ActivityThread$ApplicationThread.dumpMessageHistory(ActivityThread.java:1176) 
at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:609) 
at android.os.Binder.execTransact(Binder.java:351) 
at dalvik.system.NativeStart.run(Native Method) 
+0

खैर, ANR आमतौर पर "आवेदन जवाब नहीं" के साथ जुड़ा हुआ है, त्रुटि संदेश दिया: ऐसा करने के लिए सबसे अच्छा तरीका है विकास और परीक्षण सख्त मोड, यानी दौरान उपयोग करने के लिए, इस तरह कुछ करने के लिए है एक लंबे समय के लिए मुख्य आवेदन धागा। तथ्य यह है कि यह एक बाइंडर थ्रेड पर हो रहा है, यह बताता है कि शायद 'ANRManagerProxy' बाइंडर आईपीसी धागे के पूल सहित प्रमुख धागे को बांधने के लिए दर्शक है। सुनिश्चित करें कि आप मुख्य एप्लिकेशन थ्रेड या किसी भी बाइंडर थ्रेड (उदाहरण के लिए, एआईडीएल के साथ दूरस्थ सेवाएं) नहीं लगा रहे हैं। हालांकि, मुझे इस बात का कोई संकेत नहीं है कि कुछ एंड्रॉइड बिल्ड इस कक्षा में क्यों गुम हैं और आपको 'नोक्लास डीफफाउंड एरर' दे रहे हैं। – CommonsWare

+0

क्या यह केवल एक विशिष्ट डिवाइस पर होता है? – JonasCz

+0

@ जोनासज़ निश्चित रूप से नहीं कह सकता है, लेकिन मुझे लगता है, हाँ। –

उत्तर

13

यह त्रुटि,, उपकरणों के एक छोटे समूह (मैं एक सूची नहीं है, लेकिन वे कोई नाम ब्रांडों हो जाते हैं) जिसका फर्मवेयर डेवलपर्स पर देखा जा सकता अज्ञात कारणों के लिए से ANRManagerProxy हटाया डिवाइस ढांचे (मैंने फर्मवेयर को शिकार करके और इसे स्वयं को अपनाने से इसकी पुष्टि की)।

सबसे अच्छा आप कर सकते हैं किसी भी संभावित कोड जो धागा ऊपर ताला लगा जा सकता है और डिवाइस nonresponsive बनने के लिए पैदा कर रहा नीचे शिकार करने के लिए प्रयास करें, और कोड एसिंक्रोनस रूप से चलाने के लिए एक AsyncTask या इसी तरह का उपयोग करें और ANR से बचने की कोशिश है। प्रश्न में डिवाइस हमेशा कम अंत होते हैं, और इसलिए आपके कोड को चलाने में अधिक समय लगेगा और ऐसा होने का एक बड़ा मौका होगा।

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

+3

वाह, इस तरह की अच्छी "सुविधा"। "- हे आदमी, क्या हमें ढांचे से यादृच्छिक कक्षाओं को हटा देना चाहिए? - निश्चित ब्रो, यह एक शानदार विचार है" –

3

यह इसलिए होता है, क्योंकि

  • अपने अनुप्रयोग आईडी मुख्य (जीयूआई) में कुछ भारी काम कर रही धागा

और

  • लक्ष्य डिवाइस अप फर्मवेयर गड़बड़ है

यहाँ उपकरणों, जहां मैं अधिक बार अनुभव बग की एक सूची है - तो न केवल कम अंत उपकरणों, सावधान आप :-)

लेनोवो A316I इसे अनदेखा जाएगा, N5i, V769M, G3 orro, वी 5, जी 3, एक्स -2, एफ-जी 906, जेड 350, वी 10, जी 9 10, इवोवेवो स्ट्रॉन्गफोन डी 2, ए 70 सी, जी 9 006, वी 13, सी 3000, एन 9 68, एसएम-टी 322, एच 9 503, जीटी-एच 9 503, एस 5, एफ 1, लेनोवो टीपी -6000 , गैलेक्सी टैब एसएम-टी 700 सी ...

केवल एक चीज जो आप इस बारे में कर सकते हैं वह है कि आप अपने ऐप को उत्तरदायी बना सकें। जब बांधने ऊपर

public void onCreate() { 
    if (DEVELOPER_MODE) { 
     StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
      .detectDiskReads() 
      .detectDiskWrites() 
      .detectNetwork() // or .detectAll() for all detectable problems 
      .penaltyLog() 
      .build()); 
     StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 
      .detectLeakedSqlLiteObjects() 
      .detectLeakedClosableObjects() 
      .penaltyLog() 
      .penaltyDeath() 
      .build()); 
    } 
    super.onCreate(); 
} 
संबंधित मुद्दे