साथ काम करने के फ़्रेमवर्क में बदलाव (Android 12)

पहली इमेज. 'डेवलपर के लिए सेटिंग और टूल' में, ऐप्लिकेशन के साथ काम करने के लिए किए गए बदलावों की स्क्रीन पर, वे बदलाव दिखते हैं जिन्हें टॉगल किया जा सकता है.

इस पेज पर, Android 12 (एपीआई लेवल 31) के साथ काम करने वाले फ़्रेमवर्क में, व्यवहार में हुए हर बदलाव के बारे में बताया गया है. Android 12 के साथ काम करने और उसे टारगेट करने के लिए, अपने ऐप्लिकेशन की जांच करने और उसे डीबग करने के लिए, इस सूची का इस्तेमाल डेवलपर के विकल्पों और एडीबी कमांड के साथ करें.

यहां बताया गया है कि कंपैटबिलिटी फ़्रेमवर्क टूल का इस्तेमाल करके, कौनसे काम किए जा सकते हैं:

  • ऐप्लिकेशन के targetSdkVersion को बदले बिना, टारगेट किए गए बदलावों की जांच करें. टॉगल का इस्तेमाल करके, टारगेट किए गए व्यवहार में किए गए खास बदलावों को ज़बरदस्ती चालू किया जा सकता है. इससे, आपके मौजूदा ऐप्लिकेशन पर पड़ने वाले असर का आकलन किया जा सकता है.
  • टेस्टिंग को सिर्फ़ खास बदलावों पर फ़ोकस करें. टारगेट किए गए सभी बदलावों को एक साथ ठीक करने के बजाय, टॉगल की मदद से उन सभी बदलावों को बंद किया जा सकता है जिन्हें आपको टेस्ट करना है.
  • adb की मदद से टॉगल मैनेज करना. अपने-आप चलने वाले टेस्ट एनवायरमेंट में, टॉगल किए जा सकने वाले बदलावों को चालू और बंद करने के लिए, adb निर्देशों का इस्तेमाल किया जा सकता है.
  • स्टैंडर्ड बदलाव आईडी का इस्तेमाल करके, तेज़ी से डीबग करें. टॉगल किए जा सकने वाले बदलावों में से हर एक के पास एक यूनीक आईडी और नाम होता है. इसका इस्तेमाल, लॉग आउट में मुख्य वजह को तुरंत डीबग करने के लिए किया जा सकता है.

इनमें से हर इस्तेमाल के उदाहरण के लिए, टूल इस्तेमाल करने के बारे में पूरी जानकारी पाने के लिए, काम करने के फ़्रेमवर्क के टूल देखें.

काम करने के फ़्रेमवर्क में शामिल व्यवहार से जुड़े बदलाव

इस सेक्शन में दी गई सूची में, Android 12 के साथ काम करने के फ़्रेमवर्क में शामिल, व्यवहार में हुए हर बदलाव के बारे में बताया गया है.

बदलावों की सूची को डिफ़ॉल्ट स्थिति के हिसाब से फ़िल्टर किया जा सकता है.

Android 12 में कंपैटबिलिटी फ़्रेमवर्क में, काम करने के तरीके में किए गए बदलाव

ALWAYS_SANDBOX_DISPLAY_APIS

बदलाव का आईडी: 185004937
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

इसे चालू करने पर, किसी पैकेज पर Display API की सैंडबॉक्स सुविधा लागू होती है, भले ही विंडोिंग मोड कुछ भी हो. Display API हमेशा ऐप्लिकेशन के बाउंड की जानकारी देंगे.

इस बदलाव के बारे में ज़्यादा जानने के लिए, Android 12 के व्यवहार में हुए बदलावों वाले पेज पर, डिसप्ले के लिए इस्तेमाल नहीं किए जा सकने वाले तरीकों के बारे में सेक्शन देखें.

AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER

बदलाव आईडी: 163400105
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 से, प्लैटफ़ॉर्म बेहतर ऑटोमैटिक भरने की सुविधा का इस्तेमाल करके, टेक्स्ट के अलावा अन्य सुझाव दे सकता है. जैसे, इमेज. इसके बारे में ज़्यादा जानने के लिए, ऑटोमैटिक भरने की सेवाएं लेख पढ़ें. किसी ऐप्लिकेशन को ये सुझाव दिखाने के लिए, आम तौर पर उसे OnReceiveContentListener एपीआई लागू करना होगा.

जिन ऐप्लिकेशन में पहले से InputConnection.commitContent(InputContentInfo, int, Bundle) एपीआई लागू है उनके लिए, इस एपीआई को आसानी से अपनाने के लिए, हम उस एपीआई का फ़ॉलबैक के तौर पर फिर से इस्तेमाल करते हैं. ऐसा तब किया जाता है, जब ऐप्लिकेशन में अब तक OnReceiveContentListener लागू न किया गया हो. यह फ़ॉलबैक सिर्फ़ Android 12 (एपीआई लेवल 31) पर चालू होता है. इस बदलाव से, फ़ॉलबैक की सुविधा बंद हो जाती है. इसलिए, Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन को टेक्स्ट के अलावा अन्य सुझाव स्वीकार करने के लिए, OnReceiveContentListener एपीआई लागू करना होगा.

BLOCK_FLAG_SLIPPERY

