प्रतिनिधि इंटरव्यू विषय

सामान्य साक्षात्कार: आप एक Android ऐप को Android 16 edge-to-edge पर कैसे माइग्रेट करेंगे?

सामान्यमध्यम
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

आपका Android ऐप लेगेसी विंडो लेआउट और सिस्टम-बार हैंडलिंग पर निर्भर करता है। Android 16 target 16+ के लिए edge-to-edge ऑप्ट-आउट को हटा देता है, इसलिए आप माइग्रेशन और रिलीज़ की योजना कैसे बनाएंगे?

परिदृश्य (Scenario)

आप एक ऐसे Android ऐप के ओनर हैं जिसमें लेगेसी Views, Jetpack Compose और थर्ड-पार्टी SDKs का मिश्रण है। Android 16+ को लक्षित करने वाले ऐप्स के लिए, windowOptOutEdgeToEdgeEnforcement को हटा दिया गया है, इसलिए ऐप को विंडो इनसेट्स को सही तरीके से संभालना होगा। बताएं कि आप जोखिमों की पहचान कैसे करेंगे, लेआउट कैसे बदलेंगे, डिवाइस फॉर्म्स को कैसे सत्यापित करेंगे और रिलीज़ जोखिम को कैसे नियंत्रित करेंगे।

साक्षात्कारकर्ता क्या मूल्यांकन करता है

  • "Android 16 पर संगत रूप से चलना" को "targetSdkVersion को 16 तक बढ़ाना" से अलग करना।
  • सिस्टम बार, IME, कटआउट, जेस्चर क्षेत्रों और स्क्रॉल कंटेनरों की व्यवस्थित रूप से जांच करना।
  • Views, Compose, लाइब्रेरी और SDKs के संयोजनों को कवर करना।
  • कम्पैटिबिलिटी टॉगल, कैनरी और निगरानी योग्य रोलबैक को डिज़ाइन करना।

स्पष्टीकरण के लिए प्रश्न

लक्षित और कंपाइल SDKs, समर्थित Android संस्करणों, View/Compose विभाजन, पोर्ट्रेट/लैंडस्केप और फोल्डेबल कवरेज, और फुलस्क्रीन कैमरा, मैप्स या WebView के उपयोग की पुष्टि करें। स्क्रीनशॉट-टेस्ट, क्रैश और लेआउट-शिकायत बेसलाइन के बारे में पूछें, और क्या थर्ड-पार्टी SDKs edge-to-edge समर्थन को दस्तावेजित करते हैं।

30-सेकंड का उत्तर

मैं दो चरणों का उपयोग करूँगा। पहले, टारगेट बढ़ाए बिना Android 16 पर व्यवहार परिवर्तनों को उजागर करूँगा, फिर इनसेट फिक्स को टारगेट अपग्रेड से अलग करूँगा। Views और Compose में रूट लेआउट, बार, IME, जेस्चर क्षेत्रों और स्क्रॉलिंग की जांच करूँगा। केवल कम्पैटिबिलिटी वाला बिल्ड एक छोटे समूह को शिप करूँगा और क्रैश, ऑक्लूज़न (छिपाव) संबंधी शिकायतों और प्रमुख-प्रवाह समापन पर नज़र रखूँगा। स्क्रीनशॉट रीग्रेशन और डिवाइस-मैट्रिक्स परीक्षण पास होने के बाद ही टारगेट बढ़ाऊँगा। टारगेट परिवर्तनों को बड़े फीचर्स से अलग रखूँगा ताकि खराब लेआउट को आसानी से रोलबैक किया जा सके।

चरण-दर-चरण तर्क

1. कम्पैटिबिलिटी को टारगेट अपग्रेड से अलग करें

Android का माइग्रेशन मार्गदर्शन पहले मौजूदा ऐप को Android 16 पर टेस्ट करने की सिफारिश करता है; कई फिक्स के लिए तत्काल टारगेट परिवर्तन की आवश्यकता नहीं होती है। फिर Android 16 को लक्षित करने वाले ऐप्स के व्यवहार परिवर्तनों को हल करें, जिससे रीग्रेशन का स्रोत स्पष्ट रहे।

2. एक इनसेट चेकलिस्ट बनाएं

जांचें कि क्या रूट सिस्टम-बार इनसेट्स का उपभोग (consume) करता है और क्या टूलबार, बॉटम नेविगेशन, अंतिम सूची आइटम, इनपुट और डायलॉग अस्पष्ट या छिपे हुए हैं। Compose के लिए एक इनसेट नियम स्थापित करें और लेगेसी Views में डुप्लिकेट पैडिंग से बचें। कैमरा, मैप्स और WebView स्क्रीन को उनके अपने सुरक्षित-क्षेत्र (safe-area) नियमों के साथ टेस्ट करें।

3. स्कोप को सीमित करने के लिए कम्पैटिबिलिटी टूल्स का उपयोग करें

