एंड्रॉइड में .dex फाइलें क्या हैं?


193

डेक्स फाइलों के संबंध में मेरे कुछ प्रश्न हैं

  • dexAndroid में एक फाइल क्या है ?
  • एंड्रॉइड के लिए डेक्स कैसे काम करता है?
  • एंड्रॉइड ऐप को डिबग करने में उनका उपयोग कैसे किया जाता है?
  • क्या वे जावा क्लास की फाइलों के समान हैं?

मुझे इस पर विशेष जानकारी की आवश्यकता है कृपया इसका समर्थन करें और किसी भी वास्तविक उदाहरण का स्वागत है!


plz इस लिंक को देखें stackoverflow.com/questions/1249973/…
Gensheriff

उन्हें डिवाइस पर कैसे चलाएं: stackoverflow.com/questions/10199863/…
Ciro Santilli 病 device device device 事件

जवाबों:


226

.Dex फ़ाइल के बारे में:

Dalvik Virtual Machine(एंड्रॉइड सिस्टम के तहत वर्कहॉर्स) की सबसे उल्लेखनीय विशेषताओं में से एक यह है कि यह जावा बाइटकोड का उपयोग नहीं करता है। इसके बजाय, DEX नामक एक होमग्रॉन प्रारूप पेश किया गया था और यहां तक ​​कि बायटेकोड निर्देश भी जावा बाइटकोड निर्देशों के समान नहीं हैं।

Compiled Android application code file.

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

डेक्स फ़ाइल प्रारूप:

 1. File Header
 2. String Table
 3. Class List
 4. Field Table
 5. Method Table
 6. Class Definition Table
 7. Field List
 8. Method List
 9. Code Header
10. Local Variable List

Android के पास Dalvik Executable Format( .dex फ़ाइलों पर) प्रलेखन है । आप आधिकारिक डॉक्स पर अधिक जानकारी प्राप्त कर सकते हैं: डेक्स फाइल फॉर्मेट

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

आप एंड्रॉइड-एसडीके में दिए गए टूल decompileका उपयोग करके .dex कर सकते हैं dexdump

फ़ाइल से या बनाने के लिए कुछ रिवर्स इंजीनियरिंग तकनीकें भी हैं ।jar filejava class file.dex


मेरी जार फ़ाइल में संपत्ति फ़ोल्डर में कुछ xml है। मैं चाहता हूं कि यह .dex का एक हिस्सा हो और इसे कैसे लागू किया जाए?
AndroidGuy

@AndroidGuy - जार फ़ाइल में कोई भी एंड्रॉइड संसाधन पैकेज (संपत्ति) नहीं है, इसके लिए आपको Android लाइब्रेरी पैकेज का उपयोग करना होगा।
user370305

यह एंड्रॉइड लॉलीपॉप पर एआरटी पर कैसे काम करता है? वहां कौन सी फाइलें इस्तेमाल की जाती हैं, और किस रास्ते में हैं? कुछ ने कहा कि यह अधिक स्थान लेगा। क्या यह सच है? यदि हां, तो कैसे आए? मेरा मतलब है, मूल कोड हमेशा बाइट-कोड की तुलना में बहुत छोटा होता है, और डेक्स फाइलें बाइट-कोड के समान हैं कि यह कैसे काम करता है।
Android डेवलपर

ध्यान देने वाली एक महत्वपूर्ण बात यह है कि dexdumpएक डिकंपाइलर नहीं है, लेकिन एक
डिस्सेम्बलर है

90
.dex file

संकलित Android एप्लिकेशन कोड फ़ाइल।

एंड्रॉइड प्रोग्राम्स को .dex (Dalvik Executable) फाइलों में संकलित किया जाता है, जो कि डिवाइस पर एक .apk फाइल में ज़िप किए जाते हैं। जावा प्रोग्रामिंग भाषा में लिखे संकलित अनुप्रयोगों का अनुवाद करके .dex फाइलें Android द्वारा स्वचालित रूप से बनाई जा सकती हैं।


2
मेरी जार फ़ाइल में संपत्ति फ़ोल्डर में कुछ xml है। मैं चाहता हूं कि यह .dex का एक हिस्सा हो और इसे कैसे लागू किया जाए?
AndroidGuy

87

dex फ़ाइल एक फाइल है जिसे Dalvik VM पर निष्पादित किया जाता है।

Dalvik VM में प्रदर्शन अनुकूलन, सत्यापन और निगरानी के लिए कई सुविधाएँ शामिल हैं, जिनमें से एक है Dalvik निष्पादन (DEX)

जावा सोर्स कोड को जावा कंपाइलर द्वारा .classफाइलों में संकलित किया जाता है। तब dx(dexer) टूल, एंड्रॉइड एसडीके का हिस्सा .classफाइलों को फाइल फॉर्मेट में प्रोसेस करता है, जिसे DEXDalvik बाइट कोड कहते हैं। dxउपकरण सभी समाप्त अनावश्यक जानकारी है कि कक्षाओं में मौजूद है। में DEXसभी आवेदन की कक्षाएं एक फ़ाइल में पैक किया जाता है। निम्न तालिका JVM जार फ़ाइलों और dexटूल द्वारा संसाधित फ़ाइलों के लिए कोड आकारों के बीच तुलना प्रदान करती है ।

तालिका सिस्टम पुस्तकालयों, वेब ब्राउज़र अनुप्रयोगों और एक सामान्य उद्देश्य एप्लिकेशन (अलार्म घड़ी ऐप) के लिए कोड आकारों की तुलना करती है। सभी मामलों में डेक्स टूल ने कोड का आकार 50% से अधिक घटा दिया।

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

मानक जावा वातावरण में जावा कोड में प्रत्येक वर्ग एक .classफ़ाइल में परिणाम करता है। इसका मतलब है, अगर जावा स्रोत कोड फ़ाइल में एक सार्वजनिक वर्ग और दो अनाम कक्षाएं हैं, तो आइए इवेंट हैंडलिंग के लिए कहें, तो जावा कंपाइलर कुल तीन .classफाइलें बनाएगा ।

संकलन चरण एंड्रॉइड प्लेटफ़ॉर्म पर समान है, इस प्रकार कई .classफ़ाइलों के परिणामस्वरूप । लेकिन .classफ़ाइलों के उत्पन्न होने के बाद , "dx" टूल का उपयोग सभी .classफ़ाइलों को एकल .dex, या Dalvik निष्पादन योग्य, फ़ाइल में बदलने के लिए किया जाता है । यह वह .dexफ़ाइल है जिसे Dalvik VM पर निष्पादित किया जाता है। .dexफ़ाइल स्मृति के उपयोग के लिए अनुकूलित किया गया है और डिजाइन मुख्य रूप से डेटा का साझा करने से प्रेरित है।


18
अच्छी जानकारी। सिर्फ एक बात की ओर इशारा करना। कभी-कभी विधि आह्वान निर्देश संख्या सीमा के कारण कई डीएक्स फाइलें होंगी। यह सीमा 65k विधियाँ है। उस स्थिति में आपका कोड एक फ़ाइल के अंदर नहीं बल्कि 2 या अधिक में होगा लेकिन बाकी सब अभी भी लागू होता है। चूंकि डायनेमिक क्लास लोडिंग भी उपलब्ध है इसलिए आप फाइलों से कोड (फिर से डीएक्सएड फॉर्म में) लोड कर सकते हैं और इस तरह कोड कई डीएक्स फाइलों के अंदर होगा।
इगोर :56ordaš
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.