बदलाव का आईडी: 157929241
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) पर चलने वाले ऐप्लिकेशन के लिए, यह जांच की जाती है कि ऐप्लिकेशन में किसी भी विंडो के साथ FLAG_SLIPPERY का इस्तेमाल किया जा रहा है या नहीं. हमें उम्मीद है कि इस फ़्लैग का इस्तेमाल सिर्फ़ सिस्टम के कॉम्पोनेंट कर सकते हैं, क्योंकि यह इस्तेमाल नहीं किया जा सकने वाला फ़ील्ड है. अगर ऐसा है, तो उस पर पाबंदी लगा दी जाएगी.

BLOCK_GPS_STATUS_USAGE

बदलाव आईडी: 144027538
डिफ़ॉल्ट स्थिति: यह विकल्प, Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू किया जाता है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, GpsStatus एपीआई के सभी इस्तेमाल को GnssStatus एपीआई से बदलना होगा.

BLOCK_IMMUTABLE_PENDING_INTENTS

बदलाव आईडी: 171317480
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, जगह की जानकारी के एपीआई में पास किए गए, बदलाव न किए जा सकने वाले PendingIntent ऑब्जेक्ट से IllegalArgumentException. जनरेट होगा

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

बदलाव का आईडी: 169887240
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, LocationRequest सिस्टम एपीआई का इस्तेमाल PendingIntent जगह की जानकारी के अनुरोधों के साथ नहीं किया जा सकता.

BLOCK_UNTRUSTED_TOUCHES

बदलाव आईडी: 158002302
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.

सिस्टम की सुरक्षा और उपयोगकर्ता को बेहतर अनुभव देने के लिए, Android 12 ऐप्लिकेशन को टच इवेंट का इस्तेमाल करने से रोकता है. ऐसा तब होता है, जब कोई ओवरले ऐप्लिकेशन को असुरक्षित तरीके से ब्लॉक करता है.

इस बदलाव के बारे में ज़्यादा जानने के लिए, भरोसेमंद नहीं होने वाले टच इवेंट ब्लॉक किए गए हैं लेख पढ़ें.

CALL_ACTIVITY_RESULT_BEFORE_RESUME

बदलाव का आईडी: 78294732
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, गतिविधि के नतीजे की लाइफ़साइकल को ठीक करता है, ताकि यह पक्का किया जा सके कि किसी गतिविधि को फिर से शुरू करने से ठीक पहले, गतिविधि का नतीजा मिले.

CAMERA_MIC_INDICATORS_NOT_PRESENT

बदलाव का आईडी: 162547999
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

इससे पता चलता है कि इस डिवाइस पर कैमरा और माइक्रोफ़ोन इंडिकेटर काम करते हैं. अगर मौजूद है, तो false होगा, क्योंकि अगर बदलाव आईडी मौजूद नहीं है, तो CompatChanges#isChangeEnabled तरीका true दिखाता है.

CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS

बदलाव आईडी: 146211400
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, पैकेज मैनेजर किसी पैकेज को इंस्टॉल नहीं करेगा. ऐसा तब होगा, जब अनुमति के गलत ग्रुप मौजूद हों. अनुमति के ग्रुप सिर्फ़ उन ऐप्लिकेशन के बीच शेयर किए जाने चाहिए जो एक ही सर्टिफ़िकेट शेयर करते हैं. अगर कोई अनुमति किसी ग्रुप से जुड़ी है, तो उस ग्रुप की जानकारी भी देनी होगी.

CHANGE_ID_AUTH_STATE_DENIED

बदलाव आईडी: 181350407
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले क्लाइंट ऐप्लिकेशन के लिए, SecurityException तब ट्रिगर होता है, जब वे अनुमति न देने की स्थिति में होते हैं और नैनोऐप पर मैसेज भेजने की कोशिश करते हैं.

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

बदलाव आईडी: 136069189
डिफ़ॉल्ट स्थिति: यह विकल्प, Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू किया जाता है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, SecurityException तब ट्रिगर होता है, जब उनके पास HIGH_SAMPLING_RATE_SENSORS की अनुमति न हो, डीबग मोड में चलता हो, और सैंपलिंग की दरों का अनुरोध 200 हर्ट्ज़ से ज़्यादा हो.

DELIVER_HISTORICAL_LOCATIONS

बदलाव का आईडी: 73144566
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, कुछ मामलों में लोकेशन क्लाइंट को पुरानी जगहें (मौजूदा समय से पहले की) दिख सकती हैं.

DISPLAY_INFO_NR_ADVANCED_SUPPORTED

बदलाव आईडी: 181658987
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyDisplayInfo में किए गए बदलावों के साथ काम करने की सुविधा देता है.

DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE

बदलाव आईडी: 170503758
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, प्लैटफ़ॉर्म किसी ऐप्लिकेशन के फ़्रेम रेट को रिफ़्रेश रेट के डिवाइडर तक कम कर सकता है. ऐसा तब किया जाता है, जब यह ज़्यादा बेहतर हो. उदाहरण के लिए, जब ऐप्लिकेशन को Surface.setFrameRate(float, int) पर कॉल किया गया हो. ऐप्लिकेशन को कम किए गए फ़्रेम रेट पर Choreographer.postFrameCallback(Choreographer.FrameCallback) कॉलबैक और बैकप्रेशर का अनुभव होगा. ऐप्लिकेशन, डिसप्ले के रीफ़्रेश रेट के बारे में जानने के लिए Display.getRefreshRate() और Display.Mode.getRefreshRate() का इस्तेमाल करते हैं. Display.getRefreshRate() हमेशा ऐप्लिकेशन फ़्रेम रेट दिखाएगा, न कि डिसप्ले के फ़िज़िकल रीफ़्रेश रेट को. इससे ऐप्लिकेशन को फ़्रेम पेसिंग सही तरीके से करने में मदद मिलती है. Display.Mode.getRefreshRate(), किसी पिछली रिलीज़ के लिए कॉम्पाइल किए जाने पर, ऐप्लिकेशन के फ़्रेम रेट की जानकारी दिखाएगा. साथ ही, Android 12 (एपीआई लेवल 31) से, यह फ़िज़िकल डिसप्ले के रीफ़्रेश रेट की जानकारी दिखाएगा.

