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

A / B विभाजन के बिना पुराने Android उपकरणों पर, फ़्लैश स्पेस में आमतौर पर निम्नलिखित विभाजन होते हैं:

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

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

एक विशिष्ट OTA अद्यतन में निम्न चरण होते हैं:

  1. डिवाइस ओटीए सर्वर के साथ नियमित रूप से जांच करता है और अपडेट की उपलब्धता के बारे में सूचित किया जाता है, जिसमें अपडेट पैकेज का URL और उपयोगकर्ता को दिखाने के लिए विवरण स्ट्रिंग शामिल है।
  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. # में पाया जा सकता है /cache/recovery/last_log. #

अद्यतन पैकेज

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

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

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

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

पिछले रिलीज से पलायन

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

सी फ़ंक्शन सी ++ विधि
device_recovery_start () डिवाइस :: RecoveryStart ()
device_toggle_display ()
device_reboot_now ()
पुनर्प्राप्ति :: चेककी ()
(रिकवरीयूआई :: IsKeyPressed ())
device_handle_key () डिवाइस ::
device_perform_action () डिवाइस :: InvokeMenuItem ()
device_wipe_data () डिवाइस :: WipeData ()
device_ui_init () ScreenRecoveryUI :: Init ()

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