Android कंपैटबिलिटी डेफ़िनिशन डॉक्यूमेंट (सीडीडी) के अपडेट किए जा सकने वाले सॉफ़्टवेयर के लिए, डिवाइसों में SystemUpdatePolicy
क्लास को लागू करना ज़रूरी है. SystemUpdatePolicy
, डिवाइस के मालिक (डीओ) ऐप्लिकेशन को सिस्टम अपडेट के इंस्टॉलेशन को कंट्रोल करने की अनुमति देता है. हालांकि, इसके लिए ज़रूरी है कि डिवाइस पर डीओ ऐप्लिकेशन मौजूद हो.
डिवाइस के मालिकों को सूचना दें
ओवर-द-एयर (ओटीए) क्लाइंट को सिस्टम एपीआई का इस्तेमाल करके, डिवाइस के मालिक के ऐप्लिकेशन को, आ रहे ओटीए अपडेट के बारे में सूचना देनी चाहिए. जब ओटीए अपडेट पहली बार उपलब्ध होगा, तब ओटीए क्लाइंट में टाइमस्टैंप रिकॉर्डिंग भी शामिल होनी चाहिए. डिवाइस के मालिक के ऐप्लिकेशन को सूचना देने के लिए, ओटीए क्लाइंट DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
को कॉल कर सकते हैं. अगर ओटीए क्लाइंट को यह नहीं पता कि कोई अपडेट
सुरक्षा पैच है या नहीं, तो ओटीए क्लाइंट DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
का इस्तेमाल कर सकता है.
अगर कोई अपडेट फ़िलहाल उपलब्ध नहीं है, तो OTA क्लाइंट इसकी जानकारी देता है. इसके लिए, वह updateReceivedTime
आर्ग्युमेंट को -1
पर सेट करता है.
हमारा सुझाव है कि जब भी ओटीए क्लाइंट, ओटीए सर्वर से अनुरोध करे या क्लाइंट पर ओटीए को पुश किया जाए, तब सूचनाएं भेजें. सूचनाएं ज़्यादा बार भी भेजी जा सकती हैं.
सिस्टम अपडेट से जुड़ी नीति
Android 9 में, डिवाइस के मालिकों को अपडेट कंट्रोल करने की सुविधा बेहतर तरीके से मिलती है. इसकी मदद से, वे ओटीए अपडेट को ज़्यादा से ज़्यादा 90 दिनों तक के लिए रोक सकते हैं. इस सुविधा के तहत, खास तरह के डिवाइस (जिसे पहले सीओएसयू कहा जाता था) पर ध्यान दिया जाता है. इस सुविधा की मदद से, मालिक छुट्टियों जैसी अहम अवधि के दौरान डिवाइसों पर चल रहे ओएस वर्शन को रोक सकते हैं.
सीडीडी का पालन करने के लिए, ओटीए क्लाइंट को ग्राहक के व्यवहार के आधार पर बनी नीतियों को लागू करना होगा. डीओ ये नीतियां सेट कर सकता है. डिवाइस के सिस्टम अपडेट सबसिस्टम को इनका पालन करना होगा:
डिवाइस के मालिक, Android 9 या उसके बाद के वर्शन में, फ़्रीज़ करने की अवधि सेट भी कर सकते हैं. इससे, छुट्टियों या व्यस्त समय जैसी अहम अवधियों के दौरान, डिवाइस के ओएस वर्शन को फ़्रीज़ किया जा सकता है. फ़्रीज़ की अवधि के दौरान, सिस्टम
ओटीए अपडेट इंस्टॉल नहीं करता. हमारा सुझाव है कि आप
SystemUpdatePolicy.InstallationOption
(नीचे दिया गया सेक्शन देखें) का इस्तेमाल करें. हालांकि, डिवाइस फ़्रीज़ है या नहीं, यह पता करने के लिए OTA क्लाइंट,
SystemUpdatePolicy.getFreezePeriods()
को भी कॉल कर सकता है.
इंस्टॉल करने के विकल्प लागू करना
Android 9 में @SystemApi,
SystemUpdatePolicy.InstallationOption
को शामिल किया गया है. इसे सिस्टम अपडेट क्लाइंट के लिए डिज़ाइन किया गया है.
SystemUpdatePolicy.InstallationOption
, नीतियों और फ़्रीज़ पीरियड के लिए एक रैपर क्लास के तौर पर काम करता है. इंस्टॉलेशन के विकल्प से क्लाइंट को यह पता चलता है कि आने वाले सिस्टम अपडेट पर क्या कार्रवाई की जाए और वह कार्रवाई कितने समय तक मान्य रहेगी. यह जानकारी, सिस्टम अपडेट की मौजूदा नीति या सेट की गई किसी भी फ़्रीज़ अवधि के हिसाब से दी जाती है. इंस्टॉलेशन का विकल्प इनमें से कोई एक हो सकता है:
-
TYPE_INSTALL_AUTOMATIC
- सिस्टम के अपडेट उपलब्ध होते ही, वे उपयोगकर्ता के रुकावट के बिना तुरंत इंस्टॉल हो जाते हैं. डिवाइस अपने-आप रीबूट हो जाता है. -
TYPE_POSTPONE
- आने वाले सिस्टम अपडेट को ज़्यादा से ज़्यादा 30 दिनों तक विलंब किया जा सकता है. लोग, अपडेट को मैन्युअल तरीके से इंस्टॉल नहीं कर सकते. डिवाइस बनाने वाली कंपनियां यह चुन सकती हैं कि उन्हें सुरक्षा पैच को ब्लॉक करना है या नहीं. -
TYPE_PAUSE
- अगली सूचना मिलने तक, सिस्टम के अपडेट मिलने में कभी भी देरी हो सकती है. उपयोगकर्ता मैन्युअल रूप से अपडेट को इंस्टॉल नहीं कर सकते.TYPE_PAUSE
, सभी अपडेट में देरी करता है. इनमें, सुरक्षा पैच भी शामिल हैं.
सिस्टम अपडेट क्लाइंट, SystemUpdatePolicy.getInstallationOptionAt(long when)
का इस्तेमाल करके SystemUpdatePolicy.InstallationOption
से क्वेरी कर सकते हैं. यहां when से पता चलता है कि इंस्टॉलेशन के विकल्प के लिए, क्वेरी कब की गई थी. यह समय, Epoch के बाद के मिलीसेकंड में दिखाया जाता है. SystemUpdatePolicy.getInstallationOptionAt(long when)
तरीके का इस्तेमाल करके, सिस्टम अपडेट क्लाइंट, रिटर्न किए गए विकल्प पर तब तक कार्रवाई कर सकते हैं, जब तक कि वह समयसीमा खत्म न हो जाए. लौटाए गए विकल्प की समयसीमा खत्म होने के बाद, क्लाइंट सबसे हाल ही के विकल्प के लिए नए टाइमस्टैंप का इस्तेमाल करके, दूसरी क्वेरी कर सकता है.
अगर पूरी नीति अपडेट की जाती है, तो सिस्टम अपडेट क्लाइंट को
DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
ब्रॉडकास्ट सुनने होंगे.
TYPE_PAUSE नीति की पुष्टि करें
आप मैन्युअल तरीके से पुष्टि कर सकते हैं कि TYPE_PAUSE
विकल्प किसी ओटीए सिस्टम पर काम कर रहा है या नहीं.
नीति TYPE_PAUSE लागू है
यह पुष्टि करने के लिए कि TYPE_PAUSE
नीति काम कर रही है या नहीं:
-
अपने-आप लागू होने वाली नीति सेट करें और
TYPE_PAUSE
की जानकारी दें. - सिस्टम क्लॉक के रुकने के दौरान, ओटीए अपडेट को पुश करें.
- पुष्टि करें कि डिवाइस ओटीए अपडेट को न स्वीकार करता हो और उपयोगकर्ता मैन्युअल रूप से अपडेट को इंस्टॉल नहीं कर सकता हो.
- अगर डिवाइस A/B डिवाइस है, तो डिवाइस को रीबूट करें और पुष्टि करें कि रीबूट करने से, अपडेट अपने-आप इंस्टॉल न हुआ हो.
नीति TYPE_PAUSE की समय-सीमा खत्म हो गई है
यह पुष्टि करने के लिए कि समयसीमा खत्म हो चुकी TYPE_PAUSE
नीति काम कर रही है:
-
अपने-आप लागू होने वाली नीति सेट करें और
TYPE_PAUSE
की जानकारी दें. - सिस्टम क्लॉक के रुकने के दौरान, ओटीए अपडेट को पुश करें.
- रोकने की अवधि खत्म होने का इंतज़ार करें.
- पुष्टि करें कि डिवाइस अपने-आप रीबूट हो रहा है और रीबूट होने के बाद, ओटीए अपडेट किया जा रहा है.