DOWNSCALED

बदलाव का आईडी: 168419799
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

यह बदलाव, हर ऐप्लिकेशन के लिए बफ़र को कम करने के सभी बदलावों को कंट्रोल करता है. इस बदलाव को चालू करने से, स्केलिंग के लिए ये फ़ैक्टर लागू किए जा सकते हैं:

जब किसी ऐप्लिकेशन पैकेज के लिए यह बदलाव चालू किया जाता है, तो ऐप्लिकेशन का साइज़, स्केलिंग फ़ैक्टर के ज़रिए तय किए गए सबसे बड़े साइज़ पर बदल जाता है. उदाहरण के लिए, अगर 80% और 70%, दोनों (DOWNSCALE_80 और DOWNSCALE_70) चालू हैं, तो 80% का इस्तेमाल किया जाएगा.

DOWNSCALE_30

बदलाव आईडी: 189970040
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू होता है, तो पैकेज के लिए इस बदलाव को चालू करने से ऐप्लिकेशन को यह मानकर चलना होता है कि वह असल डिसप्ले के 30% वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन पर चल रहा है.

DOWNSCALE_35

बदलाव का आईडी: 189969749
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू होता है, तो किसी पैकेज के लिए इस बदलाव को चालू करने से ऐप्लिकेशन को यह मानकर चलना होता है कि वह असल डिसप्ले के 35% वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन पर चल रहा है.

DOWNSCALE_40

बदलाव का आईडी: 189970038
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू होता है, तो किसी पैकेज के लिए इस बदलाव को चालू करने से ऐप्लिकेशन को यह मानकर चलता है कि वह असल डिसप्ले के 40% वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन पर चल रहा है.

DOWNSCALE_45

बदलाव आईडी: 189969782
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 45% वाले डिसप्ले पर चल रहा है.

DOWNSCALE_50

बदलाव का आईडी: 176926741
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 50% वाले डिसप्ले पर चल रहा है.

DOWNSCALE_55

बदलाव का आईडी: 189970036
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 55% वाले डिसप्ले पर चल रहा है.

DOWNSCALE_60

बदलाव का आईडी: 176926771
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 60% वाले डिसप्ले पर चल रहा है.

DOWNSCALE_65

आईडी बदलें: 189969744
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए इस बदलाव को चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 65% वाले डिसप्ले पर चल रहा है.

DOWNSCALE_70

बदलाव का आईडी: 176926829
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू होता है, तो पैकेज के लिए इस बदलाव को चालू करने से ऐप्लिकेशन को यह मानकर चलता है कि वह असल डिसप्ले के 70% वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन पर चल रहा है.

DOWNSCALE_75

बदलाव का आईडी: 189969779
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 75% वाले डिसप्ले पर चल रहा है.

DOWNSCALE_80

बदलाव आईडी: 176926753
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 80% वाले डिसप्ले पर काम कर रहा है.

DOWNSCALE_85

बदलाव का आईडी: 189969734
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू होता है, तो किसी पैकेज के लिए इस बदलाव को चालू करने से ऐप्लिकेशन को यह मानकर चलता है कि वह असल डिसप्ले के 85% वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन पर चल रहा है.

DOWNSCALE_90

बदलाव का आईडी: 182811243
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर DOWNSCALED भी चालू होता है, तो पैकेज के लिए इस बदलाव को चालू करने से ऐप्लिकेशन को यह मानकर चलना होता है कि वह असल डिसप्ले के 90% वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन पर चल रहा है.

DO_NOT_DOWNSCALE_TO_1080P_ON_TV

बदलाव आईडी: 157629738
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android TV के लिए बनाए गए ऐसे ऐप्लिकेशन जो Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करते हैं, वे किसी भी विंडो साइज़ को हैंडल कर सकते हैं. इनमें 1080p से ज़्यादा की विंडो साइज़ भी शामिल हैं. Android के पुराने वर्शन को टारगेट करने वाले ऐप्लिकेशन को 1080 पिक्सल से ज़्यादा बड़े विंडो नहीं मिलते. इसलिए, ज़रूरत पड़ने पर उनके विंडो को 1080 पिक्सल पर डाउनस्केल कर दिया जाता है.

DROP_CLOSE_SYSTEM_DIALOGS

बदलाव का आईडी: 174664120
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.

ऐप्लिकेशन और सिस्टम के साथ इंटरैक्ट करते समय, उपयोगकर्ता के कंट्रोल को बेहतर बनाने के लिए, Android 12 के बाद से ACTION_CLOSE_SYSTEM_DIALOGS इंटेंट ऐक्शन का इस्तेमाल नहीं किया जा सकता.

इस बदलाव के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन, सिस्टम डायलॉग बंद नहीं कर सकते लेख पढ़ें.

ENABLE_CHECKS_FOR_PRIVATE_FILES

बदलाव का आईडी: 172100307
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन, मीडिया प्रोवाइडर का इस्तेमाल करके निजी फ़ाइलें शामिल या अपडेट नहीं कर सकते.

