एंड्रॉइड इंस्टॉल किए गए ऐप्स की एपीके फाइलें क्यों रखता है?


31

एंड्रॉइड /data/appडायरेक्टरी में डायरेक्टरी और सिस्टम एप्स में इंस्टाल यूजर एप्स की एपीके फाइल्स रखता है /system/app

क्या इसका मतलब यह है कि एंड्रॉइड हर बार ऐप लॉन्च होने के बाद एपीके फाइलों से डीएक्स फाइलें निकालता है? यदि नहीं, तो क्या मैं एपीके फ़ाइलों को सुरक्षित रूप से हटा सकता हूं और अभी भी ऐप चला सकता हूं?

जवाबों:


43

एक एंड्रॉइड एपीके में आमतौर पर ये चीजें होती हैं।

assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex

स्थापना पर, एपीके फ़ाइल को कॉपी किया जाता है /data/app, और उस पर classes.dexचलाकर dex2oatउसे "अनुकूलित" किया जाता है (Android 5+ lib/पर भी निकाला जाता है)। ऑप्टिमाइज़ेशन के परिणाम को स्टोर किया जाता है, /data/dalvik-cache/इसलिए ऐप को केवल एक बार इंस्टॉलेशन या अपडेट के लिए ऑप्टिमाइज़ किया जाना चाहिए । बाकी सब कुछ एपीके के अंदर रखा गया है। तो पहला उत्तर बहुत स्पष्ट है: इस तरह की चीजें assetsऔर resजो ऐप द्वारा आवश्यक हैं, प्रदान की जानी चाहिए, और वे एपीके के अंदर हैं। एपीके फाइल को सपोर्टिंग उद्देश्यों के लिए रखा गया है। यदि आप एक एपीके को हटाते हैं, तो ऐप निश्चित रूप से शुरू नहीं होगा। (ऐप: मेरी संपत्ति कहां है?)

दूसरा, Google Play ने "डेल्टा अपडेट" के लिए समर्थन जोड़ा बहुत पहले। डेल्टा अद्यतन प्रक्रिया में, पुराने पैकेज और नए पैकेज के बीच अंतर की गणना की जाती है। तब जीपी "डेल्टा" डाउनलोड करता है और अपडेट किए गए एपीके को प्राप्त करने के लिए मूल एपीके में परिवर्तन लागू करता है, इस प्रकार डाउनलोड आकार को कम करता है।

एक एपीके हमेशा साइन किया जाता है। यह पैकेज में दुर्भावनापूर्ण संशोधन को रोक सकता है। आप निश्चित रूप से एक बदला हुआ ऐप इंस्टॉल नहीं करना चाहते हैं बिना यह जाने कि क्या बदला है, या क्या कोई वायरस इंजेक्ट किया गया है। META-INF/अंदर APK इस उद्देश्य के लिए काम करता है। अनौपचारिक परिवर्तन के परिणामस्वरूप गैर-मिलान हस्ताक्षर होंगे, और एंड्रॉइड सिस्टम modded ऐप को स्थापित करने से मना कर देगा।

इसके अलावा, जब आप अपने एंड्रॉइड ओएस को अपडेट करते हैं, तो सभी डेक्स फाइलें फिर से "अनुकूलित" होती हैं, ताकि आपको उन्हें एक-एक करके फिर से स्थापित करने की आवश्यकता न हो। जैसा कि ऊपर कहा गया है, अनुकूलन को classes.dexमूल पैकेज से फ़ाइल की आवश्यकता होती है ।


5
ध्यान दें कि Google Play Store की डेल्टा अद्यतन क्षमताएं स्थापित और अपडेट किए गए संस्करणों और बाद के पैचिंग के बीच डेल्टा की गणना करने के लिए APK होने पर निर्भर करती हैं। इसके अलावा, एपीके को कंप्रेस किया जाता है, इसलिए यह कुछ जगह बचाता है (कोई भी आपको याद करता है पुराने जिपलाइन!)
तमोग्ना चौधरी

@Tamoghna Space वास्तव में कोई समस्या नहीं है, अन्यथा Android 5+ lib/से APK निकाला नहीं जाता , iOS IPA से सब कुछ नहीं निकालता। यह सिर्फ बुनियादी अखंडता की जाँच के लिए है।
iBug

Executables शायद ही कभी अच्छी तरह से संपीड़ित करते हैं - अंतरिक्ष की बचत, Binarized XML फ़ाइलों जैसे संकुचित संसाधनों से अधिक संबंधित है, जिन्हें निकाला नहीं गया है। इसके अलावा, उस ZipAlign के बारे में - संसाधन की पहुंच संपीड़ित फ़ाइलों को अनुकूलित (शब्द-संरेखित) पढ़ें पर कुछ तेज हो सकती है।
तमोग्ना चौधरी

1
तो html और js फ़ाइलों जैसी संपत्ति फ़ाइलों को apk से एंड्रॉइड फ़ाइल सिस्टम में किसी विशिष्ट स्थान पर कॉपी नहीं किया जाता है?
user1788736

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