2015-06-15 9 views
7

क्या है मैं दलविक वीएम, डेक्स और स्माली के बारे में कुछ सीखने जा रहा हूं।स्माली कोड एंड्रॉइड

मैंने स्माली के बारे में पढ़ा है, लेकिन अभी भी स्पष्ट रूप से यह नहीं समझ सकता कि कंपाइलर्स की श्रृंखला में इसकी जगह कहां है। और इसका उद्देश्य क्या है।
यहाँ कुछ सवाल:

  1. मुझे पता है के रूप में, अन्य वर्चुअल मशीनें रूप Dalvik बाईटकोड चलाने के लिए, एंड्रॉयड के मामले में यह डेक्स बाइट कोड है।
  2. स्माली क्या है? क्या एंड्रॉइड ओएस या डाल्विक वीएम सीधे इसके साथ काम करते हैं, या यह सिर्फ वही डेक्स बाइटकोड है लेकिन मानव के लिए अधिक पठनीय है?
  3. क्या यह विंडोज के लिए असंतुलन जैसा है (जैसे ओलीडीबीजी) प्रोग्राम निष्पादन योग्य विभिन्न मशीन कोड (उदाहरण के लिए डी 3, 5 एफ) से युक्त है और प्रत्येक मशीन कोड के लिए उचित असेंबली कमांड है, लेकिन डाल्विक वीएम भी सॉफ्टवेयर है, इसलिए स्माली पठनीय है बाइटकोड का प्रतिनिधित्व
  4. नया एआरटी वातावरण है। क्या यह अभी भी बाइटकोड का उपयोग करता है या यह सीधे देशी कोड निष्पादित करता है?

अग्रिम धन्यवाद।

उत्तर

17

जब आप कोई एप्लिकेशन कोड बनाते हैं, तो एपीके फ़ाइल में एक .dex फ़ाइल होती है, जिसमें बाइनरी डाल्विक बाइटकोड होता है। यह प्रारूप है कि मंच वास्तव में समझता है। हालांकि, बाइनरी कोड को पढ़ने या संशोधित करना आसान नहीं है, इसलिए मानव पठनीय प्रतिनिधित्व में और उससे कनवर्ट करने के लिए वहां उपकरण हैं। सबसे आम मानव पठनीय प्रारूप स्माली के रूप में जाना जाता है। यह अनिवार्य रूप से आपके द्वारा उल्लिखित असेंबलर जैसा ही है।

उदाहरण के लिए, आप ऐसा

int x = 42 

कुछ मान लिया जाये कि यह पहली चर, विधि हेक्साडेसिमल अनुक्रम शामिल सबसे अधिक संभावना होगी तो डेक्स कोड है करता जावा कोड है कहना

13 00 2A 00 

यदि आप उस पर बाक्समाली चलाते हैं, तो आपको एक टेक्स्ट फ़ाइल मिलेगी जिसमें

const/16 v0, 42 

जो बाइनरी कोड के बाद स्पष्ट रूप से बहुत अधिक पठनीय है। लेकिन मंच को स्माली के बारे में कुछ नहीं पता है, यह बाइटकोड के साथ काम करना आसान बनाने के लिए एक उपकरण है।

दलविक और एआरटी दोनों dalvik बाइटकोड युक्त .dex फ़ाइलों को लेते हैं। यह एप्लिकेशन डेवलपर के लिए पूरी तरह से पारदर्शी है, केवल एक ही अंतर यह है कि जब एप्लिकेशन इंस्टॉल और चलाया जाता है तो दृश्यों के पीछे क्या होता है।

+0

क्या आप इस में गहराई से पढ़ने के लिए कुछ सुझाव दे सकते हैं? यह मेरे लिए बहुत दिलचस्प है – brqgddez

+1

आप https://source.android.com/devices/tech/dalvik/dex-format.html – Antimony

+0

पर डेक्स प्रारूप का विवरण देख सकते हैं, लेकिन अगर हमारे पास टूल्स जैसे टूल हैं तो स्माली का उपयोग क्यों करें jadx decompiler, जो smali के बजाय अधिक मानव पठनीय जावा कोड प्राप्त कर सकते हैं? – JustAMartin

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