गैर-ए/बी सिस्टम अपडेट

ए/बी विभाजन के बिना पुराने एंड्रॉइड डिवाइस पर, फ्लैश स्पेस में आमतौर पर निम्नलिखित विभाजन होते हैं:

गाड़ी की डिक्की
लिनक्स कर्नेल और एक न्यूनतम रूट फाइल सिस्टम (रैम डिस्क में लोड) शामिल है। यह सिस्टम और अन्य विभाजनों को माउंट करता है और सिस्टम विभाजन पर स्थित रनटाइम को प्रारंभ करता है।
व्यवस्था
एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) पर उपलब्ध सोर्स कोड वाले सिस्टम एप्लिकेशन और लाइब्रेरी शामिल हैं। सामान्य ऑपरेशन के दौरान, यह विभाजन केवल पढ़ने के लिए माउंट किया जाता है; इसकी सामग्री केवल ओटीए अपडेट के दौरान बदलती है।
वेंडर
इसमें सिस्टम एप्लिकेशन और लाइब्रेरी शामिल हैं जिनके पास एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) पर सोर्स कोड उपलब्ध नहीं है। सामान्य ऑपरेशन के दौरान, यह विभाजन केवल पढ़ने के लिए माउंट किया जाता है; इसकी सामग्री केवल ओटीए अपडेट के दौरान बदलती है।
उपयोगकर्ता का आधार - सामग्री
उपयोगकर्ता, आदि द्वारा इंस्टॉल किए गए एप्लिकेशन द्वारा सहेजे गए डेटा को संग्रहीत करता है। यह विभाजन सामान्य रूप से ओटीए अपडेट प्रक्रिया द्वारा छुआ नहीं जाता है।
कैश
कुछ अनुप्रयोगों द्वारा उपयोग किए जाने वाले अस्थायी होल्डिंग क्षेत्र (इस विभाजन तक पहुंचने के लिए विशेष ऐप अनुमतियों की आवश्यकता होती है) और डाउनलोड किए गए ओटीए अपडेट पैकेज के भंडारण के लिए। अन्य प्रोग्राम इस स्थान का उपयोग इस उम्मीद के साथ करते हैं कि फ़ाइलें किसी भी समय गायब हो सकती हैं। कुछ ओटीए पैकेज संस्थापन के परिणामस्वरूप यह विभाजन पूरी तरह से मिटा दिया जा सकता है। कैश में ओटीए अपडेट से अपडेट लॉग भी होते हैं।
स्वास्थ्य लाभ
कर्नेल और विशेष रिकवरी बाइनरी सहित एक दूसरा पूर्ण लिनक्स सिस्टम शामिल है जो एक पैकेज पढ़ता है और अन्य विभाजन को अद्यतन करने के लिए इसकी सामग्री का उपयोग करता है।
विविध
ओटीए पैकेज लागू होने के दौरान डिवाइस के पुनरारंभ होने की स्थिति में यह क्या कर रहा है, इसके बारे में कुछ जानकारी को दूर करने के लिए पुनर्प्राप्ति द्वारा उपयोग किया जाने वाला छोटा विभाजन।

एक ओटीए अपडेट का जीवन

एक विशिष्ट ओटीए अपडेट में निम्नलिखित चरण होते हैं:

  1. डिवाइस ओटीए सर्वर के साथ नियमित जांच करता है और अपडेट की उपलब्धता के बारे में अधिसूचित किया जाता है, जिसमें अपडेट पैकेज का यूआरएल और उपयोगकर्ता को दिखाने के लिए एक विवरण स्ट्रिंग शामिल है।
  2. कैश या डेटा विभाजन में डाउनलोड अपडेट करें, और इसके क्रिप्टोग्राफ़िक हस्ताक्षर /system/etc/security/otacerts.zip में प्रमाणपत्रों के विरुद्ध सत्यापित किए जाते हैं। उपयोगकर्ता को अद्यतन स्थापित करने के लिए कहा जाता है।
  3. डिवाइस रिकवरी मोड में रीबूट होता है, जिसमें रिकवरी पार्टीशन में कर्नेल और सिस्टम को बूट पार्टीशन में कर्नेल के बजाय बूट किया जाता है।
  4. रिकवरी बाइनरी init द्वारा शुरू की गई है। इसे /cache/recovery/command में कमांड-लाइन तर्क मिलते हैं जो इसे डाउनलोड किए गए पैकेज पर इंगित करते हैं।
  5. पुनर्प्राप्ति पैकेज के क्रिप्टोग्राफ़िक हस्ताक्षर को /res/keys (रिकवरी पार्टीशन में निहित RAM डिस्क का भाग) में सार्वजनिक कुंजी के विरुद्ध सत्यापित करती है।
  6. डेटा को पैकेज से निकाला जाता है और आवश्यकतानुसार बूट, सिस्टम और/या विक्रेता विभाजन को अद्यतन करने के लिए उपयोग किया जाता है। सिस्टम विभाजन पर छोड़ी गई नई फ़ाइलों में से एक में नए पुनर्प्राप्ति विभाजन की सामग्री है।
  7. डिवाइस सामान्य रूप से रीबूट होता है।
    1. नया अद्यतन बूट विभाजन लोड किया गया है, और यह नए अद्यतन सिस्टम विभाजन में बायनेरिज़ को माउंट और निष्पादित करना शुरू करता है।
    2. सामान्य स्टार्टअप के भाग के रूप में, सिस्टम पुनर्प्राप्ति विभाजन की सामग्री को वांछित सामग्री (जो पहले /system में फ़ाइल के रूप में संग्रहीत किया गया था) के विरुद्ध जांचता है। वे अलग हैं, इसलिए पुनर्प्राप्ति विभाजन को वांछित सामग्री के साथ फिर से ताज़ा किया जाता है। (बाद के बूटों पर, पुनर्प्राप्ति विभाजन में पहले से ही नई सामग्री शामिल है, इसलिए कोई रिफ़्लैश आवश्यक नहीं है।)

