एओएसपी में प्रतिबद्धताओं के एक सेट के अनुसार, Google एंड्रॉइड पी में अनिर्दिष्ट, या छिपे हुए एपीआई तक पहुंच को प्रतिबंधित करना शुरू कर सकता है। कई नाम-ब्रांड ऐप्स कार्यक्षमता बढ़ाने के लिए छिपे हुए एपीआई का उपयोग करते हैं, इसलिए प्रभाव व्यापक हो सकता है।
अद्यतन 2/28/18: Google ने परिवर्तनों की पुष्टि करते हुए आज एक ब्लॉग पोस्ट प्रकाशित किया है। लेख के अंत में अधिक विवरण।
जबकि कुछ एंड्रॉइड उत्साही हैं अटकलें एंड्रॉइड के अगले संस्करण का नाम किस मिठाई के नाम पर रखा जाएगा, इस पर पर्दे के पीछे कुछ दिलचस्प घटनाक्रम चल रहे हैं। हमने एक देखा है कुछ ध्यान देने योग्य Android P में आगामी सुविधाएँ, लेकिन Android ओपन सोर्स प्रोजेक्ट (AOSP) में एक हालिया खोज कहीं अधिक दिलचस्प साबित हुई है। इन हालिया प्रतिबद्धताओं के अनुसार, एप्लिकेशन को उन एपीआई तक पहुंचने से प्रतिबंधित किया जा सकता है जो एंड्रॉइड एसडीके में अनिर्दिष्ट हैं (जैसे कि javadoc की विशेषता @hide द्वारा चिह्नित एपीआई)।
यह क्यों मायने रखता है?
एंड्रॉइड सॉफ्टवेयर डेवलपमेंट किट (एसडीके) डेवलपर्स को एपीआई लाइब्रेरी और टूल प्रदान करता है जिनकी उन्हें नए एंड्रॉइड एप्लिकेशन का परीक्षण और निर्माण करने के लिए आवश्यकता होती है। एंड्रॉइड की प्रत्येक नई रिलीज़ के साथ नए एपीआई की एक पूरी श्रृंखला आती है जो एंड्रॉइड एसडीके के माध्यम से डेवलपर्स के लिए उपलब्ध होती है। किसी ऐप के लिए कौन से एपीआई उपलब्ध हैं यह इस बात पर निर्भर करता है कि डेवलपर कौन सा कंपाइलएसडीकेवर्जन सेट करता है। इसीलिए Google का
नई प्ले स्टोर आवश्यकताएँ बहुत महत्वपूर्ण हैं—यह एप्लिकेशन को अपडेट करने और नए एपीआई का उपयोग करने के लिए माइग्रेट करने के लिए बाध्य करेगा।Google होस्ट करता है दस्तावेज़ीकरण पृष्ठ प्रत्येक वर्ग और उसकी सभी विधियों के लिए जो प्रत्येक एपीआई स्तर में उपलब्ध हैं। ये दस्तावेज़ित एपीआई का सेट हैं जो आधिकारिक एंड्रॉइड एसडीके में उपलब्ध हैं। आप एंड्रॉइड ऐप का उपयोग करके आसानी से कक्षाओं की सूची ब्राउज़ कर सकते हैं जैसे कि एंड्रॉइड इंजीनियर द्वारा हाल ही में जारी एंड्रॉइड एसडीके सर्च ऐप जेक व्हार्टन.
कीमत: मुफ़्त.
4.1.
हालाँकि, प्रत्येक एंड्रॉइड रिलीज़ में उपलब्ध सभी एपीआई Google द्वारा प्रलेखित नहीं हैं, या आधिकारिक एंड्रॉइड एसडीके में उपलब्ध नहीं हैं। अक्सर उपयोगी एपीआई होते हैं गैर-दस्तावेजी, लेकिन फिर भी बहुत उपयोगी हैं। यह अनुशंसा नहीं की जाती है कि डेवलपर्स अपने ऐप्स को गैर-दस्तावेजी, या छिपे हुए, एपीआई का उपयोग करके बनाएं, लेकिन कई लोग ऐसा करते हैं क्योंकि अगर वे एक निश्चित सुविधा प्रदान करना चाहते हैं तो कोई विकल्प नहीं है। जो डेवलपर्स छुपे हुए या गैर-दस्तावेजी एपीआई का उपयोग करते हैं, वे खुद को प्रतिस्पर्धात्मक लाभ में भी डाल सकते हैं, चूँकि वे ऐसी सुविधाएँ प्रदान कर सकते हैं जो उनके प्रतिस्पर्धियों - जो एंड्रॉइड द्वारा प्रस्तावित एपीआई से चिपके रहते हैं एसडीके-नहीं कर सकता.
हालाँकि मैं उन ऐप्स की सूची प्रदान नहीं कर सकता जो अनिर्दिष्ट एपीआई का उपयोग करते हैं (डेवलपर्स शायद साझा नहीं करते हैं)। वे किनका उपयोग करते हैं क्योंकि इससे उनके प्रतिस्पर्धियों को बढ़त मिलेगी), सूची संभवतः इसी प्रकार है बड़ा। इस प्रकार, मैं यह निष्कर्ष निकालूंगा कि छिपे हुए एपीआई तक पहुंच पर प्रतिबंध लगाना महत्वपूर्ण होगा। मार्क मर्फी, के संस्थापक कॉमन्सवेयर, इससे सहमत:
मैं इस आकलन से सहमत हूं कि यदि ऐसा होता है, तो @hid-एनोटेटेड आइटम तक पहुंच पर थोक प्रतिबंध लगाना एक बड़ी बात होगी। उम्मीद है, कुछ ऐप्स मुख्य कार्यक्षमता के हिस्से के रूप में इन वस्तुओं तक पहुंच प्राप्त करेंगे। हालाँकि, मुझे संदेह है कि कई नाम-ब्रांड ऐप्स कभी-कभी, सीधे या किसी लाइब्रेरी के माध्यम से उनका उपयोग करते हैं।
Android P में क्या हो रहा है?
इन आगामी परिवर्तनों को सबसे पहले XDA के वरिष्ठ मान्यता प्राप्त डेवलपर द्वारा नोट किया गया था रोवो89, के डेवलपर एक्सपोज़ड फ्रेमवर्क. उन्होंने मुझे दो प्रतिबद्धताओं की ओर इशारा किया, एक कौन रहा है विलय होना, जो 'hiddenapi' नामक एक नया बिल्ड टूल पेश करता है। यह टूल DEX फ़ाइल के भीतर सभी क्लास सदस्यों के एक्सेस फ़्लैग को संशोधित करता है उनके हस्ताक्षर इनपुट ग्रेलिस्ट या ब्लैकलिस्ट पर दिखाई देते हैं, और यदि ऐसा है, तो चिह्नित तरीकों को प्रतिबंधित के साथ आंतरिक एपीआई के रूप में माना जाएगा पहुँच। अन्य प्रतिबद्धता बताती है कि एपीआई ब्लैकलिस्ट कैसे काम करती है; यह पहुंच को रोकता है बूट क्लास उपर्युक्त 'hiddenapi' द्वारा चिह्नित विधियाँ और फ़ील्ड जिन्हें डेवलपर्स स्टेटिक लिंकिंग, रिफ्लेक्शन और JNI द्वारा एक्सेस कर सकते हैं।
Rovo89 के अनुसार, Android P में इन दो परिवर्तनों का अंतिम परिणाम निम्नलिखित है:
यदि ये कमिट मर्ज हो जाते हैं, तो इसका मतलब यह होगा कि ऐप्स अब छिपे हुए एपीआई का उपयोग/एक्सेस नहीं कर सकते हैं, यानी कक्षाएं, विधियां और फ़ील्ड जिन्हें एओएसपी में @hide के साथ एनोटेट किया गया है और इसलिए इसका हिस्सा नहीं हैं आधिकारिक एसडीके. यह एक्सपोज़ड मॉड्यूल के लिए कोई समस्या नहीं होगी क्योंकि मैं उन कमिटों को आसानी से वापस कर सकता हूं या मॉड्यूल को भी अनुमति दे सकता हूं इन एपीआई तक पहुंचें। लेकिन ऐसे कई ऐप्स हैं जो छिपे हुए एपीआई का लाभ उठाते हैं, और वे इसमें विफल हो जाएंगे भविष्य।
दरअसल, आगे की प्रतिबद्धताओं से पता चलता है कि Google यही योजना बना रहा है। यह प्रतिबद्ध निम्नलिखित बताता है:
हालाँकि इस विशेष प्रतिबद्धता को विलय नहीं किया गया था क्योंकि इसे 3 छोटी प्रतिबद्धताओं के पक्ष में छोड़ दिया गया था, प्रतिबद्ध संदेश इन परिवर्तनों के उद्देश्य का वर्णन करता है। का एक और सेट करता है दिखाएँ कि Google उन डेवलपर्स को विकल्प सुझाएगा जो गैर-सार्वजनिक एपीआई का उपयोग करना चाहते हैं:
हालाँकि, कुछ छुपे हुए एपीआई का अक्सर कोई विकल्प नहीं होता है। हम XDA में अनुभव के आधार पर इस प्रकार बात कर सकते हैं दुर्भाग्य से यह परिवर्तन कुछ नवीन ऐप्स को ख़त्म कर सकता है, या इसके लिए कुछ बड़े नाम वाले ऐप्स को अपनी संख्या कम करने की आवश्यकता हो सकती है कार्यक्षमता. यह आगामी परिवर्तन हाल ही की भावना के समान प्रतीत होता है सुगम्यता सेवाओं पर नकेल (वह शुक्र है रोके गए जैसा कि Google ने नवीन उपयोगों का मूल्यांकन किया है)। जबकि अधिकांश ऐप जो गैर-दस्तावेजी एपीआई का उपयोग करते हैं, वे सौम्य कारणों से ऐसा करते हैं, वहीं कुछ ऐप ऐसे भी हो सकते हैं जिन्होंने नापाक उद्देश्यों के लिए उनका दुरुपयोग किया है।
इस वजह से, Google उपयोगकर्ताओं को उनका दुरुपयोग करने वाले कुछ लोगों से बचाने के लिए Android P में सभी छिपे हुए API तक पहुंच को बंद कर सकता है। यह कहना कठिन है कि उपयोगकर्ताओं पर इसका कितना प्रभाव पड़ सकता है, लेकिन यदि आप एक डेवलपर हैं किसी छिपे हुए एपीआई का अभिनव उपयोग खोजने के लिए एओएसपी को देखने पर विचार कर रहे हैं, तो आप ऐसा करना चाह सकते हैं पुनर्विचार करना।
अद्यतन: Google पुष्टि करता है
में एक ब्लॉग भेजा आज, 28 फरवरी को प्रकाशित, Google ने इन परिवर्तनों की पुष्टि की है। उपयोगकर्ताओं के लिए क्रैश जोखिम का हवाला देते हुए और बाद में डेवलपर्स को आपातकालीन सुधार लागू करने के लिए मजबूर करना, Google बताता है कि कंपनी धीरे-धीरे डेवलपर्स को गैर-एसडीके तक पहुंचने से हतोत्साहित करने की दिशा में आगे बढ़ रही है इंटरफ़ेस. एंड्रॉइड पी से शुरू होकर, प्रतिबंध एसडीके के जावा भाषा इंटरफेस को कवर करने के लिए विस्तारित होंगे।
कंपनी का कहना है कि "कुछ गैर-एसडीके तरीके और फ़ील्ड प्रतिबंधित होंगे," हालांकि उन्होंने यह नहीं बताया कि कौन से तरीके प्रतिबंधित होंगे। प्रारंभ में प्रतिबंध उन इंटरफेस पर केंद्रित होगा जिनका उपयोग शायद ही कभी किया जाता है, और कुछ समय के लिए कंपनी इसकी अनुमति देगी डेवलपर्स को गैर-एसडीके विधियों और क्षेत्रों का उपयोग जारी रखना होगा जहां एसडीके विधि में परिवर्तन तकनीकी रूप से होता है चुनौतीपूर्ण। हालाँकि, अंततः प्रतिबंध व्यापक हो जाएंगे, इसलिए गैर-एसडीके तरीकों का उपयोग करने वाले ऐप्स के डेवलपर्स को एंड्रॉइड पी की तैयारी में जल्द से जल्द बदलाव करना चाहिए। जहां तक एसडीके विकल्प के बिना तरीकों का सवाल है, Google डेवलपर्स से उन पर पोस्ट करने का अनुरोध कर रहा है बग ट्रैकर अधिक जानकारी के साथ.
अगला डेवलपर पूर्वावलोकन, संभवतः जल्द ही आने वाला है, डेवलपर्स को अंतिम रिलीज से पहले ब्लैकलिस्ट या ग्रेलिस्ट के खिलाफ मौजूदा ऐप्स का परीक्षण करने की अनुमति देगा।