कंपैटिबिलिटी फ़्रेमवर्क टूल

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

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

चालू बदलावों का पता लगाने का तरीका

व्यवहार में बदलाव के चालू होने पर, यह इस बात पर असर डाल सकता है कि आपका ऐप्लिकेशन इन प्लैटफ़ॉर्म एपीआई पर इस बदलाव का असर पड़ेगा. यह देखा जा सकता है कि में, डेवलपर के लिए सेटिंग और टूल, Logcat या ADB कमांड का इस्तेमाल करके, बदलावों को चालू किया जा सकता है.

डेवलपर के लिए सेटिंग और टूल का इस्तेमाल करके चालू किए गए बदलावों की पहचान करना

पहला डायग्राम. साथ काम करने के लिए ऐप्लिकेशन में किए गए बदलाव देखें.

यह देखा जा सकता है कि कौनसे बदलाव चालू हैं. साथ ही, उन बदलावों को चालू या बंद करें पर क्लिक करें डेवलपर के लिए सेटिंग और टूल की जानकारी होती है. इन विकल्पों को ऐक्सेस करने के लिए, यह तरीका अपनाएं:

  1. अगर डेवलपर के लिए सेटिंग और टूल पहले से चालू नहीं हैं, तो उन्हें चालू करें.
  2. अपने डिवाइस का Settings ऐप्लिकेशन खोलें और यहां जाएं सिस्टम > बेहतर > डेवलपर के लिए सेटिंग और टूल > साथ काम करने के लिए ऐप्लिकेशन में किए गए बदलाव.
  3. सूची में से अपना ऐप्लिकेशन चुनें.

व्यवहार में होने वाला हर बदलाव आम तौर पर इन दो कैटगरी में से किसी एक से संबंधित होता है:

  • ऐसे बदलाव जो Android के किसी भी वर्शन पर चलने वाले सभी ऐप्लिकेशन पर असर डालते हैं ऐप्लिकेशन के targetSdkVersion में से.

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

  • ऐसे बदलाव जो सिर्फ़ कुछ Android वर्शन को टारगेट करने वाले ऐप्लिकेशन पर असर डालते हैं. क्योंकि इन बदलावों से सिर्फ़ उन ऐप्लिकेशन पर असर पड़ता है जो इसके खास वर्शन को टारगेट करते हैं Android, वे बदलाव भी होते हैं जिन्हेंगेट किया गया targetSDKVersion.

    ये बदलाव, साथ काम करने वाले फ़्रेमवर्क में डिफ़ॉल्ट रूप से चालू होते हैं. ऐसा तब होता है, जब आपके ऐप्लिकेशन, सूची में शामिल एपीआई वर्शन से नए वर्शन को टारगेट कर रहा हो. उदाहरण के लिए, व्यवहार में बदलाव होने पर, इसकी वजह से targetSDKVersion Android 13 (एपीआई लेवल 33), यूज़र इंटरफ़ेस (यूआई) में इस सेक्शन के नाम से दिखेगा targetSdkVersion >=33 के लिए चालू किया गया है. Android के कुछ पहले के वर्शन पर, इस सेक्शन का टाइटल है, "SDK टूल API_LEVEL के बाद चालू किया गया" आज़माएं.

आपको पहली इमेज में, बंद किए गए डिफ़ॉल्ट बदलाव नाम का एक सेक्शन भी दिखेगा. इस सेक्शन में होने वाले बदलावों के कई मकसद हो सकते हैं. इस तारीख से पहले इन बदलावों को चालू करने के बाद, कंपैटबिलिटी में बदलाव की जानकारी पढ़ें उस Android वर्शन के फ़्रेमवर्क की सूची देखें.

Logcat का इस्तेमाल करके, चालू किए गए बदलावों की पहचान करें

व्यवहार में होने वाले हर बदलाव के लिए, आपके ऐप्लिकेशन को प्रोसेस करने के दौरान पहली बार ऐसा तब होता है, जब आपका ऐप्लिकेशन जिस एपीआई पर असर हुआ है उसे कॉल करता है, तो सिस्टम इस तरह का एक Logcat मैसेज दिखाता है:

D CompatibilityChangeReporter: Compat change id reported: 194833441; UID 10265; state: ENABLED

हर Logcat मैसेज में यह जानकारी शामिल होती है:

