जवाबों:
यह तंत्र Android डेवलपर्स साइट पर निम्नानुसार वर्णित है:
zipalign एक संग्रह संरेखण उपकरण है जो Android अनुप्रयोग (.apk) फ़ाइलों के लिए महत्वपूर्ण अनुकूलन प्रदान करता है। उद्देश्य यह सुनिश्चित करना है कि सभी असंपीड़ित डेटा फ़ाइल की शुरुआत के सापेक्ष एक विशेष संरेखण के साथ शुरू होता है। विशेष रूप से, यह .apk के भीतर सभी असंपीड़ित डेटा का कारण बनता है, जैसे कि चित्र या कच्ची फाइलें, 4-बाइट सीमाओं पर संरेखित किया जाना। यह सभी अंशों को सीधे mmap () के साथ एक्सेस करने की अनुमति देता है, भले ही उनके पास संरेखण प्रतिबंधों के साथ बाइनरी डेटा हो। लाभ यह है कि एप्लिकेशन को चलाते समय रैम की खपत में कमी आती है।
संक्षेप में: .apk
पैक्ड फ़ाइल के अंदर डेटा के आदेश के कारण सामग्री आसान / तेज / अधिक इष्टतम एक्सेस की जा सकती है।
गहरी जानकारी के लिए, AddictiveTips पर एक "पूर्ण मार्गदर्शिका" उपलब्ध है: एंड्रॉइड में Zipalign क्या है और Apps को कैसे ZPLign किया जाए , जो आपके प्रश्न के दूसरे भाग का उत्तर देता है:
काफी स्पष्ट रूप से, स्थिति को अन-असाइन किए गए एप्लिकेशन पैकेजों के लिए आरक्षित किया जाएगा। संसाधन पढ़ना धीमा होगा और मेमोरी का उपयोग स्पेक्ट्रम के उच्च अंत पर होगा। यह इस बात पर भी निर्भर करता है कि कितने बिना आवेदन के मौजूद हैं। उदाहरण के लिए, यदि एक बिना लाइसेंस वाले घर के आवेदन की संख्या कम है, तो आपको धीमी गति से लॉन्च का समय दिखाई देगा। यह सबसे अच्छा मामला है। एक सबसे खराब स्थिति के लिए, बहुत सारे अनइंस्टॉल किए गए एप्लिकेशन के परिणामस्वरूप सिस्टम को बार-बार शुरू करने और प्रक्रियाओं को मारने और लैग और विशाल बैटरी ड्रेन के साथ संघर्ष करना पड़ेगा।
ऊपर जोड़ने के लिए कैसे बिल्कुल zipalign काम करता है -
एंड्रॉइड ऑपरेटिंग वातावरण में, प्रत्येक एप्लिकेशन पैकेज में संग्रहीत डेटा फ़ाइलों को कई प्रक्रियाओं द्वारा एक्सेस किया जाता है, उदाहरण के लिए, इंस्टॉलर संबंधित अनुमतियों को निर्धारित करने के लिए डेटा प्रकट को पढ़ेगा; सिस्टम सर्वर इन संसाधनों को कई कारणों से पढ़ सकता है, जैसे सूचनाएं प्रदर्शित करना; उदाहरण के लिए, होम एप्लिकेशन, आवेदन का नाम और आइकन प्राप्त करने के लिए संसाधनों को पढ़ेगा। चूंकि एंड्रॉइड ए ट्रू मल्टी-टास्किंग ऑपरेटिंग इंफ्रास्ट्रक्चर पर आधारित है, इसलिए ये फाइलें लगातार और बार-बार एक्सेस की जाती हैं। अंत में, लेकिन कम से कम, अनुप्रयोग स्वयं प्रकट डेटा पढ़ता है।
जैसा कि एंड्रॉइड लिनक्स आधारित है, मेमोरी-मैपिंग प्रक्रियाओं के कुशल संचालन में महत्वपूर्ण भूमिका निभाता है। अनिवार्य रूप से, एंड्रॉइड ओएस के संसाधन-हैंडलिंग कोड के लिए इष्टतम संरेखण 4-बाइट सीमाएं हैं। इसका मतलब यह है कि, यदि एपीके 4-बाइट सीमाओं के लिए मेमोरी-मैप किए गए हैं, और तदनुसार गठबंधन किया गया है, तो ओएस को वांछित डेटा प्रकट करने के लिए पूरे एप्लिकेशन पैकेज के माध्यम से 'पढ़ने' की आवश्यकता नहीं होगी। हर सिस्टम प्रक्रिया को पहले से पता चल जाएगा कि उसे वांछित संसाधनों की तलाश कहां करनी है, और इसलिए बहुत अधिक चिकनी और तेजी से निष्पादित होगा।
इसे सारांशित करते हुए, एपीपी को zipigning करने से पैकेज के भीतर सभी असम्पीडित डेटा 4-बाइट सीमाओं पर संरेखित हो जाते हैं, जिससे सभी भागों को मेमोरी-मैप के साथ सीधे एक्सेस किया जा सकता है। निष्पादन के दौरान रैम की खपत कम होती है क्योंकि क्वेरी कोड को पूरे एप्लिकेशन पैकेज के माध्यम से नहीं पढ़ना पड़ता है।
struct x { uint16_t id; uint32_t data[100]; };
यदि आप इसे 32-बिट संरेखित करना चाहते हैं तो मत करो ; उपयोगstruct x { uint16_t id; uint16_t padding; uint32_t data[100]; };