Android 16 कम्पैटिबिलिटी टॉगल targetSdkVersion बदले बिना लक्षित व्यवहार को सक्षम कर सकते हैं। उन्हें 4 KB/16 KB पेज, ओरिएंटेशन, थ्री-बटन/जेस्चर नेविगेशन, फोल्डेबल और फ़ॉन्ट स्केलिंग को कवर करने वाले स्वचालित डिवाइस मैट्रिक्स में जोड़ें। परिवर्तन आईडी और स्क्रीनशॉट अंतर (diffs) रिकॉर्ड करें।

4. कैनरी और रोलबैक

केवल-लेआउट कम्पैटिबिलिटी बिल्ड शिप करें, फिर बीटा और 1% प्रोडक्शन ट्रैफ़िक में टारगेट बढ़ाएं। स्टार्टअप क्रैश, ANRs, प्रमुख-पृष्ठ टैप सफलता, बॉटम-ऑक्लूज़न शिकायतों और SDK त्रुटियों की निगरानी करें। टारगेट माइग्रेशन को अलग रखें; आवश्यकता पड़ने पर पिछले बिल्ड पर रोलबैक करें या प्रभावित एंट्री को अक्षम करें।

उच्च-गुणवत्ता वाला नमूना उत्तर

मैं Android 16 एमुलेटर और वास्तविक डिवाइस पर वर्तमान प्रोडक्शन बिल्ड को इंस्टॉल करके, हर फ्लो को चलाकर और किनारे के क्षेत्रों को कैप्चर करके एक कम्पैटिबिलिटी बेसलाइन स्थापित करूँगा। फिर मैं केवल edge-to-edge व्यवहार को कम्पैटिबिलिटी टॉगल के माध्यम से सक्षम करूँगा ताकि यह पहचाना जा सके कि समस्या रूट लेआउट, SDK या टारगेट परिवर्तनों के कारण है या नहीं। मैं एक इनसेट-हैंडलिंग लेयर बनाऊँगा, स्पष्ट रूप से टॉप, बॉटम और IME उपभोग असाइन करूँगा, और View/Compose डबल पैडिंग को रोकूँगा; कैमरा, मैप, WebView और डायलॉग्स को अलग सुरक्षित-क्षेत्र परीक्षण मिलेंगे। टारगेट बदले बिना कम्पैटिबिलिटी फिक्स शिप करें। स्क्रीनशॉट, एक्सेसिबिलिटी, ओरिएंटेशन, फोल्डेबल और IME टेस्ट पास होने के बाद, टारगेट को एक अलग बदलाव के रूप में बढ़ाएं: पहले बीटा, फिर 1% कैनरी। क्रैश, ANRs, मुख्य रूपांतरण और ऑक्लूज़न फीडबैक को ट्रैक करें; रीग्रेशन होने पर रोलबैक करें या नई एंट्री को डिसेबल करें। यह स्पष्ट एट्रिब्यूशन और रोलबैक को सुरक्षित रखते हुए प्लेटफ़ॉर्म परिवर्तन को पूरा करता है।

सामान्य गलतियाँ

  • targetSdkVersion को तुरंत बढ़ा देना और रीग्रेशन एट्रिब्यूशन खो देना।
  • नेविगेशन, IME, फोल्डेबल, सूची के अंत और डायलॉग्स को छोड़ते हुए केवल स्टेटस बार को ठीक करना।
  • कई लेयर्स में इनसेट्स का उपभोग करना और डबल पैडिंग बनाना।
  • केवल एमुलेटर पर परीक्षण करना और SDKs, वास्तविक डिवाइस और फ़ॉन्ट स्केलिंग को छोड़ देना।
  • Edge-to-edge माइग्रेशन को एक बड़े फीचर के साथ बंडल करना और स्वतंत्र रोलबैक का विकल्प खो देना।

फॉलो-अप प्रश्न और उत्तर

"क्या targetSdkVersion को तुरंत 16 करना आवश्यक है?"

नहीं। Android 16 पर वर्तमान टारगेट का परीक्षण करें और पहले कम्पैटिबिलिटी को ठीक करें। Play की आवश्यकताओं और उत्पाद के समय के अनुसार टारगेट को अलग से अपग्रेड करें।

"आप थर्ड-पार्टी SDKs को कैसे संभालते हैं?"

उनकी सूची बनाएं और कम्पैटिबिलिटी टॉगल के साथ वास्तविक डिवाइस पर परीक्षण करें। उन संस्करणों को प्राथमिकता दें जो edge-to-edge समर्थन को दस्तावेजित करते हैं; अन्यथा एक सेफ-एरिया रैपर जोड़ें या प्रभावित स्क्रीन को अलग करें।

"आप कैसे साबित करते हैं कि पुराने Android संस्करण अभी भी काम करते हैं?"

न्यूनतम समर्थित संस्करण, Android 15 और Android 16 पर विभिन्न ओरिएंटेशन, नेविगेशन मोड और फ़ॉन्ट स्केल में समान स्क्रीनशॉट और क्रिटिकल-फ्लो मैट्रिक्स चलाएं। केवल स्टार्टअप सफलता की नहीं, बल्कि टैप करने योग्य क्षेत्रों और ऑक्लूज़न की तुलना करें।

सार्वजनिक स्रोत

संबंधित प्रश्न