आईडी बदलें
यह बताता है कि किस बदलाव का असर ऐप्लिकेशन पर पड़ रहा है. यह मान इनमें से किसी एक ऐप्लिकेशन के साथ काम करने के लिए बदलाव स्क्रीन पर दिखने वाले व्यवहार में बदलाव (इमेज 1 देखें). इस उदाहरण में, 194833441 NOTIFICATION_PERM_CHANGE_ID.
यूआईडी
इससे पता चलता है कि किस ऐप्लिकेशन पर इस बदलाव का असर पड़ा है.
राज्य

यह बताता है कि इस बदलाव का असर ऐप्लिकेशन पर पड़ रहा है या नहीं.

राज्य इनमें से कोई एक वैल्यू हो सकती है:

राज्य मतलब
ENABLED बदलाव चालू है और इससे ऐप्लिकेशन के काम करने के तरीके पर असर पड़ेगा, अगर ऐप उन API का उपयोग करता है जिनमें बदलाव किए गए थे.
DISABLED

बदलाव बंद कर दिया गया है और इसका ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.

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

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

ADB का इस्तेमाल करके चालू किए गए बदलावों की पहचान करना

बदलावों का पूरा सेट देखने के लिए नीचे दिया गया ADB निर्देश चलाएं (दोनों चालू किए गए) अन्य डिवाइसों के लिए उपलब्ध है).

adb shell dumpsys platform_compat

आउटपुट में हर बदलाव के लिए नीचे दी गई जानकारी होती है:

आईडी बदलें
व्यवहार में होने वाले इस बदलाव के लिए एक यूनीक आइडेंटिफ़ायर. उदाहरण के लिए, 194833441.
नाम
इस व्यवहार का नाम बदल जाएगा. उदाहरण के लिए, NOTIFICATION_PERM_CHANGE_ID.
targetSDKVersion के लिए ज़रूरी शर्तें

बदलाव किस targetSDKVersion से लागू होता है (अगर कोई हो).

उदाहरण के लिए, अगर यह बदलाव सिर्फ़ SDK टूल के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू किया जाता है 33 या उससे ज़्यादा, enableAfterTargetSdk=32 आउटपुट है. अगर बदलाव नहीं होता है targetSDKVersion से गेट किया गया, enableAfterTargetSdk=0 आउटपुट है.

पैकेज में किए गए बदलाव

हर उस पैकेज का नाम जहां बदलाव की डिफ़ॉल्ट स्थिति है (चालू या बंद) बदल दी गई है.

उदाहरण के लिए, यदि यह बदलाव डिफ़ॉल्ट रूप से सक्षम होता है, तो आपके ऐप्लिकेशन का पैकेज का नाम तब दिखाई देगा, जब आप इनमें से किसी एक का इस्तेमाल करके बदलाव को बंद कर दें डेवलपर विकल्पों या ADB के लिए उपलब्ध होती है. इस मामले में, आउटपुट यह होगा:

packageOverrides={com.my.package=false}

targetSDKVersion की ओर से सीमित किए गए बदलावों को या तो चालू किया जा सकता है या यह सुविधा डिफ़ॉल्ट रूप से बंद रहती है, इसलिए पैकेज की सूची में दोनों के इंस्टेंस शामिल हो सकते हैं true या false, इनमें से हर ऐप्लिकेशन के targetSDKVersion पर निर्भर करता है. इसके लिए उदाहरण:

packageOverrides={com.my.package=true, com.another.package=false}

खास बदलावों के बारे में ज़्यादा जानें

साथ काम करने वाले फ़्रेमवर्क में, व्यवहार में हुए बदलावों की पूरी सूची इस तरह से शामिल की गई है दस्तावेज़ के हर Android वर्शन के लिए ज़रूरी शर्तें पूरी करता है. इसके लिए निम्न लिंक देखें ज़्यादा जानकारी के लिए, Android के वर्शन के आधार पर अपने ऐप्लिकेशन की जांच की जा रही है इसके लिए:

बदलावों को कब टॉगल करें

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

बदलावों को कब बंद करना है

बदलावों को कब बंद करना है, यह तय करना आम तौर पर इस बात पर निर्भर करता है कि बदलाव targetSDKVersion से गेट किया गया हो या नहीं.

सभी ऐप्लिकेशन के लिए बदलाव चालू कर दिए गए हैं

सभी ऐप्लिकेशन पर असर डालने वाले बदलावों को यह सुविधा चालू करती है: प्लैटफ़ॉर्म के खास वर्शन के लिए डिफ़ॉल्ट सेटिंग का इस्तेमाल करती है. इससे कोई फ़र्क़ नहीं पड़ता कि आपका ऐप्लिकेशन targetSDKVersion, ताकि आप यह देख सकें कि क्या आपका ऐप्लिकेशन ऐप्लिकेशन वर्शन पर काम कर रहे हैं.

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