ENABLE_DEFERRED_SCAN

बदलाव आईडी: 180326732
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

MediaProvider#update() के हिस्से के तौर पर ट्रिगर होने वाले स्कैन को आगे बढ़ाने के लिए, इस विकल्प को चालू करें.

ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION

बदलाव आईडी: 157233955
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, कॉल की स्थिति के बारे में क्वेरी करने और सूचना देने वाले एपीआई पर READ_PHONE_STATE सुरक्षा चालू करता है. जैसे, TelecomManager#getCallState, TelephonyManager.getCallStateForSubscription(), और TelephonyCallback.CallStateListener.

ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION

बदलाव आईडी: 183407956
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, getPhoneAccount(PhoneAccountHandle) पर READ_PHONE_NUMBERS या READ_PRIVILEGED_PHONE_STATE सुरक्षा मोड चालू करें.

ENABLE_INCLUDE_ALL_VOLUMES

बदलाव का आईडी: 182734110
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

हाल ही में अनमाउंट किए गए वॉल्यूम की फ़ाइलों की डेटाबेस लाइन को MediaProvider#query में शामिल करने के लिए, यह विकल्प चालू करें.

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

बदलाव आईडी: 178209446
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

इस विकल्प को चालू करके, Manifest.permission.MANAGE_EXTERNAL_STORAGE अनुमति वाले ऐप्लिकेशन को, रॉ बाहरी स्टोरेज का ऐक्सेस पाने का अनुरोध करने की अनुमति दें.

ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS

बदलाव का आईडी: 185199076
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, सटीक समय के बजाय किसी अन्य समय पर सूचना देने वाले सभी अलार्म के लिए, कम से कम विंडो साइज़ होना ज़रूरी है. यह साइज़ कुछ मिनट का होना चाहिए. असल में, जिन अलार्म के लिए कम विंडो की ज़रूरत होती है वे एग्ज़ैक्ट अलार्म जैसे ही होते हैं. साथ ही, इनके लिए दिए गए एपीआई का इस्तेमाल करना चाहिए, जैसे कि setExact(int, long, PendingIntent). अगर अलार्म के लिए तय की गई विंडो छोटी है, तो सिस्टम उन्हें लंबा कर देगा.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

बदलाव का आईडी: 142191088
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन को, उन सार्वजनिक नेटिव शेयर की गई लाइब्रेरी की डिपेंडेंसी का एलान करना होगा जिन्हें डिवाइस बनाने वाली कंपनी ने अपने AndroidManifest.xml में uses-native-library टैग का इस्तेमाल करके तय किया है. अगर कोई भी डिपेंडेंसी पूरी नहीं हो पा रही हो, उदाहरण के लिए, कोई एक डिपेंडेंसी मौजूद न हो, तो पैकेज मैनेजर ऐप्लिकेशन को इंस्टॉल नहीं कर पाएगा. टैग में android:required एट्रिब्यूट का इस्तेमाल करके, डिपेंडेंसी को वैकल्पिक के तौर पर बताया जा सकता है. इस स्थिति में, डिपेंडेंसी पूरी न करने पर इंस्टॉल होने की प्रोसेस नहीं रुकेगी.

इंस्टॉल होने के बाद, ऐप्लिकेशन में सिर्फ़ वे नेटिव शेयर की गई लाइब्रेरी उपलब्ध होती हैं जिनके बारे में ऐप्लिकेशन मेनिफ़ेस्ट में बताया गया है. dlopen को, शेयर की गई किसी ऐसी नेटिव लाइब्रेरी से कॉल नहीं किया जा सकेगा जो ऐप्लिकेशन मेनिफ़ेस्ट में नहीं दिखेगी. भले ही, वह डिवाइस में मौजूद हो.

ENFORCE_STRICT_QUERY_BUILDER

बदलाव का आईडी: 143231523
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

चालू होने पर, SQLiteQueryBuilder CalendarProvider2 क्वेरी के सभी विकल्पों की पुष्टि, नुकसान पहुंचाने वाले आर्ग्युमेंट के ख़िलाफ़ की जाती है.

FGS_BG_START_RESTRICTION_CHANGE_ID

बदलाव आईडी: 170668199
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह पाबंदी लगाई गई है कि ऐप्लिकेशन बैकग्राउंड में चलने के दौरान, फ़ोरग्राउंड सेवाएं कब शुरू कर सकते हैं.

FGS_START_EXCEPTION_CHANGE_ID

बदलाव आईडी: 174041399
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, अगर कोई ऐप्लिकेशन बैकग्राउंड में चलने के दौरान फ़ोरग्राउंड सेवा शुरू करने की कोशिश करता है, तो सिस्टम IllegalStateException दिखाता है.

FINISH_INPUT_NO_FALLBACK_CONNECTION

बदलाव आईडी: 156215187
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, डिवाइस के non-interactive होने पर InputConnection को पूरा करें.

अगर मौजूदा input method से चालू किया जाता है, तो डिवाइसों के इंटरैक्टिव न होने पर, मौजूदा इनपुट कनेक्शन finished होगा.

अगर यह सुविधा चालू नहीं है, तो डिवाइसों के इंटरैक्टिव न होने पर, मौजूदा इनपुट कनेक्शन चुपचाप बंद हो जाएगा. साथ ही, डिवाइस फिर से इंटरैक्टिव होने पर, एक onFinishInput() और एक onStartInput() भेजा जाएगा.

