इस पेज पर, Android 9 की रिलीज़ में शामिल मुख्य सुविधाओं के बारे में खास जानकारी दी गई है. साथ ही, ज़्यादा जानकारी के लिए लिंक दिए गए हैं. सुविधा के बारे में खास जानकारी देने वाले इन लेखों को, इस साइट पर सुविधा के दस्तावेज़ की जगह के हिसाब से व्यवस्थित किया गया है. सेक्शन को नई जगह पर ले जाने और उनका नाम बदलने के बारे में गाइड पाने के लिए, अगस्त 2018 में साइट से जुड़े अपडेट देखें.
बनाएं
सामान्य सिस्टम इमेज (जीएसआई)
सामान्य सिस्टम इमेज (जीएसआई), Android डिवाइसों के लिए कॉन्फ़िगरेशन में बदलाव करके बनाई गई सिस्टम इमेज होती है. सामान्य सिस्टम इमेज (जीएसआई) में, Android 9 के साथ लॉन्च होने वाले डिवाइसों और Android 9 पर अपग्रेड होने वाले डिवाइसों के लिए जीएसआई के बीच के अंतर के बारे में जानकारी शामिल होती है.
भवन निर्माण
हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल)
HIDL फ़्रेमवर्क के पिछले वर्शन के साथ काम करने की सुविधा
HIDL फ़्रेमवर्क के पुराने सिस्टम के साथ काम करने की सुविधा की पुष्टि करना, फ़्रेमवर्क के पुराने सिस्टम के साथ काम करने की सुविधा की पुष्टि करने का एक तरीका है.
डाइनैमिक रूप से उपलब्ध एचएएल
डाइनैमिक तौर पर उपलब्ध एचएएल, Android के हार्डवेयर सबसिस्टम को डाइनैमिक तौर पर बंद करने की सुविधा देते हैं. ऐसा तब होता है, जब उनका इस्तेमाल नहीं किया जा रहा हो या उनकी ज़रूरत न हो.
HIDL
HIDL MemoryBlock
HIDL MemoryBlock, hidl_memory
, HIDL @1.0::IAllocator
, और HIDL @1.0::IMapper
पर बनी एक ऐब्स्ट्रैक्ट लेयर है. इसे HIDL सेवाओं के लिए डिज़ाइन किया गया है. इन सेवाओं में, एक ही मेमोरी हीप को शेयर करने वाले कई मेमोरी ब्लॉक होते हैं.
डिवाइस ट्री ओवरले
कंप्रेस किए गए ओवरले
Android 9 और इसके बाद के वर्शन में, डिवाइस ट्री टेबल हेडर के वर्शन 1 का इस्तेमाल करते समय, डिवाइस ट्री ब्लॉब ओवरले (डीटीबीओ) इमेज में कंप्रेस किए गए ओवरले इस्तेमाल किए जा सकते हैं.
डीटीओ से जुड़े अपडेट
Android 9 और उसके बाद के वर्शन के लिए, बूटलोडर को यूनिफ़ाइड डिवाइस ट्री ब्लॉब को कर्नेल में पास करना ज़रूरी है. ऐसा डिवाइस ट्री ओवरले (डीटीओ) में बताई गई प्रॉपर्टी में बदलाव करने से पहले करना होगा.
डीटीबीओ इमेज हेडर वर्शनिंग
Android 9 और इसके बाद के वर्शन में, DTBO इमेज हेडर में वर्शन फ़ील्ड शामिल होता है.
डीटीबीओ की पुष्टि करना
Android 9 और उसके बाद के वर्शन के लिए, DTBO पार्टीशन ज़रूरी है. SoC DT में नोड जोड़ने या प्रॉपर्टी में बदलाव करने के लिए, बूटलोडर को SoC DT पर डिवाइस के हिसाब से DT को डाइनैमिक तौर पर ओवरले करना होगा. ज़्यादा जानकारी के लिए, कंपाइल करना और पुष्टि करना लेख पढ़ें.
कर्नेल से जुड़े नियमों का पालन
Android 9 और इसके बाद के वर्शन में, ऐसी ज़रूरी शर्तें शामिल हैं जिनका असर कर्नल, उसके इंटरफ़ेस, और DTBO के इस्तेमाल पर पड़ता है. ज़्यादा जानकारी के लिए, ये पेज देखें:
- स्टेबल कर्नल रिलीज़ और अपडेट
- Android Common Kernels
- मॉड्यूलर कर्नल से जुड़ी ज़रूरी शर्तें
- इंटरफ़ेस से जुड़ी ज़रूरी शर्तें
- डिवाइस ट्री ओवरले
वेंडर एनडीके
डिज़ाइन में हुए बदलाव
Android 9 और इसके बाद के वर्शन में, VNDK के डिज़ाइन में हुए बदलावों के बारे में जानने के लिए, इन पेजों पर जाएं:
- वेंडर नेटिव डेवलपमेंट किट (वीएनडीके)
- वीएनडीके बिल्ड सिस्टम की सुविधा
- वीएनडीके डेफ़िनिशन टूल
- डायरेक्ट्री, नियम, और sepolicy
- वीएनडीके एक्सटेंशन
- लिंकर नेमस्पेस
एबीआई की जांच करने वाला टूल
एबीआई की स्थिरता पेज पर, ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) चेकर के बारे में बताया गया है. यह चेकर यह पक्का करता है कि वीएनडीके लाइब्रेरी में किए गए बदलाव, एबीआई के मुताबिक हों.
वीएनडीके स्नैपशॉट
सिस्टम इमेज, वीएनडीके स्नैपशॉट का इस्तेमाल कर सकती है. इससे वेंडर इमेज को सही वीएनडीके लाइब्रेरी मिलती हैं. ऐसा तब भी होता है, जब सिस्टम और वेंडर इमेज को Android के अलग-अलग वर्शन से बनाया गया हो.
वेंडर इंटरफ़ेस ऑब्जेक्ट (वीआईएनटीएफ़ ऑब्जेक्ट)
वेंडर इंटरफ़ेस ऑब्जेक्ट सेक्शन में मौजूद इन पेजों पर, Android 9 और इसके बाद के वर्शन में हुए अपडेट के बारे में बताया गया है:
HIDL के बंद होने का शेड्यूल
इन पेजों पर, Android में एचआईडीएल एचएएल को बंद करने और हटाने का तरीका बताया गया है:
बूटलोडर
प्रॉडक्ट विभाजन
Android 9 और उसके बाद के वर्शन में, Android बिल्ड सिस्टम का इस्तेमाल करके /product
पार्टीशन बनाए जा सकते हैं. इससे पहले, Android 8.x में सिस्टम-ऑन-चिप (एसओसी) से जुड़े कॉम्पोनेंट को /system
पार्टीशन से /vendor
पार्टीशन में अलग किया जाता था. हालांकि, इसमें Android बिल्ड सिस्टम से बनाए गए ओईएम से जुड़े कॉम्पोनेंट के लिए जगह नहीं दी जाती थी.
बूट करने की वजह के कैननिकल फ़ॉर्मैट का पालन करना
Canonical Boot Reason पेज पर, Android 9 और उसके बाद के वर्शन में बूटलोडर बूट करने की वजह से जुड़े स्पेसिफ़िकेशन में हुए बदलावों के बारे में बताया गया है.
सिस्टम को रूट के तौर पर इस्तेमाल करना
Android 9 और इसके बाद के वर्शन के साथ लॉन्च किए गए सभी डिवाइसों को सिस्टम-एज़-रूट का इस्तेमाल करना होगा. यह ramdisk.img
को system.img
(इसे नो-रैमडिस्क भी कहा जाता है) में मर्ज करता है. इसके बाद, इसे rootfs के तौर पर माउंट किया जाता है.
बूट इमेज हेडर वर्शनिंग
Android 9 और उसके बाद के वर्शन में, बूट इमेज हेडर में हेडर वर्शन की जानकारी देने वाला फ़ील्ड होता है. बूटलोडर को इस वर्शन फ़ील्ड की जांच करनी चाहिए और उसके हिसाब से हेडर को पार्स करना चाहिए.
रिकवरी में डीटीबीओ
नॉन-A/B डिवाइसों पर, रिकवरी इमेज और डीटीबीओ पार्टिशन के बीच मेल न खाने की वजह से, ओटीए अपडेट फ़ेल हो सकते हैं. इससे बचने के लिए, रिकवरी इमेज में डीटीबीओ इमेज की जानकारी शामिल होनी चाहिए.
डिसप्ले
डिसप्ले कटआउट
डिस्प्ले कटआउट की मदद से, ऐप्लिकेशन डेवलपर ऐसे ऐप्लिकेशन बना सकते हैं जो स्क्रीन के कोने-कोने तक फैले हों. साथ ही, डिवाइस के सामने मौजूद ज़रूरी सेंसर के लिए जगह भी बची रहे.
घुमाने के सुझाव
स्क्रीन घुमाने की सुविधा से जुड़े अपडेट Android 9 और इसके बाद के वर्शन में, स्क्रीन घुमाने की सुविधा को लैंडस्केप या पोर्ट्रेट मोड पर पिन करने के लिए, उपयोगकर्ता के लिए कंट्रोल की सुविधा शामिल है. ऐसा तब भी किया जा सकता है, जब डिवाइस की पोज़िशन बदल जाती है.
सिंक किए गए ऐप्लिकेशन के ट्रांज़िशन
ऐप्लिकेशन के बीच स्विच करने की सुविधा को सिंक करने से, ऐप्लिकेशन के बीच स्विच करने के नए ऐनिमेशन इस्तेमाल किए जा सकते हैं.
टेक्स्ट क्लासिफ़िकेशन (पहले इसे TEXTCLASSIFIER कहा जाता था)
Android 9 और इसके बाद के वर्शन में, टेक्स्ट क्लासिफ़ायर सेवा शामिल है. टेक्स्ट क्लासिफ़िकेशन को लागू करने का यह सबसे सही तरीका है. साथ ही, यह डिफ़ॉल्ट सेवा को लागू करने का तरीका भी है.
वाइड-गैमट कलर
Android 9 और इसके बाद के वर्शन में, वाइड-गैमट कलर के लिए सहायता शामिल है. जैसे:
- हाई डाइनैमिक रेंज (एचडीआर)
- BT2020 कलर स्पेस में कॉन्टेंट प्रोसेस किया जा रहा है, लेकिन इसे एंड-टारगेट डेटास्पेस के तौर पर इस्तेमाल नहीं किया जा रहा है
वाइड-गैमट कलर का इस्तेमाल करने के लिए, डिवाइस के पूरे डिसप्ले स्टैक (जैसे कि स्क्रीन, हार्डवेयर कंपोज़र, जीपीयू) को वाइड-गैमट कलर या बफ़र फ़ॉर्मैट के साथ काम करना चाहिए. डिवाइसों को वाइड-गैमट कॉन्टेंट के लिए सहायता का दावा करने की ज़रूरत नहीं है, भले ही हार्डवेयर इसका समर्थन करता हो. हालांकि, हार्डवेयर का पूरा फ़ायदा लेने के लिए, वाइड-गैमट कलर की सुविधा चालू होनी चाहिए. विज़ुअल अनुभव में एकरूपता बनाए रखने के लिए, रनटाइम के दौरान वाइड-गैमट कलर को बंद नहीं किया जाना चाहिए.
इनके साथ काम करता है
Android कंपैटबिलिटी डेफ़िनिशन डॉक्यूमेंट
Android 9 का कंपैटबिलिटी डेफ़िनिशन डॉक्यूमेंट (सीडीडी), पिछले वर्शन के साथ काम करता है. इसमें नई सुविधाओं के अपडेट और पहले रिलीज़ की गई सुविधाओं के लिए ज़रूरी शर्तों में बदलाव शामिल हैं.
सेटिंग
ऐप्लिकेशन के बेहतर विजेट
Android ऐप्लिकेशन विजेट फ़्रेमवर्क, उपयोगकर्ता के इंटरैक्शन के बारे में ज़्यादा जानकारी देता है. खास तौर पर, जब कोई उपयोगकर्ता विजेट मिटाता है या उन्हें मैन्युअल तरीके से जोड़ता है. यह सुविधा, Launcher3 में डिफ़ॉल्ट रूप से उपलब्ध होती है.
अगर लॉन्चर ऐप्लिकेशन, Launcher3 पर आधारित नहीं है, तो डिवाइस बनाने वाली कंपनियों को इसे अपडेट करना होगा. इससे यह सुविधा काम करेगी. लॉन्चर ऐप्लिकेशन, डिवाइसों के साथ शिप किए जाते हैं. ओईएम को अपने डिफ़ॉल्ट लॉन्चर में, नए widgetFeatures फ़ील्ड के साथ काम करना होगा.
ध्यान दें कि यह सुविधा सिर्फ़ तब पूरी तरह से काम करती है, जब लॉन्चर इसे उम्मीद के मुताबिक लागू करते हैं. AOSP में, लागू करने का एक उदाहरण शामिल है. यहां दिए गए सैंपल कोड के लिए, AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca देखें.
डिवाइस की स्थिति में बदलाव होने पर, पैकेज इंस्टॉलर को सूचनाएं भेजना
सुरक्षित सिस्टम ब्रॉडकास्ट, उन ऐप्लिकेशन को भेजा जा सकता है जिनके पास INSTALL_PACKAGES
अनुमति है. ऐसा तब होता है, जब स्थानीय भाषा या डिसप्ले डेंसिटी जैसी प्रॉपर्टी में कोई बदलाव होता है. ब्रॉडकास्ट पाने वाले लोगों को मेनिफ़ेस्ट में रजिस्टर किया जा सकता है. साथ ही, ब्रॉडकास्ट पाने के लिए एक प्रोसेस शुरू की जाती है. यह सुविधा, पैकेज इंस्टॉलर के लिए काम की है. इससे वे इस तरह के बदलाव होने पर, ऐप्लिकेशन के अतिरिक्त कॉम्पोनेंट इंस्टॉल कर सकते हैं. हालांकि, ऐसा कम ही होता है, क्योंकि कॉन्फ़िगरेशन में ऐसे बदलाव कम ही होते हैं जिनसे इस ब्रॉडकास्ट को ट्रिगर किया जा सके.
डिवाइस की स्थिति में बदलाव होने पर सूचना देने वाले सोर्स कोड, platform/frameworks/base
में यहां दिए गए पाथ पर मौजूद हैं:
api/system-current.txt
core/java/android/content/Intent.java
core/res/AndroidManifest.xml
services/core/java/com/android/server/am/ActivityManagerService.java
इन्फ़ॉर्मेशन आर्किटेक्चर
Settings ऐप्लिकेशन के लिए जानकारी के आर्किटेक्चर में किए गए बदलावों से, ज़्यादा सुविधाएं मिलती हैं और उन्हें लागू करना आसान हो जाता है.
परीक्षण
Atest
Atest कमांड लाइन टूल की मदद से, Android टेस्ट को स्थानीय तौर पर बनाया, इंस्टॉल किया, और चलाया जा सकता है. इससे टेस्ट को फिर से चलाने की प्रोसेस बहुत तेज़ हो जाती है. इसके लिए, Trade Federation टेस्ट हार्नेस के कमांड लाइन विकल्पों की जानकारी होना ज़रूरी नहीं है.
Compatibility Test Suite
CTS डाउनलोड
Android 9 के साथ काम करने वाले Compatibility Test Suite (CTS) पैकेज, CTS डाउनलोड पेज पर उपलब्ध हैं. शामिल की गई जांचों के सोर्स कोड को, ओपन-सोर्स ट्री में मौजूद android-cts-9.0_r1
टैग के साथ सिंक किया जा सकता है.
सीटीएस के विकल्प
Android 9 के लिए, CTS v2 में ये कमांड और आर्ग्युमेंट जोड़े गए हैं:
run retry
उन सभी टेस्ट को फिर से आज़माता है जो पिछले सेशन में पूरे नहीं हुए या लागू नहीं किए गए.‘--shard-count
किसी सीटीएस रन को दिए गए इंडिपेंडेंट चंक की संख्या में बांटता है, ताकि उन्हें एक साथ कई डिवाइसों पर चलाया जा सके.
इसके अलावा, पहले दस्तावेज़ में शामिल न की गई कमांड --retry-type
को CTS v2 कंसोल कमांड के रेफ़रंस में जोड़ा गया है.
सुरक्षा चिप (एसई) सेवा
Secure Element सेवा, ग्लोबल प्लैटफ़ॉर्म पर काम करने वाले सुरक्षित एलिमेंट की जांच करती है. इसके लिए, यह पता लगाया जाता है कि डिवाइसों में एसई एचएएल लागू किया गया है या नहीं. अगर लागू किया गया है, तो कितने डिवाइसों में लागू किया गया है. इसका इस्तेमाल, एपीआई और सुरक्षित एलिमेंट को लागू करने की प्रोसेस की जांच करने के लिए किया जाता है.
सेंसर फ़्यूज़न बॉक्स
सेंसर फ़्यूज़न बॉक्स का इस्तेमाल, Camera Image Test Suite (Camera ITS) के सेंसर फ़्यूज़न टेस्ट और मल्टी-कैमरा सिंक टेस्ट में किया जाता है. साथ ही, यह Android फ़ोन के कैमरे और अन्य सेंसर के टाइमस्टैंप की सटीक जानकारी मेज़र करने के लिए, एक जैसा टेस्ट एनवायरमेंट उपलब्ध कराता है. ज़्यादा जानकारी के लिए, ये पेज देखें:
- सेंसर फ़्यूज़न बॉक्स के लिए क्विक स्टार्ट गाइड में, सेंसर फ़्यूज़न टेस्ट और सेंसर फ़्यूज़न बॉक्स को पहली बार सेट अप करने का तरीका बताया गया है.
- सेंसर फ़्यूज़न बॉक्स असेंबली में, सेंसर फ़्यूज़न बॉक्स को असेंबल करने का तरीका बताया गया है.
वाइड फ़ील्ड ऑफ़ व्यू वाला ITS-in-a-box
ITS-in-a-box के वाइड फ़ील्ड ऑफ़ व्यू, एक ऑटोमेटेड सिस्टम है. इसे Camera ITS में वाइड फ़ील्ड ऑफ़ व्यू (डब्ल्यूएफ़ओवी) और रेगुलर फ़ील्ड ऑफ़ व्यू (आरएफ़ओवी) वाले कैमरा सिस्टम की जांच करने के लिए डिज़ाइन किया गया है.
वेंडर टेस्ट सुइट
होस्ट कंट्रोलर आर्किटेक्चर
Vendor Test Suite (VTS) होस्ट कंट्रोलर आर्किटेक्चर, VTS टेस्ट फ़्रेमवर्क का आर्किटेक्चर है. इसे क्लाउड पर आधारित टेस्ट-सर्विसिंग सेवा के साथ इंटिग्रेट किया जाता है.
सेवा के नाम के हिसाब से HAL की टेस्टिंग
वीटीएस की सेवा के नाम के बारे में जानकारी देने वाले एचएएल की टेस्टिंग की मदद से, किसी एचएएल इंस्टेंस के सेवा के नाम का पता लगाया जा सकता है. यह जानकारी, उस डिवाइस के आधार पर मिलती है जिस पर वीटीएस टेस्ट चल रहे हैं.
एचएएल की जांच की जा सकती है या नहीं, इसकी जांच करना
वीटीएस एचएएल की जांच करने की सुविधा में, डिवाइस कॉन्फ़िगरेशन का इस्तेमाल करने के लिए रनटाइम तरीका शामिल होता है. इससे यह पता चलता है कि उस डिवाइस टारगेट के लिए, किन वीटीएस टेस्ट को स्किप किया जाना चाहिए.
अपने-आप टेस्ट करने वाला इन्फ़्रास्ट्रक्चर
अपने-आप काम करने वाला टेस्टिंग इन्फ़्रास्ट्रक्चर, VTS इन्फ़्रास्ट्रक्चर है. इसका इस्तेमाल, VTS, CTS या अन्य टेस्ट को अपने-आप टेस्ट करने के लिए किया जाता है. ये टेस्ट, AOSP की सामान्य सिस्टम इमेज (जीएसआई) पर काम करने वाले पार्टनर डिवाइसों पर किए जाते हैं.
डीबग करना
ऐडवांस टेलीमेट्री
Android में, टेलीमेट्री एक ऐसी प्रोसेस है जिसमें डिवाइस, Android सिस्टम, और ऐप्लिकेशन के इस्तेमाल और गड़बड़ी की जानकारी अपने-आप इकट्ठा की जाती है. Android के पिछले वर्शन में, टेलीमेट्री स्टैक सीमित था. साथ ही, यह सिस्टम की विश्वसनीयता और डिवाइस या ऐप्लिकेशन से जुड़ी समस्याओं की पहचान करने और उन्हें हल करने के लिए ज़रूरी जानकारी को कैप्चर नहीं करता था. इस वजह से, समस्याओं की मुख्य वजहों का पता लगाना मुश्किल हो गया.
Android 9 में statsd
टेलीमेट्री सुविधा शामिल है. यह बेहतर डेटा को तेज़ी से इकट्ठा करके, इस समस्या को हल करती है. statsd
ऐप्लिकेशन के इस्तेमाल, बैटरी और प्रोसेस के आंकड़ों, और क्रैश की जानकारी इकट्ठा करता है. डेटा का विश्लेषण किया जाता है. साथ ही, इसका इस्तेमाल प्रॉडक्ट, हार्डवेयर, और सेवाओं को बेहतर बनाने के लिए किया जाता है.
ज़्यादा जानकारी के लिए, frameworks/base/cmds/statsd/
देखें.
सुरक्षा से जुड़ी सुविधाएं
ऐप पर हस्ताक्षर
v3 APK सिग्नेचर स्कीम में, APK की कुंजी रोटेशन की सुविधा काम करती है.
बायोमेट्रिक की सुविधा
Android 9 में पब्लिक क्लास BiometricPrompt
शामिल है. ऐप्लिकेशन इसका इस्तेमाल, डिवाइस और मोडलिटी के हिसाब से बायोमेट्रिक ऑथेंटिकेशन की सुविधा को इंटिग्रेट करने के लिए कर सकते हैं. BiometricPrompt
को शामिल करने के लिए, अपने बायोमेट्रिक स्टैक को इंटिग्रेट करने के बारे में ज़्यादा जानने के लिए, बायोमेट्रिक्स देखें.
डाइनैमिक विश्लेषण
Android 9 में, एक्सप्लॉइट को कम करने और विश्लेषण करने वाले ज़्यादा टूल इस्तेमाल किए जा सकते हैं.
कंट्रोल फ़्लो इंटिग्रिटी (सीएफ़आई)
कंट्रोल फ़्लो इंटिग्रिटी (सीएफ़आई) एक सुरक्षा सुविधा है. यह कंपाइल किए गए बाइनरी के ओरिजनल कंट्रोल फ़्लो ग्राफ़ में बदलाव करने से रोकती है. इससे इस तरह के हमलों को अंजाम देना काफ़ी मुश्किल हो जाता है.
कर्नेल सीएफ़आई
सिस्टम CFI के अलावा, Android 9 और इसके बाद के वर्शन में कर्नेल कंट्रोल फ़्लो इंटिग्रिटी (CFI) की सुविधा भी उपलब्ध है. सिस्टम CFI की सुविधा डिफ़ॉल्ट रूप से चालू होती है.
एन्क्रिप्ट (सुरक्षित) करने का तरीका
अलग-अलग फ़ाइलों को अलग-अलग तरीकों से एन्क्रिप्ट करने का तरीका
अलग-अलग फ़ाइलों को अलग-अलग तरीकों से एन्क्रिप्ट करने के तरीके (एफ़बीई) को अपडेट किया गया है, ताकि यह अडॉप्टेबल स्टोरेज के साथ काम कर सके. नए डिवाइसों में, पूरी डिस्क को सुरक्षित रखने के बजाय, अलग-अलग फ़ाइलों को अलग-अलग तरीकों से एन्क्रिप्ट करने का तरीका इस्तेमाल किया जाना चाहिए.
मेटाडेटा एन्क्रिप्ट (सुरक्षित) करने की सुविधा
Android 9 और उसके बाद के वर्शन में, मेटाडेटा एन्क्रिप्शन की सुविधा उपलब्ध है. हालांकि, इसके लिए हार्डवेयर का सपोर्ट होना ज़रूरी है. मेटाडेटा एन्क्रिप्शन की मदद से, बूट टाइम पर मौजूद एक कुंजी का इस्तेमाल करके, फ़ाइल-आधारित एन्क्रिप्शन की सुविधा का इस्तेमाल किया जाता है. इससे बिना एन्क्रिप्ट (सुरक्षित) किए गए कॉन्टेंट को एन्क्रिप्ट (सुरक्षित) किया जाता है.
कीस्टोर
Android 9 और इसके बाद के वर्शन में Keymaster 4 शामिल है. इसमें ये सुविधाएं हैं.
StrongBox
Android 9 और इसके बाद के वर्शन में, Android Keystore की कुंजियों का इस्तेमाल किया जा सकता है. इन्हें किसी ऐसे सीपीयू में सेव किया जाता है जो खास तौर पर ज़्यादा सुरक्षा वाले ऐप्लिकेशन के लिए बनाया गया है. जैसे, एम्बेड किया गया सुरक्षित एलिमेंट (एसई). StrongBox Keymaster, Keymaster एचएएल को अलग-अलग सुरक्षित हार्डवेयर में लागू करने का तरीका है. StrongBox में ये चीज़ें होती हैं:
- डिस्क्रीट सीपीयू
- सुरक्षित स्टोरेज की सुविधा
- अच्छी क्वालिटी वाला रैंडम नंबर जनरेटर
- छेड़छाड़ से सुरक्षित पैकेजिंग
- साइड-चैनल अटैक से बचने की क्षमता
सुरक्षित तरीके से पासकोड इंपोर्ट करना
किसी कुंजी को Keymaster 4 में सुरक्षित तरीके से इंपोर्ट करने के लिए, डिवाइस से बाहर बनाई गई कुंजी को एन्क्रिप्ट (सुरक्षित) किया जाता है. इसके लिए, अनुमतियों की खास जानकारी का इस्तेमाल किया जाता है. इससे यह तय होता है कि कुंजी का इस्तेमाल कैसे किया जा सकता है.
3DES के साथ काम करता है
Keymaster 4 में 3DES शामिल है, ताकि 3DES का इस्तेमाल करने वाले लेगसी सिस्टम के साथ काम किया जा सके.
वर्शन बाइंडिंग
Treble के मॉड्यूलर स्ट्रक्चर के साथ काम करने और system.img
को boot.img
से अलग करने के लिए, Keymaster 4 ने की वर्शन बाइंडिंग मॉडल में बदलाव किया है, ताकि हर पार्टीशन के लिए अलग-अलग पैच लेवल हो सकें. इससे हर पार्टीशन को अलग-अलग अपडेट किया जा सकता है. साथ ही, सिस्टम को पुराने वर्शन पर रोल बैक होने से रोकने की सुविधा भी मिलती है.
Android Protected Confirmation API
Android 9 के साथ लॉन्च होने वाले डिवाइसों पर, डेवलपर Android Protected Confirmation API का इस्तेमाल कर सकते हैं.
इस एपीआई की मदद से, ऐप्लिकेशन ConfirmationPrompt
के किसी इंस्टेंस का इस्तेमाल कर सकते हैं. इससे वे उपयोगकर्ता को एक प्रॉम्प्ट दिखा सकते हैं, जिसमें उनसे एक छोटे स्टेटमेंट को स्वीकार करने के लिए कहा जाता है. इस स्टेटमेंट की मदद से, ऐप्लिकेशन यह पुष्टि कर सकता है कि उपयोगकर्ता को पेमेंट करने जैसे संवेदनशील लेन-देन को पूरा करना है.
SELinux
हर ऐप्लिकेशन के लिए SELinux सैंडबॉक्स
ऐप्लिकेशन सैंडबॉक्स में नई सुरक्षा सुविधाएं और टेस्ट केस शामिल किए गए हैं. इससे यह पक्का किया जा सकेगा कि Android 9 और इसके बाद के वर्शन को टारगेट करने वाले सभी ऐप्लिकेशन, अलग-अलग SELinux सैंडबॉक्स में चलें.
Treble SELinux में किए गए बदलाव
Android 9 और इसके बाद के वर्शन में, Treble SELinux से जुड़े अपडेट के बारे में जानकारी, SELinux सेक्शन के कई पेजों में दी गई है.
Vendor init
वेंडर init, Treble सिस्टम/वेंडर स्प्लिट में मौजूद समस्या को ठीक करता है. इसके लिए, वह वेंडर के हिसाब से अनुमतियों के साथ /vendor
कमांड चलाने के लिए, अलग SELinux डोमेन का इस्तेमाल करता है.
सिस्टम प्रॉपर्टी
Android 9, सिस्टम प्रॉपर्टी को system
और vendor
पार्टीशन के बीच बिना किसी वजह के शेयर करने से रोकता है. साथ ही, शेयर की गई सिस्टम प्रॉपर्टी के बीच एकरूपता बनाए रखने का तरीका उपलब्ध कराता है.
SELinux एट्रिब्यूट की जांच
Android 9 में नए बिल्ड-टाइम टेस्ट शामिल हैं. इनसे यह पक्का किया जाता है कि खास जगहों पर मौजूद सभी फ़ाइलों में सही एट्रिब्यूट हों.
उदाहरण के लिए, sysfs
में मौजूद सभी फ़ाइलों में ज़रूरी sysfs_type
एट्रिब्यूट मौजूद है.
ऑडियो
हाई रिज़ॉल्यूशन वाले ऑडियो इफ़ेक्ट
हाई-रिज़ॉल्यूशन वाले ऑडियो इफ़ेक्ट से जुड़े अपडेट में ये शामिल हैं: इफ़ेक्ट प्रोसेसिंग को int16 से फ़्लोट फ़ॉर्मैट में बदलना, एक साथ कई क्लाइंट आउटपुट ट्रैक, क्लाइंट/सर्वर की ज़्यादा से ज़्यादा मेमोरी, और कुल मिक्स किए गए ट्रैक.
कैमरा
बाहर से लगने वाले यूएसबी कैमरे
Android 9 और इसके बाद के वर्शन में, स्टैंडर्ड Android Camera2 API और कैमरा HIDL इंटरफ़ेस का इस्तेमाल करके, प्लग-एंड-प्ले यूएसबी कैमरे (यानी कि वेबकैम) इस्तेमाल किए जा सकते हैं.
मोशन ट्रैकिंग
कैमरा डिवाइस, मोशन ट्रैकिंग की सुविधा का विज्ञापन कर सकते हैं.
एक से ज़्यादा कैमरे इस्तेमाल करने की सुविधा
एक से ज़्यादा कैमरे इस्तेमाल करने की सुविधा में, एक से ज़्यादा कैमरे वाले डिवाइसों के लिए एपीआई की सुविधा शामिल है. यह सुविधा, एक नए लॉजिकल कैमरा डिवाइस के ज़रिए मिलती है. इस डिवाइस में, एक ही दिशा में पॉइंट करने वाले दो या उससे ज़्यादा फ़िज़िकल कैमरा डिवाइस होते हैं.
सेशन पैरामीटर
सेशन पैरामीटर लागू करने से, देरी को कम किया जा सकता है. इसके लिए, कैमरा क्लाइंट को कैप्चर सेशन शुरू होने के दौरान, महंगे अनुरोध पैरामीटर के सबसेट को ऐक्टिव तौर पर कॉन्फ़िगर करने की अनुमति दें.
एक प्रोड्यूसर, कई कंज्यूमर बफ़र
एक प्रोड्यूसर और कई कंज्यूमर के लिए, कैमरा बफ़र ट्रांसपोर्ट एक ऐसा तरीका है जिसकी मदद से कैमरा क्लाइंट, कैप्चर सेशन चालू होने और कैमरा स्ट्रीमिंग जारी रहने के दौरान, आउटपुट सरफ़ेस को डाइनैमिक तरीके से जोड़ और हटा सकते हैं.
कनेक्टिविटी
कॉल करना और मैसेज भेजना
डेटा प्लान लागू करना
Android 9 और इसके बाद के वर्शन में, SubscriptionPlan API का इस्तेमाल करके डेटा प्लान लागू करने वाले कैरियर के लिए बेहतर सहायता उपलब्ध कराई जाती है.
कॉल करने के लिए तीसरे पक्ष के ऐप्लिकेशन
Android 9 और इसके बाद के वर्शन में ऐसे एपीआई उपलब्ध हैं जिनकी मदद से, तीसरे पक्ष (3P) के कॉलिंग ऐप्लिकेशन, एक साथ कई कैरियर कॉल मैनेज कर सकते हैं. साथ ही, सिस्टम कॉल लॉग में कॉल लॉग कर सकते हैं.
मोबाइल और इंटरनेट सेवा देने वाली कंपनी
मोबाइल और इंटरनेट सेवा देने वाली कंपनी की पहचान
Android 9 में, AOSP ने कैरियर आईडी डेटाबेस जोड़ा है. इससे कैरियर की पहचान करने में मदद मिलती है. डेटाबेस, डुप्लीकेट लॉजिक और ऐप्लिकेशन के अलग-अलग हिस्सों में मौजूद लॉजिक को कम करता है. ऐसा, कैरियर की पहचान करने का एक सामान्य तरीका उपलब्ध कराकर किया जाता है.
ई-सिम
एम्बेड किया गया सिम (ई-सिम या ईयूआईसीसी), मोबाइल और इंटरनेट सेवा देने वाली कंपनी की प्रोफ़ाइल डाउनलोड करने और उसकी सेवा चालू करने की नई टेक्नोलॉजी है. इसके लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी का सिम कार्ड होना ज़रूरी नहीं है. Android 9 और इसके बाद के वर्शन में, Android फ़्रेमवर्क ई-सिम को ऐक्सेस करने और ई-सिम पर सदस्यता प्रोफ़ाइलों को मैनेज करने के लिए, स्टैंडर्ड एपीआई उपलब्ध कराता है. ज़्यादा जानकारी के लिए, ये देखें:
आईएमएस सेटिंग के लिए, एक से ज़्यादा सिम इस्तेमाल करने की सुविधा
Android 9 और इसके बाद के वर्शन में, आईपी मल्टीमीडिया सबसिस्टम (आईएमएस) के लिए उपयोगकर्ता सेटिंग को बेहतर बनाया गया है. इन सेटिंग को सभी सदस्यताओं के लिए शेयर करने के बजाय, हर सदस्यता के लिए वॉइसओवर एलटीई (VoLTE), वीडियो कॉलिंग, और वाई-फ़ाई कॉलिंग की सुविधा सेट अप की जा सकती है.
सिम की स्थिति के बारे में ब्रॉडकास्ट
Android 9 और इसके बाद के वर्शन में, Intent.ACTION_SIM_STATE_CHANGED
को बंद कर दिया गया है. साथ ही, कार्ड की स्थिति और कार्ड ऐप्लिकेशन की स्थिति के लिए दो अलग-अलग ब्रॉडकास्ट जोड़े गए हैं: TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED
और TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED
.
इन बदलावों की मदद से, जिन रिसीवर को सिर्फ़ यह जानना है कि कार्ड मौजूद है या नहीं उन्हें ऐप्लिकेशन की स्थिति में होने वाले बदलावों के बारे में नहीं सुनना होगा. साथ ही, जिन रिसीवर को सिर्फ़ यह जानना है कि कार्ड ऐप्लिकेशन तैयार हैं या नहीं उन्हें कार्ड की स्थिति में होने वाले बदलावों के बारे में नहीं सुनना होगा.
दो नए ब्रॉडकास्ट @SystemApis हैं और ये स्टिकी नहीं हैं. सिर्फ़ वे लोग ब्रॉडकास्ट पा सकते हैं जिनके पास READ_PRIVILEGED_PHONE_STATE
की अनुमति है.
डिवाइस अनलॉक करने पर, इंटेंट को फिर से ब्रॉडकास्ट नहीं किया जाता. अनलॉक करने से पहले भेजे गए ब्रॉडकास्ट पर निर्भर रहने वाले रिसीवर को directBootAware
का इस्तेमाल करना चाहिए. इसके अलावा, उन्हें उपयोगकर्ता के अनलॉक करने के बाद स्थिति के बारे में क्वेरी करनी चाहिए. TelephonyManager, getSimCardState()
, औरgetSimApplicationState()
में मौजूद एपीआई का इस्तेमाल करके, राज्यों के बारे में क्वेरी की जा सकती है.
वाई-फ़ाई
मोबाइल और इंटरनेट सेवा देने वाली कंपनी का वाई-फ़ाई
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के वाई-फ़ाई की सुविधा की मदद से, डिवाइस अपने-आप उस वाई-फ़ाई नेटवर्क से कनेक्ट हो जाते हैं जिसे मोबाइल और इंटरनेट सेवा देने वाली कंपनी ने लागू किया है. स्टेडियम या अंडरग्राउंड ट्रेन स्टेशन जैसी जगहों पर, जहां बहुत ज़्यादा ट्रैफ़िक होता है या सेलुलर कवरेज कम होता है वहां कैरियर वाई-फ़ाई, कनेक्टिविटी को बेहतर बनाने और ट्रैफ़िक को कम करने में मदद करता है.
एमएसी पता बदलने की सुविधा
एमएसी पता बदलने की सुविधा की मदद से, डिवाइस नए नेटवर्क की जांच करते समय रैंडम एमएसी पतों का इस्तेमाल कर सकते हैं. ऐसा तब होता है, जब वे किसी नेटवर्क से कनेक्ट न हों. Android 9 और इसके बाद के वर्शन में, डेवलपर विकल्प को चालू किया जा सकता है. इससे डिवाइस, वाई-फ़ाई नेटवर्क से कनेक्ट होने पर, बिना किसी तय नियम के बदला गया एमएसी पता इस्तेमाल करता है.
वाई-फ़ाई अपने आप चालू करें.
वाई-फ़ाई अपने-आप चालू करें सुविधा चालू होने पर, डिवाइस के किसी ऐसे वाई-फ़ाई नेटवर्क के आस-पास होने पर वाई-फ़ाई अपने-आप फिर से चालू हो जाता है जिसे सेव किया गया हो और जिसका सिग्नल क्षमता का संकेतक (आरएसएसआई) काफ़ी ज़्यादा हो.
वाई-फ़ाई का दोतरफ़ा यात्रा का समय
वाई-फ़ाई राउंड ट्रिप टाइम (आरटीटी) की मदद से डिवाइस, अन्य डिवाइसों के बीच की दूरी का पता लगा सकते हैं. ये डिवाइस, ऐक्सेस पॉइंट (एपी) या Wi-Fi Aware पीयर हो सकते हैं. हालांकि, इसके लिए ज़रूरी है कि डिवाइस पर Wi-Fi Aware काम करता हो. यह सुविधा, IEEE 802.11mc प्रोटोकॉल पर आधारित है. इससे ऐप्लिकेशन को, जगह की ज़्यादा सटीक जानकारी और उसके बारे में जागरूकता बढ़ाने में मदद मिलती है.
वाई-फ़ाई के स्कोर में सुधार
वाई-फ़ाई स्कोरिंग मॉडल को बेहतर बनाया गया है. ये मॉडल तेज़ी से और सटीक तरीके से यह तय करते हैं कि किसी डिवाइस को कनेक्ट किए गए वाई-फ़ाई नेटवर्क से कब डिस्कनेक्ट होना चाहिए या किसी नए वाई-फ़ाई नेटवर्क से कब कनेक्ट होना चाहिए. ये मॉडल, कनेक्टिविटी में आने वाली समस्याओं को ठीक करके उपयोगकर्ताओं को भरोसेमंद और बेहतर अनुभव देते हैं.
config.xml
संसाधनों में आरएसएसआई वैल्यू की समीक्षा करें और उन्हें अडजस्ट करें. खास तौर पर, इन वैल्यू की समीक्षा करें:
config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz
वाई-फ़ाई STA/AP की एक साथ काम करने की सुविधा
वाई-फ़ाई STA/AP concurrency का मतलब है कि डिवाइस, स्टेशन (एसटीए) और ऐक्सेस पॉइंट (एपी) मोड में एक साथ काम कर सकते हैं. ड्युअल बैंड साइमलटेनियस (डीबीएस) वाई-फ़ाई की सुविधा वाले डिवाइसों के लिए, इससे कई सुविधाएं मिलती हैं. जैसे, जब कोई उपयोगकर्ता हॉटस्पॉट (सॉफ़्टएपी) चालू करना चाहता है, तब एसटीए वाई-फ़ाई में रुकावट नहीं आती.
WiFiStateMachine में सुधार
WifiStateMachine
का इस्तेमाल, वाई-फ़ाई की गतिविधि को कंट्रोल करने के लिए किया जाता है. साथ ही, यह उपयोगकर्ता के इनपुट को कोऑर्डिनेट करता है (ऑपरेटिंग मोड: हॉटस्पॉट, स्कैन, कनेक्ट या बंद). इसके अलावा, यह वाई-फ़ाई नेटवर्क की कार्रवाइयों को कंट्रोल करता है. जैसे, स्कैन करना या कनेक्ट करना.
Android 9 और इसके बाद के वर्शन में, वाई-फ़ाई फ़्रेमवर्क कोड और WifiStateMachine
को फिर से डिज़ाइन किया गया है. इससे कोड का साइज़ कम हो गया है, वाई-फ़ाई कंट्रोल लॉजिक को समझना आसान हो गया है, कंट्रोल ग्रेन्यूलैरिटी बेहतर हो गई है, और यूनिट टेस्ट की कवरेज और क्वालिटी बढ़ गई है.
बड़े लेवल पर,WifiStateMachine
वाई-फ़ाई को चार में से किसी एक स्थिति में होने की अनुमति देता है:
- क्लाइंट मोड (कनेक्ट और स्कैन कर सकता है)
- सिर्फ़ स्कैन करने वाला मोड
- सॉफ़्टएपी मोड (वाई-फ़ाई हॉटस्पॉट)
- बंद है (वाई-फ़ाई पूरी तरह से बंद है)
हर वाई-फ़ाई मोड में, सेवाओं को चलाने के लिए अलग-अलग ज़रूरी शर्तें होती हैं. इसलिए, इन्हें एक ही तरीके से सेट अप किया जाना चाहिए. साथ ही, सिर्फ़ उन इवेंट को हैंडल करना चाहिए जो इसके ऑपरेशन के लिए ज़रूरी हैं. नया तरीका लागू करने पर, कोड को सिर्फ़ उस मोड से जुड़े इवेंट तक सीमित किया जाता है. इससे डीबग करने में लगने वाला समय कम हो जाता है. साथ ही, जटिलता की वजह से नए बग आने का खतरा भी कम हो जाता है. मोड फ़ंक्शन के लिए साफ़ तौर पर हैंडलिंग के अलावा, थ्रेड मैनेजमेंट को एक जैसे तरीके से हैंडल किया जाता है. साथ ही, सिंक्रनाइज़ेशन के तरीके के तौर पर एसिंक्रोनस चैनलों के इस्तेमाल को खत्म कर दिया जाता है.
वाई-फ़ाई की अनुमति से जुड़े अपडेट
Android 9 और इसके बाद के वर्शन में, CHANGE_WIFI_STATE
ऐप्लिकेशन की अनुमति डिफ़ॉल्ट रूप से चालू होती है. सेटिंग > ऐप्लिकेशन और सूचनाएं > ऐप्लिकेशन के लिए खास ऐक्सेस > वाई-फ़ाई कंट्रोल में जाकर, सेटिंग पेज पर किसी भी ऐप्लिकेशन के लिए अनुमति बंद की जा सकती है.
ऐप्लिकेशन में ऐसे मामलों को हैंडल करने की सुविधा होनी चाहिए जिनमें CHANGE_WIFI_STATE
की अनुमति नहीं दी गई है.
इस व्यवहार की पुष्टि करने के लिए, roboelectric और मैन्युअल टेस्ट चलाएं.
मैन्युअल टेस्टिंग के लिए:
- सेटिंग > ऐप्लिकेशन और सूचनाएं > ऐप्लिकेशन के लिए खास ऐक्सेस > वाई-फ़ाई कंट्रोल पर जाएं.
- अपने ऐप्लिकेशन के लिए अनुमति चुनें और उसे बंद करें.
- पुष्टि करें कि आपका ऐप्लिकेशन,
CHANGE_WIFI_STATE
अनुमति न मिलने की स्थिति को हैंडल कर सकता है.
WPS के बंद होने के बारे में जानकारी
सुरक्षा से जुड़ी समस्याओं की वजह से, WiFiManager
में वाई-फ़ाई सुरक्षित सेटअप (डब्ल्यूपीएस) की सुविधा अब काम नहीं करती. साथ ही, Android 9 और इसके बाद के वर्शन में इसे बंद कर दिया गया है. हालांकि, WiFiDirect
अब भी WPA सप्लीकेंट में WPS का इस्तेमाल करता है.
ग्राफ़िक्स
लागू करना
Vulkan 1.1 API
Android 9 और इसके बाद के वर्शन पर, Vulkan 1.1 ग्राफ़िक्स एपीआई को लागू किया जा सकता है.
विंडो ट्रांज़िशन ट्रेसिंग के लिए WinScope टूल
Android 9 और इसके बाद के वर्शन में, विंडो ट्रांज़िशन को ट्रैक करने के लिए WinScope टूल शामिल है. WinScope, ट्रांज़िशन के दौरान और बाद में विंडो मैनेजर की स्थिति को रिकॉर्ड करने और उसका विश्लेषण करने के लिए, इंफ़्रास्ट्रक्चर और टूल उपलब्ध कराता है. इससे विंडो ट्रांज़िशन को रिकॉर्ड किया जा सकता है और एक-एक करके देखा जा सकता है. साथ ही, विंडो मैनेजर की सभी ज़रूरी स्थितियों को ट्रेस फ़ाइल में रिकॉर्ड किया जा सकता है. इस डेटा का इस्तेमाल करके, ट्रांज़िशन को फिर से चलाया जा सकता है और एक-एक करके देखा जा सकता है.
WinScope टूल का सोर्स कोड यहां दिया गया है: platform/development/tools/winscope
.
इंटरैक्शन
ऑटोमोटिव ऑडियो
Automotive Audio में, Android के Automotive से जुड़े वर्शन के लिए ऑडियो आर्किटेक्चर के बारे में बताया गया है.
न्यूरल नेटवर्क (एनएन) एचएएल, अलग-अलग ऐक्सलरेटर का ऐब्स्ट्रैक्शन तय करता है. इन ऐक्सलरेटर के ड्राइवर, इस HAL के मुताबिक होने चाहिए.
वाहन एचएएल
वाहन की प्रॉपर्टी में, वाहन के एचएएल इंटरफ़ेस में हुए बदलावों के बारे में बताया गया है.
जीएनएसएस सैटलाइट चुनना
नए ग्लोबल नेविगेशन सैटलाइट सिस्टम (जीएनएसएस) एचएएल (v1.1+) के साथ काम करते समय, Android फ़्रेमवर्क Android सेटिंग की निगरानी करता है. पार्टनर, Google Play services या सिस्टम के अन्य अपडेट से सेटिंग बदल सकते हैं. इन सेटिंग से, जीएनएसएस एचएएल को यह पता चलता है कि कुछ जीएनएसएस सैटलाइट का इस्तेमाल नहीं किया जाना चाहिए. यह सुविधा, GNSS सैटलाइट या कॉन्स्टेलशन से जुड़ी गड़बड़ियों को ठीक करने में मदद कर सकती है. इसके अलावा, यह GNSS HAL को लागू करने से जुड़ी समस्याओं को तुरंत ठीक करने में भी मदद कर सकती है. ये समस्याएं, अलग-अलग टाइम सिस्टम और बाहरी इवेंट का इस्तेमाल करके कॉन्स्टेलशन को मिक्स करने पर हो सकती हैं. जैसे, लीप-सेकंड, दिन या हफ़्ते की संख्या के रोलओवर.
जीएनएसएस हार्डवेयर मॉडल
Android 9 में, GNSS HAL 1.1 या इसके बाद के वर्शन, प्लैटफ़ॉर्म को हार्डवेयर एपीआई के बारे में जानकारी दे सकते हैं. प्लैटफ़ॉर्म को IGnssCallback
इंटरफ़ेस लागू करना होगा और एचएएल को हैंडल पास करना होगा. जीएनएसएस एचएएल, हार्डवेयर मॉडल की जानकारी को LocationManager#getGnssHardwareModelName()
तरीके से पास करता है. डिवाइस बनाने वाली कंपनियों को, जीएनएसएस एचएएल की सेवा देने वाली कंपनियों के साथ मिलकर काम करना चाहिए. इससे वे जहां भी हो सके, यह जानकारी उपलब्ध करा सकेंगी.
अनुमतियां
अपने विवेक के आधार पर ऐक्सेस कंट्रोल से जुड़े अपडेट कॉन्फ़िगर करना
डिस्क्रिशनरी ऐक्सेस कंट्रोल (डीएसी) कॉन्फ़िगर करना में, फ़ाइल सिस्टम की क्षमताओं को बढ़ाने के लिए Android आईडी (एआईडी) के तरीके से जुड़े अपडेट शामिल हैं.
ज़्यादा सुविधाओं वाले ऐप्लिकेशन को अनुमतियां देने की प्रोसेस
Android 9 और इसके बाद के वर्शन में, अगर कुछ अनुमतियां अस्वीकार करनी हैं, तो XML में बदलाव करके permission
टैग की जगह deny-permission
टैग का इस्तेमाल करें. permission
टैग का इस्तेमाल पिछली रिलीज़ में किया जाता था.
डेटा
बैंडविड्थ का अनुमान लगाने की सुविधा में सुधार
Android 9 में, बैंडविथ का अनुमान लगाने की सुविधा को बेहतर बनाया गया है. अगर Android ऐप्लिकेशन को उपलब्ध डेटा बैंडविड्थ का ऐक्सेस मिलता है, तो वे वीडियो कॉल और वीडियो स्ट्रीमिंग के लिए बेहतर रिज़ॉल्यूशन सेटिंग कर सकते हैं.
Android 6.0 या इसके बाद के वर्शन पर चलने वाले डिवाइसों पर, कॉल करने वाला व्यक्ति सेल्यूलर नेटवर्क के लिए बैंडविड्थ का अनुमान लगाने के लिए, ConnectivityManager.requestBandwidthUpdate()
को कॉल करता है. इसके बाद, फ़्रेमवर्क अनुमानित डाउनलिंक बैंडविड्थ दे सकता है.
हालांकि, Android 9 या इसके बाद के वर्शन वाले डिवाइसों पर, अनुमानित बैंडविड्थ में अहम बदलाव होने पर, onCapabilitiesChanged()
कॉलबैक अपने-आप ट्रिगर हो जाता है. साथ ही, requestBandwidthUpdate()
को कॉल करने से कोई फ़र्क़ नहीं पड़ता. इससे जुड़े getLinkDownstreamBandwidthKbps()
और getLinkUpstreamBandwidthKbps()
, फ़िज़िकल लेयर से मिली अपडेट की गई जानकारी से भर जाते हैं.
इसके अलावा, डिवाइस ServiceState.getCellBandwidths()
की मदद से, एलटीई सेल के बैंडविड्थ की जांच कर सकते हैं.
इससे ऐप्लिकेशन को यह पता चलता है कि किसी सेल पर कितनी बैंडविड्थ (फ़्रीक्वेंसी) उपलब्ध है. सेल बैंडविड्थ की जानकारी, छिपे हुए मेन्यू के ज़रिए उपलब्ध होती है, ताकि फ़ील्ड टेस्टर सबसे नई जानकारी देख सकें.
eBPF की मदद से ट्रैफ़िक मॉनिटर करना
eBPF नेटवर्क ट्रैफ़िक टूल, डिवाइस के बूट होने के बाद से नेटवर्क के इस्तेमाल को मॉनिटर करने के लिए, कर्नल और यूज़र स्पेस के कॉम्बिनेशन का इस्तेमाल करता है. यह टूल, सॉकेट टैगिंग, फ़ोरग्राउंड/बैकग्राउंड ट्रैफ़िक को अलग करने, और डिवाइस की स्थिति के आधार पर ऐप्लिकेशन को नेटवर्क ऐक्सेस करने से रोकने के लिए, यूआईडी के हिसाब से फ़ायरवॉल जैसी अतिरिक्त सुविधाएं देता है.
एपीआई के पुराने वर्शन पर वापस जाना
अब डिवाइसों को ऑपरेटिंग सिस्टम के आने वाले वर्शन से वापस लाया जा सकता है. यह खास तौर पर तब फ़ायदेमंद होता है, जब उपयोगकर्ताओं ने अपने फ़ोन अपग्रेड किए हों, लेकिन बाद में वे खो गए हों या टूट गए हों.
अगर कोई ओईएम, सिस्टम पैकेज (android, system, settings) के लिए बैकअप एजेंट में बदलाव करता है, तो उन एजेंट को प्लैटफ़ॉर्म के नए वर्शन पर बनाए गए बैकअप सेट को वापस लाना चाहिए. ऐसा बिना क्रैश हुए और कम से कम कुछ डेटा वापस लाकर किया जाना चाहिए.
किसी दिए गए बैकअप डेटा की अमान्य वैल्यू की जांच करने के लिए, वैलिडेटर का इस्तेमाल करें. साथ ही, सिर्फ़ मान्य डेटा को वापस लाएं. जैसे, core/java/android/provider/SettingsValidators.java
.
यह सुविधा डिफ़ॉल्ट रूप से चालू रहती है. SettingsBackupAgent की मदद से, आने वाले वर्शन से डेटा वापस लाने की सुविधा को Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION
के ज़रिए बंद किया जा सकता है. डिवाइस बनाने वाली कंपनी, ROM में शामिल किसी बैकअप एजेंट को बढ़ाती है या कस्टम एजेंट जोड़ती है, तो अतिरिक्त लागू करने की ज़रूरत नहीं होती.
इस सुविधा की मदद से, प्लैटफ़ॉर्म के आने वाले वर्शन से सिस्टम को वापस लाया जा सकता है. हालांकि, यह उम्मीद करना सही होगा कि वापस लाया गया डेटा पूरा नहीं होगा. ये निर्देश, इन बैकअप एजेंट पर लागू होते हैं:
PackageManagerBackupAgent, फ़ॉर्मैट वर्शनिंग के ज़रिए बैकअप डेटा के आने वाले वर्शन के साथ काम करता है. यहां दिए गए एक्सटेंशन, मौजूदा रीस्टोर कोड के साथ काम करने चाहिए या क्लास में दिए गए निर्देशों का पालन करना चाहिए. इनमें सही कॉन्स्टेंट को बढ़ाना शामिल है.
SystemBackupAgent, Android 9 और इसके बाद के वर्शन में
restoreAnyVersion = false
के बारे में बताता है. यह एपीआई के नए वर्शन से डेटा वापस लाने की सुविधा के साथ काम नहीं करता.SettingsBackupAgent, Android 9 और इसके बाद के वर्शन में
restoreAnyVersion = true
के बारे में बताता है. पुष्टि करने वाले टूल के ज़रिए, कुछ हद तक सहायता मिलती है. अगर टारगेट ओएस में किसी सेटिंग के लिए पुष्टि करने वाला कोई टूल मौजूद है, तो उसे एपीआई के नए वर्शन से वापस लाया जा सकता है. किसी भी सेटिंग को जोड़ने के साथ-साथ, उसके लिए पुष्टि करने वाला टूल भी जोड़ना ज़रूरी है. ज़्यादा जानकारी के लिए, क्लास देखें.ROM में शामिल किसी भी कस्टम बैकअप एजेंट को, बैकअप डेटा फ़ॉर्मैट में ऐसा बदलाव होने पर अपने वर्शन कोड को बढ़ाना चाहिए जो काम नहीं करता. साथ ही, यह पक्का करना चाहिए कि अगर उनका एजेंट, कोड के आने वाले वर्शन के बैकअप डेटा को मैनेज करने के लिए तैयार नहीं है, तो
restoreAnyVersion = false
(डिफ़ॉल्ट) चालू हो.
एंटरप्राइज़
मैनेज की जा रही प्रोफ़ाइल में सुधार
मैनेज की जा रही प्रोफ़ाइलों के लिए, यूज़र एक्सपीरियंस (यूएक्स) में किए गए बदलावों से उपयोगकर्ताओं को मैनेज की जा रही प्रोफ़ाइल की पहचान करने, उसे ऐक्सेस करने, और उसे कंट्रोल करने में आसानी होती है.
ओटीए को रोकना
@SystemApi की मदद से, डिवाइस के मालिक OTA अपडेट को अनिश्चित काल के लिए रोक सकते हैं. इसमें सुरक्षा से जुड़े अपडेट भी शामिल हैं.
परफ़ॉर्मेंस
Health 2.0
Android 9 और इसके बाद के वर्शन में android.hardware.health
HAL 2.0 शामिल है. यह health@1.0 HAL का अपग्रेड किया गया वर्शन है. ज़्यादा जानकारी के लिए, ये पेज देखें:
APK को कैश करने का समाधान
Android 9 और इसके बाद के वर्शन में, APK कैश मेमोरी की सुविधा उपलब्ध है. इससे, पहले से लोड किए गए ऐप्लिकेशन को ऐसे डिवाइस पर तेज़ी से इंस्टॉल किया जा सकता है जो A/B पार्टीशन की सुविधा के साथ काम करता है. OEM, प्रीलोड और लोकप्रिय ऐप्लिकेशन को APK कैश में रख सकते हैं. यह कैश, नए A/B-पार्टिशन वाले डिवाइसों के खाली B पार्टिशन में सेव होता है. इससे, उपयोगकर्ता के डेटा स्पेस पर कोई असर नहीं पड़ता.
प्रोफ़ाइल-गाइडेड ऑप्टिमाइज़ेशन
Android 9 और इसके बाद के वर्शन में, नेटिव Android मॉड्यूल पर Clang के प्रोफ़ाइल-गाइडेड ऑप्टिमाइज़ेशन (पीजीओ) का इस्तेमाल किया जा सकता है. इन मॉड्यूल में ब्लूप्रिंट बिल्ड के नियम होते हैं.
राइट-अहेड लॉगिंग
SQLiteDatabase का एक खास मोड, compatibility write-ahead logging (WAL), डेटाबेस को journal_mode=WAL
का इस्तेमाल करने की अनुमति देता है. हालांकि, हर डेटाबेस के लिए ज़्यादा से ज़्यादा एक कनेक्शन बनाए रखा जाता है.
चालू होने में लगने वाला समय
Android 9 में, बूट टाइम को ऑप्टिमाइज़ करने की सुविधा में बदलाव किया गया है. इसके बारे में बूट टाइम को ऑप्टिमाइज़ करना लेख में बताया गया है.
ताकत
बैकग्राउंड की गतिविधियों पर पाबंदियां
Android 9 और इसके बाद के वर्शन में, बैकग्राउंड में ऐप्लिकेशन के चलने पर पाबंदी लगाने की सुविधा शामिल है. इससे उपयोगकर्ता, उन ऐप्लिकेशन पर पाबंदी लगा सकते हैं जो बैटरी की खपत करते हैं. सिस्टम, डिवाइस की परफ़ॉर्मेंस पर बुरा असर डालने वाले ऐप्लिकेशन को बंद करने का सुझाव भी दे सकता है.
बिना बैटरी वाले डिवाइस
Android 9, बिना बैटरी वाले डिवाइसों को पिछली रिलीज़ के मुकाबले ज़्यादा बेहतर तरीके से मैनेज करता है. Android 9 में, बिना बैटरी वाले डिवाइसों के लिए कोड हटा दिया गया है. इन डिवाइसों में डिफ़ॉल्ट रूप से यह माना जाता था कि बैटरी मौजूद है, 100% चार्ज है, और अच्छी स्थिति में है. साथ ही, इसके थर्मिस्टर पर तापमान सामान्य है.