इन बदलावों का असर, targetSDKVersion से जुड़े सभी ऐप्लिकेशन पर पड़ सकता है. आम तौर पर, बदलावों से पहले आपको अपने ऐप्लिकेशन को इन बदलावों के लिए जांचकर अपडेट कर लेना चाहिए जो targetSDKVersion के इस्तेमाल से सुरक्षित हैं. इससे यह पक्का करने में मदद मिलती है कि आपके उपयोगकर्ता डिवाइस को नए डिवाइस में अपडेट करने पर, उसे ऐप्लिकेशन का खराब अनुभव नहीं मिलेगा प्लैटफ़ॉर्म वर्शन है.

आपको इन बदलावों को आज़माने की प्राथमिकता पर भी काम करना चाहिए, क्योंकि इनके लिए टॉगल नहीं किया जा सकता Android के सार्वजनिक तौर पर रिलीज़ किए गए वर्शन का इस्तेमाल करने पर, ये बदलाव बंद हो जाते हैं. आदर्श रूप से, आपको इसके प्रत्येक संस्करण के लिए इन परिवर्तनों का परीक्षण करना चाहिए Android जब उस वर्शन की झलक दिखाई जा रही हो.

targetSDKVersion से लागू होने वाले बदलाव

अगर आपका ऐप्लिकेशन किसी खास जगह को टारगेट कर रहा है targetSDKVersion, उस वर्शन के लिए लागू होने वाले सभी बदलाव चालू हो गए हैं डिफ़ॉल्ट रूप से. इसलिए, जब आप अपने ऐप्लिकेशन के targetSDKVersion को किसी नए वर्शन में, एक ही बार में कई नए बदलावों का असर आपके ऐप्लिकेशन पर पड़ेगा.

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

बदलावों को कब टॉगल करना है

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

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

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

बदलावों को चालू या बंद करने के लिए टॉगल करें

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

डेवलपर के लिए सेटिंग और टूल का इस्तेमाल करके, बदलावों को टॉगल करें

बदलावों को चालू या बंद करने के लिए, डेवलपर के लिए सेटिंग और टूल का इस्तेमाल करें. डेवलपर को ढूंढने के लिए विकल्प दिखाई दे रहे हैं, तो इन चरणों का पालन करें:

  1. अगर डेवलपर के लिए सेटिंग और टूल पहले से चालू नहीं हैं, तो उन्हें चालू करें.
  2. अपने डिवाइस का सेटिंग ऐप्लिकेशन खोलें और सिस्टम > बेहतर > डेवलपर के लिए सेटिंग और टूल > साथ काम करने के लिए ऐप्लिकेशन में किए गए बदलाव.
  3. सूची में से अपना ऐप्लिकेशन चुनें.
  4. बदलावों की सूची में, वह बदलाव ढूंढें जिसे आपको चालू या बंद करना है और स्विच पर टैप करें.

    उन बदलावों की सूची जिन्हें चालू या बंद किया जा सकता है

ADB का इस्तेमाल करके बदलावों को टॉगल करें

ADB का इस्तेमाल करके किसी बदलाव को चालू या बंद करने के लिए, इनमें से कोई एक निर्देश दें:

adb shell am compat enable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
adb shell am compat disable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

CHANGE_ID (उदाहरण के लिए, 194833441) या CHANGE_NAME (उदाहरण के लिए, NOTIFICATION_PERM_CHANGE_ID) और आपके ऐप्लिकेशन की PACKAGE_NAME.

किसी बदलाव को वापस डिफ़ॉल्ट पर रीसेट करने के लिए, नीचे दिए गए निर्देश का भी इस्तेमाल किया जा सकता है स्थिति के अनुसार, ADB या डेवलपर विकल्पों का इस्तेमाल करके सेट किए गए किसी भी बदलाव को हटाने के लिए:

adb shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

बदलावों को टॉगल करने पर पाबंदियां

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

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

बिल्ड किस तरह का है डीबग नहीं किया जा सकने वाला ऐप्लिकेशन डीबग करने लायक ऐप्लिकेशन
सभी बदलाव targetSDKVersion से सुरक्षित किए गए बदलाव अन्य सभी बदलाव
डेवलपर प्रीव्यू या बीटा बिल्ड टॉगल नहीं किया जा सकता टॉगल कर सकते हैं टॉगल कर सकते हैं
सार्वजनिक उपयोगकर्ता बिल्ड टॉगल नहीं किया जा सकता टॉगल कर सकते हैं टॉगल नहीं किया जा सकता