FORCE_DISABLE_HEVC_SUPPORT

बदलाव आईडी: 174227820
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

किसी ऐप्लिकेशन को HEVC मीडिया की सुविधा के साथ काम करने से ज़बरदस्ती बंद करना. ऐप्लिकेशन को अपने मेनिफ़ेस्ट में, काम करने वाले मीडिया की सुविधाओं के बारे में बताना चाहिए. हालांकि, इस फ़्लैग का इस्तेमाल करके, किसी ऐप्लिकेशन को HEVC के साथ काम न करने के लिए मजबूर किया जा सकता है. इससे, HEVC में कोड में बदले गए मीडिया को ऐक्सेस करते समय, ट्रांसकोडिंग को ज़बरदस्ती किया जा सकता है. इस फ़्लैग को सेट करने पर, ऐप्लिकेशन के लिए ओएस लेवल की डिफ़ॉल्ट सेटिंग बदल जाती है. यह डिफ़ॉल्ट रूप से बंद होता है. इसका मतलब है कि ओएस के डिफ़ॉल्ट विकल्पों को प्राथमिकता दी जाती है. अगर यह फ़्लैग और FORCE_ENABLE_HEVC_SUPPORT, दोनों चालू हैं, तो ओएस दोनों फ़्लैग को अनदेखा करता है.

FORCE_ENABLE_HEVC_SUPPORT

बदलाव आईडी: 174228127
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

किसी ऐप्लिकेशन को एचईवीसी मीडिया की सुविधा के साथ काम करने के लिए ज़बरदस्ती चालू करें. ऐप्लिकेशन को अपने मेनिफ़ेस्ट में उन मीडिया से जुड़ी सुविधाओं के बारे में बताना होगा जिन पर ऐप्लिकेशन काम करता है. हालांकि, इस फ़्लैग का इस्तेमाल किसी ऐप्लिकेशन को HEVC के साथ काम करने के लिए किया जा सकता है. इसलिए, HEVC में एन्कोड किए गए मीडिया को ऐक्सेस करते समय, ट्रांसकोडिंग से बचें. इस फ़्लैग को सेट करने पर, ऐप्लिकेशन के लिए ओएस लेवल की डिफ़ॉल्ट सेटिंग बदल जाती है. यह डिफ़ॉल्ट रूप से बंद होता है. इसका मतलब है कि ओएस के डिफ़ॉल्ट सेटिंग को प्राथमिकता दी जाएगी. अगर यह फ़्लैग और FORCE_DISABLE_HEVC_SUPPORT, दोनों चालू हैं, तो ऑपरेटिंग सिस्टम दोनों फ़्लैग को अनदेखा कर देता है.

FORCE_NON_RESIZE_APP

बदलाव का आईडी: 181136395
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

जिन पैकेज पर यह लागू होता है उनका साइज़ नहीं बदला जा सकता.

FORCE_RESIZE_APP

बदलाव आईडी: 174042936
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

जिन पैकेज पर इसे लागू किया जाता है उनका साइज़ बदलने की सुविधा चालू कर देता है. हम सिर्फ़ फ़ुलस्क्रीन विंडो मोड में साइज़ बदलने की अनुमति देते हैं. हालांकि, हम ऐप्लिकेशन को साइज़ बदलने की सुविधा वाले मल्टी-विंडो मोड में नहीं भेजते.

HIDE_PROP_ICUBINARY_DATA_PATH

बदलाव का आईडी: 171979766
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, android.icu.impl.ICUBinary.dataPath प्रॉपर्टी का ऐक्सेस हटा दिया जाता है.

IGNORE_ALLOW_BACKUP_IN_D2D

बदलाव आईडी: 183147249
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, डिवाइस-से-डिवाइस (D2D) माइग्रेशन के दौरान android:allowBackup को अनदेखा किया जाता है.

IGNORE_FULL_BACKUP_CONTENT_IN_D2D

बदलाव का आईडी: 180523564
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, डिवाइस-से-डिवाइस (D2D) ट्रांसफ़र के दौरान, android:fullBackupContent का इस्तेमाल करके तय किए गए शामिल करने और बाहर रखने के नियमों को अनदेखा कर दिया जाता है.

IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY

बदलाव का आईडी: 169273070
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, getSupportedLocales() अब डिफ़ॉल्ट सिस्टम भाषा के बजाय, भाषा सेट न होने पर, भाषा की खाली सूची दिखाता है.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

बदलाव आईडी: 158482162
डिफ़ॉल्ट स्थिति: यह विकल्प, Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू किया जाता है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, isBackupServiceActive() के लिए ज़रूरी BACKUP अनुमति, BackupManager में क्लाइंट-साइड के बजाय सेवा-साइड पर लागू की जाती है.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

बदलाव का आईडी: 169897160
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

चालू होने पर, हो सकता है कि प्रूनिंग की नई रणनीति के मुताबिक, पासकोड सेव करने की कार्रवाई पूरी न हो पाए. कीस्टोर इस धारणा के तहत काम करता था कि क्रिप्टोग्राफ़िक ऑपरेशन हमेशा काम करते हैं. हालांकि, KeyMint के बैकएंड में ऑपरेशन के लिए, सीमित संख्या में स्लॉट होते हैं.

