पिछली रिलीज़ की तरह, Android 17 में भी कुछ ऐसे बदलाव किए गए हैं जिनसे आपके ऐप्लिकेशन पर असर पड़ सकता है. यहां दिए गए बदलाव, सिर्फ़ उन ऐप्लिकेशन पर लागू होते हैं जो Android 17 या इसके बाद के वर्शन को टारगेट कर रहे हैं. अगर आपका ऐप्लिकेशन, Android 17 या इसके बाद के वर्शन को टारगेट कर रहा है, तो आपको अपने ऐप्लिकेशन में बदलाव करना चाहिए, ताकि वह इन बदलावों के साथ काम कर सके.
Android 17 पर चलने वाले सभी ऐप्लिकेशन पर असर डालने वाले बदलावों की सूची भी ज़रूर देखें. इससे कोई फ़र्क़ नहीं पड़ता कि आपके ऐप्लिकेशन का targetSdkVersion क्या है.
मुख्य फ़ंक्शन
Android 17 में ये बदलाव शामिल हैं. इनसे Android सिस्टम की कई मुख्य क्षमताओं में बदलाव होता है या उन्हें बढ़ाया जाता है.
MessageQueue को बिना लॉक किए लागू करने की नई सुविधा
Android 17 से, Android 17 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन को android.os.MessageQueue का नया लॉक-फ़्री वर्शन मिलता है. इस नई सुविधा को लागू करने से, परफ़ॉर्मेंस बेहतर होती है और छूटे हुए फ़्रेम की संख्या कम होती है. हालांकि, इससे MessageQueue प्राइवेट फ़ील्ड और तरीकों पर असर डालने वाले क्लाइंट पर असर पड़ सकता है.
ज़्यादा जानकारी और समस्या को कम करने की रणनीतियों के लिए, MessageQueue के व्यवहार में हुए बदलाव से जुड़े दिशा-निर्देश देखें.
सुलभता
Android 17 में, सुलभता को बेहतर बनाने के लिए ये बदलाव किए गए हैं.
फ़िज़िकल कीबोर्ड से टाइप करने के लिए, जटिल IME की सुलभता से जुड़ी सहायता
इस सुविधा में, AccessibilityEvent और TextAttribute नए एपीआई जोड़े गए हैं. इनसे, CJKV भाषाओं में टाइप किए गए टेक्स्ट को स्क्रीन रीडर के ज़रिए बोलकर सुनाने की सुविधा को बेहतर बनाया जा सकेगा. CJKV IME ऐप्लिकेशन अब यह सिग्नल दे सकते हैं कि टेक्स्ट कंपोज़िशन के दौरान, टेक्स्ट कन्वर्ज़न के लिए चुने गए शब्द को चुना गया है या नहीं. बदलाव करने के फ़ील्ड वाले ऐप्लिकेशन, टेक्स्ट में बदलाव होने से जुड़े ऐक्सेसिबिलिटी इवेंट भेजते समय, टेक्स्ट में बदलाव के टाइप के बारे में बता सकते हैं.
उदाहरण के लिए, ऐप्लिकेशन यह बता सकते हैं कि टेक्स्ट कंपोज़िशन के दौरान टेक्स्ट में बदलाव हुआ है या टेक्स्ट में बदलाव, कमिट करने की वजह से हुआ है.
ऐसा करने से, स्क्रीन रीडर जैसी सुलभता सेवाएं, टेक्स्ट में किए गए बदलाव के आधार पर ज़्यादा सटीक सुझाव दे पाती हैं.
Android SDK इस्तेमाल करने वाले ऐप्लिकेशन की संख्या
IME ऐप्लिकेशन: IME, एडिट फ़ील्ड में टेक्स्ट लिखते समय
TextAttribute.Builder.setTextSuggestionSelected()का इस्तेमाल कर सकते हैं. इससे यह पता चलता है कि किसी खास कन्वर्ज़न कैंडिडेट को चुना गया है या नहीं.फ़ील्ड में बदलाव करने की सुविधा वाले ऐप्लिकेशन: कस्टम
InputConnectionको बनाए रखने वाले ऐप्लिकेशन,TextAttribute.isTextSuggestionSelected()को कॉल करके उम्मीदवार चुनने का डेटा वापस पा सकते हैं. इसके बाद, इन ऐप्लिकेशन कोAccessibilityEvent.setTextChangeTypes()इवेंट भेजते समय,AccessibilityEvent.setTextChangeTypes()को कॉल करना चाहिए.TYPE_VIEW_TEXT_CHANGEDAndroid 17 को टारगेट करने वाले ऐसे ऐप्लिकेशन जो स्टैंडर्डTextViewका इस्तेमाल करते हैं उनमें यह सुविधा डिफ़ॉल्ट रूप से चालू होगी. (इसका मतलब है किTextView, IME से डेटा पाने और ऐक्सेसिबिलिटी सेवाओं को इवेंट भेजते समय टेक्स्ट में बदलाव के टाइप सेट करने का काम करेगा).सुलभता सेवाएं:
TYPE_VIEW_TEXT_CHANGEDइवेंट को प्रोसेस करने वाली सुलभता सेवाएं,AccessibilityEvent.getTextChangeTypes()को कॉल कर सकती हैं. इससे उन्हें बदलाव के बारे में पता चलता है और वे उसके हिसाब से, सुझाव देने की रणनीतियों में बदलाव कर सकती हैं.
सुरक्षा
Android 17 में, डिवाइस और ऐप्लिकेशन की सुरक्षा को बेहतर बनाने के लिए ये बदलाव किए गए हैं.
गतिविधि की सुरक्षा
Android 17 में, प्लैटफ़ॉर्म "डिफ़ॉल्ट रूप से सुरक्षित" आर्किटेक्चर की ओर बढ़ता है. इसमें कई ऐसे सुधार किए गए हैं जो फ़िशिंग, इंटरैक्शन हाइजैकिंग, और कन्फ़्यूज़्ड डेप्युटी अटैक जैसे गंभीर जोखिमों को कम करने के लिए डिज़ाइन किए गए हैं. इस अपडेट के बाद, डेवलपर को नए सुरक्षा मानकों के लिए ऑप्ट-इन करना होगा. इससे ऐप्लिकेशन को नए Android वर्शन के साथ काम करने में मदद मिलेगी और उपयोगकर्ताओं की सुरक्षा भी बनी रहेगी.
डेवलपर पर पड़ने वाले मुख्य असर में ये शामिल हैं:
- बैकग्राउंड ऐक्टिविटी लॉन्च (बीएएल) को बेहतर बनाना और ऑप्ट-इन करने की सुविधा को बेहतर बनाना: हम बैकग्राउंड ऐक्टिविटी लॉन्च (बीएएल) से जुड़ी पाबंदियों को बेहतर बना रहे हैं. इसके लिए, हम
IntentSenderको ज़्यादा सुरक्षा दे रहे हैं. डेवलपर को लेगसीMODE_BACKGROUND_ACTIVITY_START_ALLOWEDकॉन्स्टेंट से माइग्रेट करना होगा. इसके बजाय, आपकोMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLEजैसे बेहतर कंट्रोल का इस्तेमाल करना चाहिए. इससे, ऐक्टिविटी सिर्फ़ उन स्थितियों में शुरू हो पाती है जहां कॉल करने वाला ऐप्लिकेशन दिखता है. इससे, हमले की आशंका काफ़ी कम हो जाती है. - अपनाने से जुड़े टूल: डेवलपर को लेगसी पैटर्न की पहचान करने के लिए, स्ट्रिक्ट मोड और अपडेट किए गए लिंट चेक का इस्तेमाल करना चाहिए. साथ ही, यह पक्का करना चाहिए कि वे आने वाले समय में टारगेट किए जाने वाले SDK टूल की ज़रूरी शर्तों को पूरा कर सकें.
लोकल होस्ट के लिए सुरक्षा सुविधाएं
प्लैटफ़ॉर्म की सुरक्षा और उपयोगकर्ता की निजता को बेहतर बनाने के लिए, Android 17 में इंस्टॉल करने के समय दी जाने वाली नई अनुमति, USE_LOOPBACK_INTERFACE पेश की गई है. इस बदलाव से, लूपबैक इंटरफ़ेस पर अलग-अलग ऐप्लिकेशन और प्रोफ़ाइलों के बीच होने वाले कम्यूनिकेशन पर पाबंदी लग जाती है. जैसे, 127.0.0.1 या ::1. पहले, INTERNET अनुमति के साथ यह कम्यूनिकेशन अपने-आप चालू हो जाता था. Android 17 या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ये नियम लागू होते हैं:
- दोनों की सहमति ज़रूरी है: अब एक से ज़्यादा ऐप्लिकेशन और एक से ज़्यादा प्रोफ़ाइलों के बीच बातचीत करने की सुविधा डिफ़ॉल्ट रूप से बंद कर दी गई है. कनेक्शन के लिए, यह ज़रूरी है कि डेटा भेजने वाले ऐप्लिकेशन और डेटा पाने वाले ऐप्लिकेशन, दोनों ने अपनी मेनिफ़ेस्ट फ़ाइलों में
USE_LOOPBACK_INTERFACEअनुमति के बारे में साफ़ तौर पर बताया हो. - एक ही ऐप्लिकेशन के अंदर होने वाले ट्रैफ़िक पर लागू नहीं होती: एक ही ऐप्लिकेशन के अंदर होने वाले लूपबैक कम्यूनिकेशन (इंट्रा-ऐप्लिकेशन कम्यूनिकेशन) पर इसका कोई असर नहीं पड़ता. साथ ही, इसके लिए इस नई अनुमति की ज़रूरत नहीं होती.
- टारगेट किए जा रहे एसडीके का व्यवहार:
- ऐप्लिकेशन, Android 17 या उसके बाद के वर्शन को टारगेट करता है: इस मामले में, अनुमति के लिए साफ़ तौर पर अनुरोध करना ज़रूरी है. अगर यह मौजूद नहीं है, तो सॉकेट ऑपरेशन (जैसे कि टीसीपी कनेक्ट या यूडीपी भेजें) काम नहीं करते. आम तौर पर, इससे
EPERM(ऑपरेशन की अनुमति नहीं है) गड़बड़ी दिखती है. - ऐप्लिकेशन, एपीआई लेवल 36 या उससे कम को टारगेट करता है: इस अनुमति को
INTERNETपर स्प्लिट अनुमति के तौर पर माना जाता है. अगर ऐप्लिकेशन के पासINTERNETहै, तो एपीआई के निचले लेवल को टारगेट करने वाले ऐप्लिकेशन को यह अनुमति अपने-आप मिल जाती है.
- ऐप्लिकेशन, Android 17 या उसके बाद के वर्शन को टारगेट करता है: इस मामले में, अनुमति के लिए साफ़ तौर पर अनुरोध करना ज़रूरी है. अगर यह मौजूद नहीं है, तो सॉकेट ऑपरेशन (जैसे कि टीसीपी कनेक्ट या यूडीपी भेजें) काम नहीं करते. आम तौर पर, इससे
- वर्शन के साथ काम न करने की चेतावनी: अगर डेटा पाने वाला ऐप्लिकेशन, टारगेट को Android 17 पर अपडेट करता है, लेकिन इस अनुमति का अनुरोध नहीं करता है, तो अन्य ऐप्लिकेशन से आने वाले कनेक्शन अस्वीकार कर दिए जाएंगे. भले ही, डेटा भेजने वाला ऐप्लिकेशन, एपीआई के निचले लेवल को टारगेट करता हो.
डिफ़ॉल्ट रूप से सीटी चालू करें
अगर कोई ऐप्लिकेशन Android 17 या इसके बाद के वर्शन को टारगेट करता है, तो सर्टिफ़िकेट ट्रांसपैरेंसी (सीटी) की सुविधा डिफ़ॉल्ट रूप से चालू होती है. (Android 16 पर, सीटी उपलब्ध है, लेकिन ऐप्लिकेशन को ऑप्ट इन करना होगा.)
ज़्यादा सुरक्षित नेटिव DCL—C
अगर आपका ऐप्लिकेशन, Android 17 या इसके बाद वाले वर्शन को टारगेट करता है, तो Android 14 में DEX और JAR फ़ाइलों के लिए शुरू की गई, ज़्यादा सुरक्षित डाइनैमिक कोड लोडिंग (डीसीएल) की सुविधा अब नेटिव लाइब्रेरी के लिए भी उपलब्ध है.
System.load() का इस्तेमाल करके लोड की गई सभी नेटिव फ़ाइलों को, रीड-ओनली के तौर पर मार्क किया जाना चाहिए.
ऐसा न होने पर, सिस्टम UnsatisfiedLinkError दिखाता है.
हमारा सुझाव है कि ऐप्लिकेशन, कोड को डाइनैमिक तरीके से लोड करने से बचें. ऐसा इसलिए, क्योंकि इससे कोड इंजेक्शन या कोड में छेड़छाड़ की वजह से, ऐप्लिकेशन के हैक होने का खतरा बहुत बढ़ जाता है.
डिवाइस के नाप या आकार
Android 17 में, डिवाइस के अलग-अलग साइज़ और फ़ॉर्म फ़ैक्टर के हिसाब से उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, ये बदलाव किए गए हैं.
बड़ी स्क्रीन (sw>=600dp) पर ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियों को अनदेखा करने के लिए, प्लैटफ़ॉर्म एपीआई में बदलाव
हमने Android 16 में, प्लैटफ़ॉर्म एपीआई में बदलाव किए हैं. इससे, एपीआई लेवल 36 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, बड़ी स्क्रीन (sw >= 600dp) पर ओरिएंटेशन, आसपेक्ट रेशियो, और साइज़ बदलने से जुड़ी पाबंदियों को अनदेखा किया जा सकेगा. डेवलपर के पास SDK 36 का इस्तेमाल करके, इन बदलावों से ऑप्ट आउट करने का विकल्प है. हालांकि, Android 17 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह विकल्प उपलब्ध नहीं होगा.
ज़्यादा जानकारी के लिए, ओरिएंटेशन और साइज़ बदलने से जुड़ी पाबंदियों को अनदेखा किया जाता है लेख पढ़ें.