2012-04-17 11 views
6

किसी ने मुझे करने के लिए निम्न चेतावनी के अर्थ की व्याख्या कर सकते कृपया जब मेरे Android आवेदन चल रहा है (चेतावनी अनुक्रम में के रूप में दिया outputted हैं):अर्थ

04-17 15:29:11.693: I/dalvikvm(4442): DexOpt: access denied from Lcom/kirona/iclient/db/core/services/impl/MiscDatabaseModuleDaoImpl; to field Lcom/kirona/iclient/database/common/impl/AbstractDatabaseModuleDao;.logger 
04-17 15:29:11.653: W/dalvikvm(4442): VFY: unable to resolve static field 30 (logger) in Lcom/kirona/iclient/db/core/services/impl/MiscDatabaseModuleDaoImpl; 
04-17 15:29:11.653: D/dalvikvm(4442): VFY: replacing opcode 0x62 at 0x0001  
04-17 15:29:11.693: D/dalvikvm(4442): VFY: dead code 0x0046-006e in Lcom/kirona/iclient/db/core/services/impl/MiscDatabaseModuleDaoImpl;.getSequenceNextVal (Ljava/lang/String;)J 

आवेदन ठीक से चलाने के लिए लगता है लेकिन मुझे इस मुद्दे को समझने की जरूरत है क्योंकि हमारे पास समान त्रुटियों वाले अधिक जटिल अनुप्रयोग हैं जो दल्विकविक को दुर्घटनाग्रस्त करते हैं।

उत्तर

4

समस्या यह प्रतीत होती है कि MiscDatabaseModuleDaoImpl वर्ग AbstractDatabaseModuleDao.logger फ़ील्ड तक पहुंचने का प्रयास कर रहा है, लेकिन एक्सेस प्रतिबंधों (यानी निजी, संरक्षित, आदि) के कारण नहीं हो सकता है। इस मामले में, इस फ़ील्ड तक पहुंचने वाले sget-object opcode (opcode 0x62) को एक सत्यापन अपवाद फेंकता है, जो निष्पादित होने पर रनटाइम क्रैश का कारण बनता है।

इसके अतिरिक्त, अंतिम संदेश MiscDatabaseModuleDaoImpl.getSequenceNextVal विधि में मृत कोड को संदर्भित करता है। यह हानिरहित है - यह रनटाइम के दौरान कोई समस्या नहीं पैदा करेगा। हालांकि, यह पता लगाने का बुरा विचार नहीं होगा कि मृत कोड क्या है, और इसे हटा दें। आप -कोड-ऑफसेट विकल्प के साथ, बाक्समाली का उपयोग करके अपने आवेदन को अलग कर सकते हैं, और फिर उस विधि के लिए डिस्सेप्लर को देखें। ऑफकोड युक्त प्रत्येक निर्देश से पहले - कोड-ऑफसेट विकल्प एक टिप्पणी करेगा। त्रुटि संदेश के अनुसार, 0x46 से 0x6e के ऑफसेट मृत कोड हैं। आसपास के क्षेत्र में .line निर्देश भी होना चाहिए, जो मूल जावा फ़ाइल से संबंधित लाइन संख्याएं होंगी।

+1

अंतर्दृष्टि के लिए धन्यवाद। यह क्या था ** सारडेटाबेस मॉड्यूलडाओ ** ने एक निजी स्थैतिक लॉगर घोषित किया, हालांकि इस अमूर्त वर्ग को एक और अमूर्त वर्ग से भी बढ़ाया गया जिसने एक संरक्षित स्थैतिक लॉगर घोषित किया। दल्विकवम को यह पसंद नहीं आया। दूसरा परिणाम ** getSequenceNextVal ** विधि में कुछ कोड था जिसे लॉगर कहा जाता है। हालांकि dalvikvm इस कोड को प्रतिस्थापित करता है और इसे एक मृत कोड बनने का कारण बनता है (मुझे लगता है)। केवल स्थिर लॉगर घोषणा को हटाकर दोनों मुद्दों को हल किया गया। धन्यवाद – paul

+0

आह, हाँ। यह सही लगता है। जब लॉगर को एक्सेस करने वाले ऑपोड को एक सत्यापन के साथ प्रतिस्थापित किया गया था, तो सत्यापन कोड तुरंत मर जाएगा। – JesusFreke

+0

@ जेससफ्रेके, मुझे वही समस्या मिल रही है, मैंने इस मुद्दे को खत्म कर दिया है, मैं पिछले 10 से 15 दिनों से कोशिश कर रहा हूं, लेकिन मुझे नहीं पता कि कैसे हल किया जाए। मुझे इस प्रकार का अपवाद मिल रहा है = ("12-30 22: 40: 13.202: I/dalvikvm (400): विधि com.anm.cms.core.util.AES128Bit.encrypt विधि नहीं मिला, विधि com से संदर्भित। w2i.MainActivity.onCreate – tazeenmulani

संबंधित मुद्दे