"अनगिनत" ऑपरेशन स्लॉट दिखते रहें, इसके लिए, अगर कोई ऑपरेशन स्लॉट उपलब्ध न हो, तो कीस्टोर डेमन हाल ही में इस्तेमाल किए गए कम से कम ऑपरेशन को हटा देगा. इस वजह से, अच्छे ऑपरेशन को समय से पहले बंद किया जा सकता है. इस वजह से, AndroidKeystore को सेवा अस्वीकार करने (डीओएस) और अनचाहे लाइवलॉक के खतरे का सामना करना पड़ा. उदाहरण के लिए, अगर बिजली मैनेजमेंट के ऑप्टिमाइज़ेशन की वजह से एक ही समय पर कई ऐप्लिकेशन चालू हो जाते हैं और क्रिप्टो ऑपरेशन करने की कोशिश करते हैं, तो वे कोई भी कार्रवाई किए बिना ही एक-दूसरे के ऑपरेशन को बंद कर देते हैं.

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

प्रूनिंग की रणनीति: सही उम्मीदवार ढूंढने के लिए, हम कॉलर और हर मौजूदा ऑपरेशन के लिए, नुकसान का हिसाब लगाते हैं. मालियस, प्रूनिंग पावर (कॉलर) या प्रूनिंग रेज़िस्टेंस (मौजूदा ऑपरेशन) के उलट होता है. कॉलर किसी कार्रवाई में काट-छांट कर सके, इसके लिए उसे उससे ज़्यादा मालस वाला ऑपरेशन ढूंढना होगा. प्रूनिंग की रणनीति के बारे में ज़्यादा जानकारी के लिए, operation.rs को लागू करने का तरीका देखें. Android 11 (एपीआई लेवल 30) और उससे पहले के वर्शन पर, KeyStore2, ऑपरेशन के लिए खाली स्लॉट पाने के लिए, Keystore डेमन को पोल करेगा. Android 11 (एपीआई लेवल 30) और इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह अब भी साइफ़र और सिग्नेचर ऑब्जेक्ट की तरह ही शुरू होगा. हालांकि, कार्रवाई करने में ज़्यादा समय लग सकता है. Android के सभी वर्शन को, ऑपरेशन स्लॉट शेड्यूलिंग से फ़ायदा मिलता है. साथ ही, ऑपरेशन को पूरा करने की संभावना भी बढ़ जाती है.

LOCK_DOWN_CLOSE_SYSTEM_DIALOGS

बदलाव आईडी: 174664365
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, Intent.ACTION_CLOSE_SYSTEM_DIALOGS तब तक नहीं भेजा जा सकता, जब तक ऐप्लिकेशन के पास android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS की अनुमति न हो. ध्यान दें कि यह #DROP_CLOSE_SYSTEM_DIALOGS के ज़्यादा पाबंदी वाले वर्शन का उदाहरण है. इसमें यह उम्मीद की जाती है कि ऐप्लिकेशन, Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने के बाद, Intent.ACTION_CLOSE_SYSTEM_DIALOGS इंटेंट भेजना बंद कर देगा.

LOCK_DOWN_COLLAPSE_STATUS_BAR

बदलाव आईडी: 173031413
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, सुरक्षा से जुड़ी वजहों से, स्टेटस बार पैनल को छोटा करने के लिए Manifest.permission.STATUS_BAR अनुमति लेना ज़रूरी है. उपयोगकर्ता को ज़रूरी सूचनाएं ऐक्सेस करने से रोकने के लिए, मैलवेयर इसका गलत इस्तेमाल कर रहा था.

LOW_POWER_EXCEPTIONS

बदलाव का आईडी: 168936375
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, कम बैटरी मोड के तौर पर मार्क किए गए सभी LocationRequest ऑब्जेक्ट, अपवाद के तौर पर काम करते हैं. ऐसा तब होता है, जब कॉल करने वाले के पास LOCATION_HARDWARE अनुमति न हो. ऐसे में, अनुरोध के कम बैटरी मोड वाले हिस्से को चुपचाप हटाने के बजाय, अपवाद के तौर पर काम किया जाता है.

MISSING_EXPORTED_FLAG

बदलाव आईडी: 150232615
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, जब भी कोई इंटेंट फ़िल्टर तय किया जाता है, तो android:exported एट्रिब्यूट के लिए साफ़ तौर पर वैल्यू दी जानी चाहिए.

इस बदलाव के बारे में ज़्यादा जानने के लिए, कॉम्पोनेंट को ज़्यादा सुरक्षित तरीके से एक्सपोर्ट करना लेख पढ़ें.

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

बदलाव का आईडी: 207557677
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, AppZygote प्रोसेस और उसके वंशजों में नेटिव ढेर के ऐलोकेशन के लिए, सबसे अहम बाइट में नॉन-ज़ीरो टैग का इस्तेमाल किया जाता है.

इस बदलाव के बारे में ज़्यादा जानने के लिए, टैग किए गए पॉइंटर देखें.

NATIVE_HEAP_ZERO_INIT

बदलाव आईडी: 178038272
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

नेटिव हीप मेमोरी ऐलोकेशन को अपने-आप शून्य पर सेट करने की सुविधा चालू करें.

NATIVE_MEMTAG_ASYNC

बदलाव आईडी: 135772972
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

इस प्रोसेस में एसिंक्रोनस (ASYNC) मेमोरी टैग की जांच चालू करें. इस फ़्लैग का असर सिर्फ़ ARM मेमोरी टैगिंग एक्सटेंशन (एमटीई) के साथ काम करने वाले हार्डवेयर पर पड़ता है.

NATIVE_MEMTAG_SYNC

बदलाव का आईडी: 177438394
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