सिस्टम अपडेट पूरा हो गया है! अद्यतन लॉग /cache/recovery/last_log. #

पैकेज अपडेट करें

एक अद्यतन पैकेज एक .zip फ़ाइल है जिसमें निष्पादन योग्य बाइनरी META-INF/com/google/android/update-binary है। पैकेज पर हस्ताक्षर सत्यापित करने के बाद, recovery इस बाइनरी को /tmp में निकालती है और निम्नलिखित तर्कों को पारित करते हुए बाइनरी चलाती है:

  • बाइनरी एपीआई संस्करण संख्या अपडेट करें । यदि तर्क अद्यतन बाइनरी परिवर्तन के लिए पारित हो जाते हैं, तो यह संख्या बढ़ जाती है।
  • कमांड पाइप का फाइल डिस्क्रिप्टर । अपडेट प्रोग्राम इस पाइप का उपयोग रिकवरी बाइनरी में कमांड भेजने के लिए कर सकता है, ज्यादातर यूआई परिवर्तनों के लिए, जैसे कि उपयोगकर्ता को प्रगति का संकेत देना।
  • अद्यतन पैकेज़ का फ़ाइल नाम .zip फ़ाइल

एक अद्यतन पैकेज अद्यतन बाइनरी के रूप में किसी भी स्थिर रूप से जुड़े बाइनरी का उपयोग कर सकता है। OTA पैकेज निर्माण उपकरण अपडेटर प्रोग्राम ( bootable/recovery/updater ) का उपयोग करते हैं, जो एक सरल स्क्रिप्टिंग भाषा प्रदान करता है जो कई इंस्टॉलेशन कार्य कर सकता है। आप डिवाइस पर चल रहे किसी अन्य बाइनरी को स्थानापन्न कर सकते हैं।

अपडेटर बाइनरी पर विवरण के लिए, सिंटैक्स संपादित करें, और बिल्टिन फ़ंक्शंस, ओटीए पैकेज के अंदर देखें।

पिछली रिलीज़ से माइग्रेट करना

एंड्रॉइड 2.3/3.0/4.0 रिलीज से माइग्रेट करते समय, प्रमुख परिवर्तन सभी डिवाइस-विशिष्ट कार्यक्षमता का रूपांतरण है, जो पूर्वनिर्धारित नामों के साथ सी फ़ंक्शन के सेट से सी ++ ऑब्जेक्ट्स में परिवर्तित होता है। निम्न तालिका पुराने कार्यों और नई विधियों को सूचीबद्ध करती है जो मोटे तौर पर समकक्ष उद्देश्य की पूर्ति करती हैं:

सी समारोह सी ++ विधि
डिवाइस_रिकवरी_स्टार्ट () डिवाइस :: रिकवरीस्टार्ट ()
डिवाइस_टॉगल_डिस्प्ले ()
device_reboot_now ()
रिकवरीयूआई :: चेककी ()
(रिकवरीयूआई :: IsKeyPressed ())
डिवाइस_हैंडल_की () डिवाइस :: हैंडलमेनूकी ()
डिवाइस_परफॉर्म_एक्शन () डिवाइस :: InvokeMenuItem ()
डिवाइस_वाइप_डेटा () डिवाइस :: वाइपडेटा ()
device_ui_init () स्क्रीन रिकवरीयूआई :: इनिट ()

पुराने कार्यों को नई विधियों में परिवर्तित करना यथोचित रूप से सीधा होना चाहिए। अपने नए डिवाइस उपवर्ग का एक उदाहरण बनाने और वापस करने के लिए नया make_device() फ़ंक्शन जोड़ना न भूलें।