इस प्रोसेस में, सिंक्रोनस (SYNC) मेमोरी टैग की जांच करने की सुविधा चालू करता है. इस फ़्लैग का असर सिर्फ़ उन हार्डवेयर पर पड़ता है जिनमें ARM मेमोरी टैगिंग एक्सटेंशन (एमटीई) काम करता है. अगर NATIVE_MEMTAG_ASYNC और यह विकल्प, दोनों चालू हैं, तो इस विकल्प को प्राथमिकता दी जाती है और सिंक मोड में एमटीई चालू हो जाता है.

NEVER_SANDBOX_DISPLAY_APIS

बदलाव का आईडी: 184838306
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

इस सुविधा के चालू होने पर, Display API की सैंडबॉक्स सुविधा को लेटरबॉक्स या एससीएम गतिविधि पर लागू होने से रोका जाता है. Display API, DisplayArea के बाउंड की जानकारी देते रहेंगे.

इस बदलाव के बारे में ज़्यादा जानने के लिए, Android के व्यवहार में हुए 12 बदलावों वाले पेज पर, डिसप्ले के लिए इस्तेमाल किए जाने वाले उन तरीकों के बारे में जानकारी देखें जिन्हें बंद कर दिया गया है.

NOTIFICATION_CANCELLATION_REASONS

बदलाव आईडी: 175319604
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

इससे, सूचना सुनने वाले लोग रद्द करने की नई वजहों को बेहतर तरीके से समझ पाते हैं.

NOTIFICATION_TRAMPOLINE_BLOCK

बदलाव आईडी: 167676448
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 को टारगेट करने वाले ऐप्लिकेशन, नोटिफ़िकेशन ट्रैंपोलिन के तौर पर सेवाओं या ब्रॉडकास्ट रिसीवर का इस्तेमाल नहीं कर सकते. इससे ऐप्लिकेशन की परफ़ॉर्मेंस और यूज़र एक्सपीरियंस को बेहतर बनाने में मदद मिलती है.

इस बदलाव के बारे में ज़्यादा जानने के लिए, सेवाओं या ब्रॉडकास्ट रिसीवर से सूचना ट्रैंपोलिन नहीं बनाए जा सकते लेख पढ़ें.

NULL_TELEPHONY_THROW_NO_CB

बदलाव आईडी: 182185642
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

इसका इस्तेमाल, यह देखने के लिए किया जाता है कि मौजूदा प्रोसेस के लिए टारगेट SDK वर्शन, Android 12 (एपीआई लेवल 31) या उसके बाद वाला वर्शन है या नहीं.

नीचे दिए गए तरीकों पर लागू होता है:

OVERRIDE_MIN_ASPECT_RATIO

बदलाव का आईडी: 174042980
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

यह बदलाव, उन सभी बदलावों को कंट्रोल करता है जो किसी खास आसपेक्ट रेशियो को लागू करते हैं. इस बदलाव को चालू करने पर, नीचे दिए गए कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) लागू हो सकते हैं:

जब किसी ऐप्लिकेशन पैकेज के लिए यह बदलाव चालू किया जाता है, तो ऐप्लिकेशन के मेनिफ़ेस्ट में दिए गए कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को सबसे बड़े आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में बदल दिया जाता है. ऐसा तब तक हो जाता है, जब तक ऐप्लिकेशन की मेनिफ़ेस्ट वैल्यू ज़्यादा न हो.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

बदलाव का आईडी: 180326787
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर OVERRIDE_MIN_ASPECT_RATIO को भी चालू किया जाता है, तो किसी पैकेज के लिए इस बदलाव को चालू करने पर, गतिविधि के लिए कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) तय करके, OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE में तय की गई बड़ी वैल्यू पर सेट हो जाता है.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

बदलाव का आईडी: 180326845
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.

अगर OVERRIDE_MIN_ASPECT_RATIO को भी चालू किया जाता है, तो किसी पैकेज के लिए इस बदलाव को चालू करने पर, गतिविधि के लिए कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE के मुताबिक मीडियम वैल्यू पर सेट किया जाता है.

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

बदलाव आईडी: 160794467
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, आपको अपने ऐप्लिकेशन के बनाए गए हर PendingIntent ऑब्जेक्ट के लिए, म्यूटेबिलिटी की जानकारी देनी होगी. इस अतिरिक्त ज़रूरी शर्त से, आपके ऐप्लिकेशन की सुरक्षा बेहतर होती है.

इस बदलाव के बारे में ज़्यादा जानने के लिए, मंज़ूरी बाकी वाले इंटेंट के लिए म्यूटेबिलिटी होना ज़रूरी है लेख पढ़ें.

PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT

बदलाव का आईडी: 165573442
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले एडमिन ऐप्लिकेशन, DevicePolicyManager.getParentProfileInstance(ComponentName) को कॉल करके मिले DevicePolicyManager इंस्टेंस पर पासवर्ड की क्वालिटी सेट करने के लिए, DevicePolicyManager.setPasswordQuality(ComponentName, int) का इस्तेमाल नहीं कर सकते. इसके बजाय, डिवाइस पर पासवर्ड से जुड़ी ज़रूरी शर्तें सेट करने के लिए, DevicePolicyManager.setRequiredPasswordComplexity(int) का इस्तेमाल करना चाहिए.

RATE_LIMIT_TOASTS

बदलाव आईडी: 174840628
डिफ़ॉल्ट स्थिति: इस बदलाव को टॉगल नहीं किया जा सकता. इसे सिर्फ़ कंपैटबिलिटी फ़्रेमवर्क लॉग करता है.

इस नीति की मदद से, Toast.show() कॉल की संख्या को सीमित किया जा सकता है. इससे उपयोगकर्ता पर, सीमित समय में बहुत ज़्यादा टोस्ट देने का दबाव नहीं होता. अगर किसी तय समयावधि में, तय सीमा से ज़्यादा टॉस्ट दिखाने की कोशिश की जाती है, तो टॉस्ट को खारिज कर दिया जाता है.

REQUIRE_EXACT_ALARM_PERMISSION

बदलाव आईडी: 171306433
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ऐप्लिकेशन के पास Manifest.permission.SCHEDULE_EXACT_ALARM अनुमति होनी चाहिए. इससे, ऐप्लिकेशन सटीक अलार्म सेट करने के लिए, setExactAndAllowWhileIdle(int, long, PendingIntent) और setAlarmClock(AlarmClockInfo, PendingIntent) जैसे किसी भी एपीआई का इस्तेमाल कर सकते हैं.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

बदलाव आईडी: 182478738
डिफ़ॉल्ट स्थिति: यह विकल्प, Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू किया जाता है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyCallback.ActiveDataSubscriptionIdListener को कॉल करने के लिए, ऐप्लिकेशन के पास Manifest.permission.READ_PHONE_STATE अनुमति होनी चाहिए.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO

बदलाव आईडी: 184323934
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyCallback.CellInfoListener को कॉल करने के लिए, ऐप्लिकेशन के पास Manifest.permission.READ_PHONE_STATE अनुमति होनी चाहिए.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO

बदलाव का आईडी: 183164979
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyCallback.DisplayInfoListener को कॉल करने के लिए ऐप्लिकेशन के पास Manifest.permission.READ_PHONE_STATE अनुमति होनी चाहिए.

RESTRICT_ADB_BACKUP

बदलाव आईडी: 171032338
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, adb backup अपने-आप चालू हो जाता है. ऐसा उन ऐप्लिकेशन के लिए होता है जो डीबग किए जा सकने वाले (android:debuggable को true पर सेट) के तौर पर काम करते हैं. साथ ही, यह सुविधा किसी भी दूसरे ऐप्लिकेशन के लिए उपलब्ध नहीं होती.

RESTRICT_DOMAINS

बदलाव का आईडी: 175408749
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ऐप्लिकेशन लिंक की पुष्टि करने वाले एपीआई का अपडेट किया गया फ़ॉर्म ज़रूरी है. इस ज़रूरी शर्त का मतलब है कि ऐप्लिकेशन को किसी इंटेंट फ़िल्टर में डोमेन का एलान करना होगा. इसमें ये सभी चीज़ें शामिल होनी चाहिए:

  • android:autoVerify="true"
  • Intent.ACTION_VIEW
  • Intent.CATEGORY_BROWSABLE
  • Intet.CATEGORY_DEFAULT
  • सिर्फ़ IntentFilter.SCHEME_HTTP और/या IntentFilter.SCHEME_HTTPS, कोई दूसरी स्कीम नहीं

Android के पिछले वर्शन में, Intent.CATEGORY_BROWSABLE की ज़रूरत नहीं थी. अन्य स्कीम इस्तेमाल की जा सकती थीं. साथ ही, किसी भी इंटेंट फ़िल्टर में autoVerify को true पर सेट करने पर, यह माना जाता था कि सभी इंटेंट फ़िल्टर autoVerify="true" पर सेट हैं.

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

बदलाव आईडी: 151105954
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह लागू होता है कि noteOp(String, int, String), noteProxyOp(String, String), और startOp(String, int, String) को भेजे गए सभी attributionTags, तरीकों के पैरामीटर के तौर पर बताए गए पैकेज के मेनिफ़ेस्ट में तय किए जाते हैं.

इस बदलाव को चालू करने के लिए, noteOp(String, int, String) को कॉल करने वाले पैकेज और पैरामीटर के तौर पर बताए गए पैकेज, दोनों के लिए यह बदलाव चालू होना चाहिए.

SELINUX_LATEST_CHANGES

बदलाव आईडी: 143539591
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, SELinux में नए बदलावों के लिए ऑप्ट इन करता है. Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, इस बदलाव को बंद करने का कोई फ़ायदा नहीं है. शेयर किए गए उपयोगकर्ता आईडी का इस्तेमाल करने वाले ऐप्लिकेशन पर इसका कोई असर नहीं पड़ेगा.

SETTINGS_API_V2

बदलाव आईडी: 178111421
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.

AndroidManifest.xml इंटेंट फ़िल्टर में autoVerify=true के तौर पर मार्क किए गए डोमेन की पुष्टि करने के लिए, उपयोगकर्ता की नई प्राथमिकता वाला एपीआई, अब तक मौजूदा प्लैटफ़ॉर्म की झलक में लागू नहीं किया गया है. फ़िलहाल, इसChangeId को चालू करके और adb shell pm set-app-links-user-selection और इससे मिलते-जुलते निर्देशों का इस्तेमाल करके, नए उपयोगकर्ता की पसंद में हुए बदलावों की झलक देखी जा सकती है.

USE_SHORT_FGS_USAGE_INTERACTION_TIME

बदलाव आईडी: 183972877
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह तय करता है कि ऐप्लिकेशन के फ़ोरग्राउंड सेवा शुरू करने पर, स्टैंडबाय बकेट को ACTIVE पर ले जाने से पहले, कम टाइम आउट का इस्तेमाल किया जाए या नहीं.