Android प्लैटफ़ॉर्म, ऐप्लिकेशन सैंडबॉक्सिंग की मदद से, प्रोसेस की सीमाओं के साथ-साथ, ऐप्लिकेशन कोड को बेहतर तरीके से लागू करने और उसकी सुरक्षा से जुड़ी सीमाएं तय की गई हैं. ऐप्लिकेशन में तीसरे पक्ष का कोड शामिल करना आम बात है. अक्सर ऐसा होता है कि जैसे, विज्ञापन दिखाने के लिए इस्तेमाल किए जाने वाले SDK टूल या Analytics SDK टूल. इससे ऐप्लिकेशन चालू हो जाता है डेवलपर को अपने ऐप्लिकेशन की अलग-अलग खूबियों पर ध्यान देने के साथ-साथ, जिन विषयों पर काम करने वाले विशेषज्ञों को कई कामों के लिए इस्तेमाल किया जा सकता है उन्हें ज़रूरत के हिसाब से ढाला जा सकता है अपना डेटा शेयर कर सकते हैं.
ज़्यादातर ऑपरेटिंग सिस्टम की तरह, Android SDK में भी होस्ट ऐप्लिकेशन के सैंडबॉक्स उपलब्ध कराता है और अपने होस्ट ऐप्लिकेशन के वे समान अधिकार और अनुमतियां हासिल करता है जो साथ ही, होस्ट ऐप्लिकेशन की मेमोरी और स्टोरेज का ऐक्सेस भी मिलता है. हालांकि, इस आर्किटेक्चर SDK टूल और ऐप्लिकेशन को सुविधाजनक तौर पर इंटिग्रेट करना. इससे यह भी मुमकिन है कि उपयोगकर्ता का बिना जानकारी वाला डेटा इकट्ठा और शेयर करना. इतना ही नहीं, ऐप्लिकेशन डेवलपर शायद आपको तीसरे पक्ष के SDK टूल के काम करने के तरीके और इसके डेटा की इसे ऐक्सेस किया जा सकता है. इस वजह से, डेटा इकट्ठा करने और शेयर करने के तरीके बताए गए हैं.
हमने Android 13 में, प्लैटफ़ॉर्म के लिए एक नई सुविधा जोड़ी है. इससे तीसरे पक्ष को SDK टूल को एक खास रनटाइम एनवायरमेंट में चलाया जाता है. इसे SDK टूल का रनटाइम कहा जाता है. कॉन्टेंट बनाने SDK टूल के रनटाइम की मदद से, सुरक्षा के ये बेहतर उपाय और भरोसे की जानकारी मिलती है उपयोगकर्ता का डेटा इकट्ठा और शेयर करना:
- एक्ज़ीक्यूशन एनवायरमेंट में बदलाव
- SDK टूल के लिए बेहतर अनुमतियां और डेटा ऐक्सेस करने के अधिकार
हम सक्रिय रूप से इस पर मोबाइल ऐप्लिकेशन विज्ञापन समुदाय से फ़ीडबैक मांग रहे हैं यह डिज़ाइन. हम बड़े डेवलपर समुदाय से भी मिलने वाले सुझावों का स्वागत करते हैं, ताकि यह SDK टूल के रनटाइम को बेहतर बनाने में मदद करता है. साथ ही, इस्तेमाल के कुछ अन्य उदाहरण भी हैं.
लक्ष्य
इस प्रस्ताव में इन लक्ष्यों को हासिल करने की कोशिश की गई है:
- तीसरे पक्ष से, उपयोगकर्ता के ऐप्लिकेशन का डेटा शेयर किए जाने और बिना जानकारी वाले ऐक्सेस को कम करें SDK टूल इस्तेमाल कर सकते हैं. अलग सेक्शन में प्रोसेस आइसोलेशन के बारे में ज़्यादा जानें इस दस्तावेज़ की.
- तीसरे पक्ष के SDK टूल की मदद से, उपयोगकर्ता के ऐप्लिकेशन के इस्तेमाल की ट्रैकिंग को कम करें. इसके लिए ताकि SDK टूल से यूनीक और स्थायी आइडेंटिफ़ायर को ऐक्सेस न किया जा सके.
- SDK टूल के अपडेट को ज़्यादा तेज़ी से उपलब्ध कराने के लिए, पर ज़्यादा बोझ नहीं पड़ता है. सुझाए गए कॉन्टेंट के बारे में ज़्यादा जानें दूसरे सेक्शन में भरोसेमंद SDK टूल डिस्ट्रिब्यूशन मॉडल इस दस्तावेज़ की.
- डेटा को ऐक्सेस करने और उसे शेयर करने के तरीकों को बेहतर तरीके से समझने में ऐप्लिकेशन डेवलपर की मदद करना उसके ऐप्लिकेशन के बारे में बात करते हैं.
- इन शर्तों को पूरा करके, SDK टूल के डेवलपर को अन्य SDK टूल से छेड़छाड़ करने से रोकें कुछ असुरक्षित लैंग्वेज कंस्ट्रक्शन, जैसे कि JNI कोड.
- विज्ञापन दिखाने के लिए इस्तेमाल किए जाने वाले SDK टूल की मदद से, अमान्य ट्रैफ़िक और विज्ञापन से जुड़ी धोखाधड़ी का पता लगाकर, उन्हें रोका जा सकता है मीडिया को दिखाने वाले रिमोट व्यू पर कंट्रोल कर सकता है.
- ऐप्लिकेशन और SDK टूल के डेवलपर पर पड़ने वाले ग़ैर-ज़रूरी असर को जितना हो सके उतना कम करें.
SDK टूल अलग प्रोसेस में काम करते हैं
सुझाए गए SDK टूल के रनटाइम की मदद से, SDK टूल के साथ काम करने वाले SDK टूल चालू किए जा सकते हैं. इस दस्तावेज़ के बाकी हिस्से को रनटाइम के साथ काम करने वाले (RE) SDK टूल के तौर पर इस्तेमाल किया जाएगा. अलग प्रक्रिया का पालन करें. यह प्लैटफ़ॉर्म, दोनों तरफ़ ले जाने की सुविधा देता है ऐप्लिकेशन की प्रोसेस और इसके SDK टूल के रनटाइम के बीच का कम्यूनिकेशन. ज़्यादा जानकारी के लिए, संचार सेक्शन में देखें. गैर-आरई SDK टूल यह कर पाते ऐप्लिकेशन की प्रक्रिया में वैसे ही बने रहेंगे जैसे वे आज कर रहे हैं. नीचे दिए गए डायग्राम में दिखाए गए हैं ये बदलाव:
SDK टूल के लिए नया भरोसेमंद डिस्ट्रिब्यूशन मॉडल
SDK टूल को ऐप्लिकेशन से अलग करने का यह प्रस्ताव, अलग-अलग कॉन्सेप्ट को बढ़ावा देता है. पहला, SDK टूल और ऐप्लिकेशन डिस्ट्रिब्यूशन के लिए. हमारे प्रस्ताव के लिए भरोसेमंद डिस्ट्रिब्यूशन की ज़रूरत है इंस्टॉल करने के तरीके के बारे में बताया है. इससे यह पक्का किया जा सकेगा कि ऐप्लिकेशन के SDK टूल का रनटाइम. इससे उपयोगकर्ताओं और ऐप्लिकेशन डेवलपर को अमान्य ट्रैफ़िक से बचाने में मदद मिलती है SDK टूल लोड हो रहे हैं. इससे ऐप स्टोर के काम करने के बोझ को कम करने में मदद मिलती है ऐप्लिकेशन डेवलपर के SDK टूल डिस्ट्रिब्यूशन का प्रतिशत.
SDK टूल को अब स्टैटिक तरीके से लिंक करके, अपने ऐप्लिकेशन को ऐप स्टोर पर अपलोड करने से पहले. नीचे दिए गए इसके बजाय यह प्रोसेस होगी:
- SDK टूल के डेवलपर, अपने वर्शन वाले SDK टूल को ऐप स्टोर पर अपलोड कर सकते हैं. इसके लिए, ऐप्लिकेशन से डाउनलोड किया जा सकता है.
- ऐप्लिकेशन डेवलपर इसके हिसाब से अपने SDK टूल डिपेंडेंसी तय कर सकते हैं SDK टूल का इस्तेमाल किए बिना ऐप्लिकेशन का वर्शन, बिल्ड, और अपलोड करें निर्भरता.
- जब कोई उपयोगकर्ता इस ऐप्लिकेशन को डाउनलोड करता है, तो इंस्टॉल करने की प्रोसेस में ऐप्लिकेशन के हिसाब से तय SDK टूल डिपेंडेंसी का इस्तेमाल करके, उन्हें ऐप स्टोर से डाउनलोड किया जा सकता है.
इस नए डिस्ट्रिब्यूशन सिस्टम की मदद से, SDK टूल डेवलपर अपने-आप जनरेट होने वाले किसी भी बदलाव SDK टूल इस्तेमाल करना और ऐप्लिकेशन डेवलपर की अनुमति के बिना, डिवाइसों पर उपलब्ध कराना. SDK टूल में किए गए इन बदलावों को बिना किसी रुकावट के डिप्लॉय या रोल बैक किया जा सकता है इसलिए, उन्हें ऐप्लिकेशन डेवलपर के लिए तब तक इंतज़ार करना होगा जब वे अपने ऐप्लिकेशन को या असली उपयोगकर्ताओं के ऐप्लिकेशन अपडेट होने का इंतज़ार करना. नुकसान पहुंचाने वाले बदलावों को अभी भी ऐप्लिकेशन डेवलपर से अपडेट करने की ज़रूरत है, लेकिन SDK डेवलपर नवीनतम बदलाव और सुधार ज़्यादा तेज़ी से और समान रूप से हो जाते हैं ज़्यादा लोगों तक पहुंचना, आम तौर पर वर्शन समर्थन कम करना पड़ता है.
यहां दिए गए डायग्राम में, SDK टूल के डिस्ट्रिब्यूशन में सुझाए गए बदलाव दिखाए गए हैं:
SDK टूल और ऐप्लिकेशन बनाने, चलाने, और डिस्ट्रिब्यूट करने के तरीके में बदलाव
यह, आसान SDK टूल के रनटाइम और डिस्ट्रिब्यूशन के लिए शुरुआती सुझाव है टेक्नोलॉजी. नीचे दिए सेक्शन में, पूरे समाचार संगठनों के लिए ये ज़्यादा बड़ी कैटगरी हैं:
- ऐक्सेस: अनुमतियां, मेमोरी, स्टोरेज
- लागू करना: भाषाएं, रनटाइम में होने वाले बदलाव, लाइफ़साइकल, मीडिया रेंडरिंग
- कम्यूनिकेशन: ऐप्लिकेशन-टू-एसडी और एसडीके-टू-एसडी
- डेवलपमेंट: ऐप्लिकेशन बनाने, डीबग करने, और टेस्ट करने का तरीका यह मॉडल
- डिस्ट्रिब्यूशन: डिस्ट्रिब्यूशन, अपडेट, Android, ऐप्लिकेशन, और SDK टूल के अलग-अलग वर्शन
इस दस्तावेज़ में, अक्सर पूछे जाने वाले सवाल भी शामिल हैं.
यह एक शुरुआती डिज़ाइन प्रस्ताव है और हम समझते हैं कि कुछ सदस्यों के लिए उपलब्ध नहीं है. इसलिए, हम लगातार इन सुझावों को अनुरोध किया है और पूछा है कि समस्या ट्रैकर देखें.
ऐक्सेस
किसी सिस्टम की निजता को मैनेज करने का मतलब है कि अलग-अलग पक्ष उसे ऐक्सेस करें. हमारा सुझाव है कि निजता से जुड़ी खास सुविधाओं को पूरा करने के लिए ऐप्लिकेशन, SDK टूल, और उपयोगकर्ता के डेटा को ऐक्सेस करने के लिए मॉडल को अपडेट करना होगा. संभावित उपयोगकर्ताओं के ऐक्सेस को रोकने के लिए, कम से कम अधिकारों का सिद्धांत संवेदनशील जानकारी को सुरक्षित रखें.
SDK टूल की अनुमतियां
एक अलग प्रोसेस के तौर पर, SDK टूल के रनटाइम का अपना अलग सेट होता है उन अनुमतियों को इनहेरिट करने के बजाय जिन्हें उपयोगकर्ता ने ऐप्लिकेशन दिया है. इस पर आधारित विज्ञापन से जुड़े SDK टूल में इस्तेमाल की जाने वाली अनुमतियों पर एक शुरुआती रिसर्च के बाद, यह बताना कि SDK टूल से इन अनुमतियों को ऐक्सेस किया जा सकेगा डिफ़ॉल्ट रूप से रनटाइम:
INTERNET
: किसी वेब सेवा से संपर्क करने के लिए इंटरनेट का ऐक्सेस.ACCESS_NETWORK_STATE
: नेटवर्क के बारे में जानकारी ऐक्सेस करें.READ_BASIC_PHONE_STATE
: फ़ोन की स्थिति के बारे में जानकारी ऐक्सेस करना, जैसे कि मोबाइल नेटवर्क का टाइप.- निजता बनाए रखने वाले एपीआई को ऐक्सेस करने की अनुमतियां दी जाती हैं, जिनमें मुख्य विज्ञापन दिखाने के लिए, क्रॉस-ऐप्लिकेशन आइडेंटिफ़ायर के ऐक्सेस की ज़रूरत नहीं है.
AD_ID
: विज्ञापन आईडी का अनुरोध करने की सुविधा. इस पर ऐप्लिकेशन का इस अनुमति को ऐक्सेस करें.
फ़िलहाल, हम इस बात का पता लगाने की कोशिश कर रहे हैं कि अन्य सोर्स को अनुमतियां दी हैं, जिससे असली उपयोगकर्ताओं पर निजता और देखें. बुध सुझाव का अनुरोध करें इस्तेमाल के ऐसे किसी भी उदाहरण पर लागू होगा, जो अनुमतियों के इस सेट से पूरी नहीं हो पाता है.
मेमोरी
SDK टूल के रनटाइम में, अलग मेमोरी स्पेस होता है मदद मिल सकती है. डिफ़ॉल्ट रूप से यह संरचना ऐप्लिकेशन के मेमोरी स्पेस का SDK टूल का ऐक्सेस. साथ ही, ऐप्लिकेशन इस तरह से काम नहीं करेगा SDK टूल के मेमोरी स्पेस को ऐक्सेस कर सकता है. हमारा सुझाव है कि आप इसे डिफ़ॉल्ट सेटिंग बनाए रखें कम से कम अधिकारों के सिद्धांत के मुताबिक काम करने की ज़रूरत है.
स्टोरेज
इस प्रस्ताव का मकसद यह है कि SDK टूल को, इसका इस्तेमाल करके क्रॉस-ऐप्लिकेशन और पूरी प्रोसेस की ट्रैकिंग को कम से कम किया जा सकता है. स्थायी स्टोरेज. स्टोरेज बढ़ाने के लिए, हम यहां इस अपडेट के बारे में बता रहे हैं आज ऐक्सेस किया गया:
- कोई ऐप्लिकेशन अपने SDK टूल के स्टोरेज को सीधे ऐक्सेस नहीं कर पाएगा. इसी तरह, कोई ऐप्लिकेशन सीधे तौर पर SDK टूल के स्टोरेज को ऐक्सेस नहीं कर पाएगा.
- डिवाइस के बाहरी स्टोरेज को SDK टूल ऐक्सेस नहीं कर पाएंगे.
- SDK टूल के हर रनटाइम में, सभी SDK टूल के लिए दोनों स्टोरेज को ऐक्सेस किया जा सकेगा, और स्टोरेज, जो किसी SDK टूल के लिए निजी हो.
मौजूदा स्टोरेज मॉडल की तरह, स्टोरेज में कोई भी सीमा तय नहीं होगी आकार में. SDK टूल, ऐसेट को कैश मेमोरी में सेव करने के लिए स्टोरेज का इस्तेमाल कर सकते हैं. यह मेमोरी समय-समय पर होती है जब SDK टूल चालू नहीं हो रहा हो, तब मिटा दिया जाता है.
प्लान लागू करना
यह पक्का करने के लिए कि ऐप्लिकेशन, SDK टूल, और उपयोगकर्ताओं के बीच एक निजी सिस्टम बना रहे, खुद (कोड फ़ॉर्मैट, लैंग्वेज कंस्ट्रक्शन, ऐक्सेस किए जा सकने वाले एपीआई, और सिस्टम डेटा) को निजता की इन सीमाओं को लागू करना होगा या उन्हें अपने कॉन्टेंट को लोगों के हिसाब से उन्हें गच्चा देने के मौके भी मिलते हैं. साथ ही, हम डेटा का ऐक्सेस बनाए रखना चाहते हैं और रनटाइम की ज़्यादातर सुविधाओं का इस्तेमाल करता है, जिन्हें SDK मौजूद हैं. यहां हम रनटाइम एनवायरमेंट में कुछ अपडेट का सुझाव देते हैं, ताकि इस संतुलन को बनाए रखें.
कोड
Android कोड (ऐप्लिकेशन और SDK टूल) की व्याख्या मुख्य रूप से, Android रनटाइम (ART), चाहे कोड Kotlin में लिखा गया हो या Java में. ART की समृद्धि और उसे ऑफ़र की जाने वाली भाषा के साथ-साथ, उसकी पुष्टि करने की सुविधा भी मिलती है जब विकल्प के साथ तुलना की जाती है—तो खास तौर पर नेटिव कोड में—ठीक तरह से दिखता है बैलेंस की सुविधा और निजता. हमारा सुझाव है कि रनटाइम के साथ काम करने वाला SDK कोड इसमें JNI ऐक्सेस के बजाय, खास तौर पर Dex बाइट कोड शामिल होता है.
हम जानते हैं कि इसके इस्तेमाल के कुछ उदाहरण हैं, जैसे कि पसंद के मुताबिक पैक किए गए प्रॉडक्ट SQLite को, नेटिव कोड का इस्तेमाल करने की वजह से, का इस्तेमाल कर सकते हैं. जैसे, Android SDK के बिल्ट-इन SQLite वर्शन.
SELinux
Android पर, हर प्रोसेस (इसमें रूट के तौर पर चल रही प्रोसेस भी शामिल है) एक खास प्रोसेस के साथ चलती है SELinux संदर्भ, कर्नेल को सिस्टम के लिए ऐक्सेस नियंत्रण को प्रबंधित करने की अनुमति देता है सेवाएं, फ़ाइलें, डिवाइस, और अन्य प्रोसेस शामिल हैं. डिजिटल खतरों से बचने के लिए निजता को गच्चा देने की संभावना को कम करते हुए, SDK टूल का इस्तेमाल ज़्यादातर मामलों में किया जाता है को सुरक्षित रखने की कोशिश कर रहे हैं. इसलिए, हम ये प्रस्ताव दे रहे हैं SDK टूल के रनटाइम के लिए, किसी नॉन-सिस्टम ऐप्लिकेशन के SELinux संदर्भ से अपडेट:
- सिस्टम की कुछ सेवाओं को ऐक्सेस किया जा सकेगा. (ऐक्टिव डिज़ाइन के तहत)
- SDK टूल सिर्फ़ अपने APK में कोड को लोड करके एक्ज़ीक्यूट कर पाएंगे.
- सिस्टम प्रॉपर्टी के सीमित सेट को ऐक्सेस किया जा सकेगा. (ऐक्टिव डिज़ाइन के तहत)
API
SDK टूल के रनटाइम में, रिफ़्लेक्शन और शुरू करने वाले एपीआई के इस्तेमाल की अनुमति है. हालांकि, SDK टूल को किसी अन्य पर रिफ़्लेक्शन का इस्तेमाल करने या एपीआई शुरू करने की अनुमति नहीं होगी रनटाइम के साथ काम करने वाला SDK टूल. हम प्रतिबंधित एपीआई के बारे में, पूरी जानकारी आगे का अपडेट.
इसके अलावा, Android प्लैटफ़ॉर्म के हाल ही में रिलीज़ किए गए वर्शन पर काफ़ी पाबंदियां लगाई गई हैं निजता को बेहतर बनाने के लिए, स्थायी आइडेंटिफ़ायर का ऐक्सेस. SDK टूल के लिए रनटाइम के दौरान, हम उन आइडेंटिफ़ायर के ऐक्सेस को सीमित करने का सुझाव देते हैं जिनका इस्तेमाल किया जा सकता है का इस्तेमाल किया जा सकता है.
SDK टूल के रनटाइम एपीआई को सिर्फ़ फ़ोरग्राउंड में चल रहे ऐप्लिकेशन से ऐक्सेस किया जा सकता है.
ऐप्लिकेशन से SdkSandboxManager
एपीआई को ऐक्सेस करने की कोशिश की जा रही है
बैकग्राउंड में इस्तेमाल करने से नतीजे के तौर पर
SecurityException
थ्रॉ किया जा रहा है.
आखिर में, री-SDK टूल उपयोगकर्ता को सूचनाएं भेजने के लिए, सूचनाओं के एपीआई का इस्तेमाल नहीं कर सकता: किसी भी समय.
जीवनचक्र
फ़िलहाल, ऐप्लिकेशन SDK टूल अपने होस्ट ऐप्लिकेशन की लाइफ़साइकल का पालन करते हैं, जिसका मतलब है कि ऐप्लिकेशन में फ़ोरग्राउंड में जाता है या उसे छोड़ता है, शट डाउन हो जाता है, या ऑपरेटिंग सिस्टम पर स्विच करते हैं, तो ऐप्लिकेशन के SDK टूल भी ऐसा करते हैं. हमारे अलग-अलग प्रक्रियाओं का इस्तेमाल करके ऐप्लिकेशन के SDK टूल लाइफ़साइकल में ये बदलाव हुए हैं:
- उपयोगकर्ता या ऑपरेटिंग सिस्टम, ऐप्लिकेशन को बंद कर सकते हैं. SDK टूल का रनटाइम के तुरंत बाद अपने-आप खत्म हो जाएगा.
मेमोरी की वजह से, ऑपरेटिंग सिस्टम SDK टूल के रनटाइम को बंद कर सकता है उदाहरण के लिए, SDK टूल में प्रेशर या बिना कार्रवाई वाला कोई अपवाद.
Android 13 के लिए, जब कोई ऐप्लिकेशन फ़ोरग्राउंड में होता है, तो SDK टूल का रनटाइम को प्राथमिकता दी जाती है और इसके खत्म होने की संभावना कम होती है. जब ऐप्लिकेशन बैकग्राउंड में, SDK टूल की रनटाइम प्रोसेस की प्राथमिकता कम हो जाती है और यह खाता बंद किया जा सकता है. SDK टूल की रनटाइम प्रोसेस की प्राथमिकता अब भी बनी हुई है ऐप्लिकेशन के फ़ोरग्राउंड में वापस आने पर भी यह कम स्कोर होता है. इस वजह से, यह बेहद हो सकता है कि यह है.
Android 14 और उसके बाद के वर्शन के लिए, ऐप्लिकेशन और SDK टूल की प्रोसेस की प्राथमिकताएं रनटाइम अलाइन किए गए हैं. इनके लिए प्रोसेस की प्राथमिकताएं
ActivityManager.RunningAppProcessInfo.importance
ऐप्लिकेशन के लिए और SDK टूल का रनटाइम करीब-करीब एक जैसा होना चाहिए.अगर ऐप्लिकेशन के लाइव रहने के दौरान SDK टूल का रनटाइम खत्म हो जाता है, तो उदाहरण के लिए, अगर SDK टूल में कोई ऐसा अपवाद है जिसे मैनेज नहीं किया जा सकता, तो इसका मतलब है कि SDK टूल का रनटाइम मौजूदा स्थिति में डेटा मिट जाता है. इसमें पहले से लोड किए गए SDK टूल और रिमोट व्यू भी शामिल हैं. कॉन्टेंट बनाने ऐप्लिकेशन डेवलपर इनमें से किसी भी तरीके का इस्तेमाल करके, SDK टूल के रनटाइम को बंद करने की कार्रवाई कर सकता है नीचे दिए गए तरीके अपनाएं:
- इस प्रस्ताव में ऐप्लिकेशन डेवलपर को लाइफ़साइकल कॉलबैक से जुड़े तरीके ऑफ़र किए गए हैं SDK टूल का रनटाइम बंद होने का पता लगाने के लिए.
- अगर विज्ञापन दिखाए जाने के दौरान SDK टूल का रनटाइम खत्म हो जाता है, तो हो सकता है कि विज्ञापन उम्मीद के मुताबिक काम करते हैं. उदाहरण के लिए, हो सकता है कि स्क्रीन पर व्यू रुके हुए हों और कोई ज़्यादा इंटरैक्टिव. अगर विज्ञापन व्यू पर कोई असर नहीं पड़ता, तो ऐप्लिकेशन उसे हटा सकता है उपयोगकर्ता अनुभव मिलता है.
- ऐप्लिकेशन, SDK टूल को लोड करने और विज्ञापनों के लिए अनुरोध करने की फिर से कोशिश कर सकता है.
- Android 14 के लिए, अगर SDK टूल लोड होने के दौरान SDK टूल का रनटाइम खत्म हो जाता है, और अगर ऐप्लिकेशन डेवलपर ने ऊपर दिए गए लाइफ़साइकल को रजिस्टर नहीं किया है कॉलबैक तरीकों का इस्तेमाल करते हैं, तो ऐप्लिकेशन डिफ़ॉल्ट रूप से बंद हो जाता है. सिर्फ़ ऐप्लिकेशन जिन प्रोसेस में SDK टूल लोड किए गए हैं वे खत्म हो जाती हैं और सामान्य रूप से बंद हो जाती हैं.
- SDK टूल से संपर्क करने के लिए, बाइंडर ऑब्जेक्ट (जैसे कि बाइंडर ऑब्जेक्ट)
SandboxedSdk
)DeadObjectException
का इस्तेमाल करें अगर ऐप्लिकेशन में इसका इस्तेमाल किया गया हो.
इस लाइफ़साइकल मॉडल को आने वाले अपडेट में बदला जा सकता है.
लगातार फ़ेल होने पर, ऐप्लिकेशन डेवलपर को ग्रेसफ़ुल डिग्रेडेशन पाने का तरीका बताएंगे. इसके अलावा, अगर SDK टूल अहम फ़ंक्शन के लिए इस्तेमाल किए जा सकते हैं. इस बारे में ज़्यादा जानकारी पाने के लिए ऐप्लिकेशन-टू-SDK इंटरैक्शन, इसका कम्यूनिकेशन सेक्शन देखें इस दस्तावेज़ को फिर से शुरू करें.
गैर-आरई SDK टूल, उनके लिए उपलब्ध स्टैंडर्ड ओएस प्रिमिटिव का इस्तेमाल जारी रख सकते हैं एम्बेड किया गया ऐप्लिकेशन. इसमें सेवाएं, गतिविधियां, और ब्रॉडकास्ट शामिल हैं. वहीं दूसरी ओर, आरई SDK टूल नहीं कर सकते.
खास मामले
यहां दिए गए मामलों में, पुष्टि नहीं की जा सकती और इन मामलों में ऐसा व्यवहार देखने को मिल सकता है:
- अगर कई ऐप्लिकेशन का यूआईडी एक ही है, तो हो सकता है कि SDK टूल का रनटाइम काम न करे सही तरीके से. आने वाले समय में, शेयर किए गए यूआईडी के लिए सहायता जोड़ी जा सकती है.
- एक से ज़्यादा प्रोसेस वाले ऐप्लिकेशन के लिए, एसडीके टूल को मुख्य पेज पर जाकर लोड किया जाना चाहिए प्रोसेस.
मीडिया रेंडरिंग
ऐसे SDK टूल हैं जो ऐप्लिकेशन में टेक्स्ट, इमेज, और वीडियो जैसा कॉन्टेंट रेंडर करते हैं
ऐप्लिकेशन के हिसाब से बनाया गया व्यू. इसे पूरा करने के लिए हम रिमोट-रेंडरिंग का तरीका बताते हैं
जहां SDK टूल, SDK टूल के रनटाइम में मीडिया को रेंडर करेगा, लेकिन
SurfaceControlViewHost
एपीआई
ताकि मीडिया को ऐप्लिकेशन के खास व्यू में रेंडर किया जा सके. इससे SDK टूल
मीडिया को ऐसे तरीके से रेंडर करने की क्षमता जो उपयोगकर्ता के लिए निजी हो,
साथ ही, अमान्य या धोखाधड़ी करने वाले उपयोगकर्ता इंटरैक्शन को रोकने और उनका पता लगाने में मदद करते हैं
रेंडर करने के लिए इस्तेमाल किया जाता है.
नेटिव विज्ञापन जिन्हें SDK टूल से रेंडर नहीं किया जाता, बल्कि ऐप्लिकेशन से रेंडर किया जाता है SDK टूल के रनटाइम में SDK टूल के साथ काम करती हो. सिग्नल इकट्ठा करना और वीडियो बनाना नॉन-नेटिव विज्ञापनों के मामले में, फ़ेच करने की प्रोसेस लगातार जारी रहेगी. यह है जांच का क्षेत्र सक्रिय है.
इन-स्ट्रीम वीडियो विज्ञापन वे होते हैं जो किसी वीडियो के साथ इन-स्ट्रीम चलते हैं, जिन्हें प्लेयर में दिखाया जाता है के बीच दिखता है. यह ध्यान में रखते हुए कि वीडियो ऐप्लिकेशन में प्लेयर के अंदर चलता है किसी प्लेयर या व्यू की तुलना में, रेंडरिंग मॉडल दूसरे विज्ञापन से अलग होता है फ़ॉर्मैट के बारे में ज़्यादा जानें. हम सर्वर साइड विज्ञापन दोनों के साथ काम करने के लिए लगातार काम कर रहे हैं और SDK टूल पर आधारित विज्ञापन शामिल करना.
सिस्टम की स्थिति
हम असली उपयोगकर्ताओं पर SDK टूल के रनटाइम की वजह से, सिस्टम की परफ़ॉर्मेंस पर पड़ने वाले असर को कम करने की कोशिश कर रहे हैं और ऐसा करने के तरीके डिज़ाइन कर रहे हैं. हालांकि, ज़्यादातर लोगों के लिए ऐसे Android 13 डिवाइस जिनमें सिस्टम के लिए बहुत कम संसाधन मौजूद हैं, जैसे Android (Go वर्शन), सिस्टम की परफ़ॉर्मेंस पर असर होने की वजह से, SDK टूल का रनटाइम काम नहीं करेगा. हम जल्द ही SDK टूल के रनटाइम का इस्तेमाल करने के लिए, कम से कम ज़रूरी शर्तें शेयर करें.
संचार
ऐप्लिकेशन और SDK टूल, फ़िलहाल एक ही प्रोसेस में चलते हैं. इसलिए, दोनों के बीच कम्यूनिकेशन के लिए वे बिना किसी रुकावट के हों. इसके अलावा, Android आपको इंटर-ऐप्लिकेशन बातचीत, भले ही SDK टूल से शुरू और खत्म हो. यह फ़्री-फ़्लोइंग कम्यूनिकेशन मॉडल, एक ही समय में अलग-अलग इस्तेमाल के उदाहरणों को चालू करता है ऐप्लिकेशन और उनके बीच डेटा शेयर करने की संभावना को शुरुआती तौर पर तय करना ऐप्लिकेशन के अंदर या उनके बीच में इस्तेमाल किए जाने वाले SDK टूल के बीच. हम आपके लिए ये अपडेट पेश करने जा रहे हैं: यह कम्यूनिकेशन मॉडल, और हमारे बताए गए लक्ष्यों को पूरा करने में मदद मिलती है.
ऐप्लिकेशन-टू-एसडी
ऐप्लिकेशन और SDK टूल के बीच का इंटरफ़ेस सबसे सामान्य कम्यूनिकेशन पाथ होता है के लिए इस्तेमाल किया जा सकता है. SDK टूल के एपीआई का मतलब है कि ज़्यादातर उपयोगकर्ताओं को और नई चीज़ें सामने आती हैं. हम SDK टूल को सुरक्षित रखने की कोशिश करते हैं कुछ नया करने की क्षमता और अंतर करें. इसलिए, हमारा प्रस्ताव है कि SDK टूल इस्तेमाल करने पर SDK टूल, भी कर सकते हैं और यह पक्का कर सकते हैं कि ऐप्लिकेशन को इस तरह के सभी इनोवेशन से फ़ायदा मिल सके.
SDK टूल के रनटाइम की प्रोसेस बाउंड्री के स्ट्रक्चर को देखते हुए, हमारा सुझाव है कि एक मार्शलिंग लेयर बनाएं, जिसे ऐप्लिकेशन में ही ऐक्सेस किया जा सके. साथ ही, एपीआई कॉल को ऐप्लिकेशन और SDK टूल के बीच की इस सीमा के पार रिस्पॉन्स या कॉलबैक. हम यह बताना कि इस मार्शलिंग लेयर का इंटरफ़ेस, SDK टूल से तय होगा की मदद कर सकते हैं. साथ ही, इसे आधिकारिक ओपन-सोर्स बिल्ड टूल से जनरेट किया है. इन टूल को हम डेवलप करना.
इस प्रस्ताव के साथ हम बॉयलरप्लेट मार्शलिंग के काम को ऐप्लिकेशन से हटाना चाहते हैं साथ ही, वे SDK टूल के डेवलपर के लिए सुविधाएं उपलब्ध कराते हैं. साथ ही, वे निजता से जुड़े हमारे लक्ष्यों को पूरा करने के लिए, SDK टूल के रनटाइम में SDK टूल चलता है. क्या हमें इस पथ को लें, तो API परिभाषा भाषा और टूलिंग जिन्हें आपके इनपुट के साथ डिज़ाइन किया गया है.
सामान्य इंटरैक्शन मॉडल इस तरह का होगा:
- ऐप्लिकेशन, SDK टूल को इंटरफ़ेस के ज़रिए कॉल करता है और कॉलबैक में पास होता है.
- SDK टूल, अनुरोधों को एसिंक्रोनस रूप से पूरा करता है और कॉलबैक का इस्तेमाल करके जवाब देता है.
- इसे पब्लिशर-सदस्यता वाले किसी भी मॉडल के लिए सामान्य बनाया जा सकता है. इसका मतलब है कि ऐप्लिकेशन SDK टूल में, कॉलबैक का इस्तेमाल करके इवेंट की सदस्यता लेने और ये इवेंट होने पर, कॉलबैक ट्रिगर हो जाएंगे.
इस प्रस्ताव की नई क्रॉस-प्रोसेस संरचना का नतीजा यह होता है कि दो प्रोसेस लाइफ़साइकल हैं जिन्हें मैनेज करना होगा: एक ऐप्लिकेशन के लिए और दूसरा, SDK टूल के रनटाइम के लिए इस्तेमाल किया जा सकता है. हमारे प्रस्ताव को इस तरह से ऑटोमेट किया जाना चाहिए कि को ध्यान में रखते हुए, ऐप्लिकेशन और SDK टूल के डेवलपर पर पड़ने वाले असर को कम किया जा सकेगा. कॉन्टेंट बनाने इस डायग्राम में, वह तरीका दिखाया गया है जिस पर हम काम कर रहे हैं:
यह प्लैटफ़ॉर्म, ऐप्लिकेशन के लिए नए एपीआई उपलब्ध कराएगा, ताकि SDK टूल को डाइनैमिक तरीके से लोड किया जा सके SDK टूल की रनटाइम प्रोसेस, स्थिति में हुए बदलावों के बारे में सूचना पाएं, और SDK टूल के रनटाइम में लोड किए गए SDK टूल के साथ इंटरैक्ट करें.
पिछले डायग्राम में दिए गए ग्राफ़ में, ऐप्लिकेशन और SDK टूल के बीच बिना मार्शलिंग लेयर के, निचले लेवल पर.
यह ऐप्लिकेशन, SDK टूल के रनटाइम प्रोसेस में चल रहे SDK टूल से संपर्क करने के लिए, इसके लिए, नीचे दिया गया तरीका अपनाएं:
किसी SDK टूल के साथ इंटरैक्ट करने से पहले, ऐप्लिकेशन यह अनुरोध करेगा कि प्लैटफ़ॉर्म लोड करता है. सिस्टम के रखरखाव को पक्का करने के लिए, ऐप्लिकेशन जिन SDK टूल को मेनिफ़ेस्ट फ़ाइल में लोड करना है और ये SDK टूल को लोड करने की अनुमति होगी.
यह कोड स्निपेट, एपीआई का उदाहरण देता है:
SdkSandboxManager.loadSdk(String sdkName, Bundle data, Executor executor, OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
SDK टूल को लोड होने की सूचना मिलती है और वह अपना इंटरफ़ेस दिखाता है. यह इंटरफ़ेस, ऐप्लिकेशन प्रोसेस के लिए इस्तेमाल किया जाएगा. इंटरफ़ेस शेयर करने के लिए प्रोसेस सीमा के बाहर होने पर, इसे
IBinder
ऑब्जेक्ट के तौर पर दिखाया जाना चाहिए.सीमित सेवाओं वाली गाइड में
IBinder
की सेवाएं देने के अलग-अलग तरीके बताए गए हैं. आप चाहे जो भी तरीका चुनें, वह SDK टूल और कॉलर ऐप है. इस डायग्राम में उदाहरण के तौर पर, एआईडीएल का इस्तेमाल किया गया है.SdkSandboxManager
कोIBinder
इंटरफ़ेस मिलता है और वह इसे वापस कर देता है ऐप खोलें.ऐप्लिकेशन,
IBinder
को इकट्ठा करता है और उसे SDK टूल के इंटरफ़ेस में कास्ट करता है. फ़ंक्शन:IBinder binder = sandboxSdk.getInterface(); ISdkInterface mySdkInterface = ISdkInterface.Stub.asInterface(binder); mySdkInterface.something();
ऐप्लिकेशन इस तरीके का इस्तेमाल करके, SDK टूल से मीडिया रेंडर भी कर सकता है:
जैसा कि इस के मीडिया रेंडरिंग सेक्शन में बताया गया है दस्तावेज़ के तौर पर इस्तेमाल किया जा सकता है. इससे किसी ऐप्लिकेशन को किसी व्यू में मीडिया को रेंडर करने के लिए SDK टूल मिल सकता है.
requestSurfacePackage()
पर कॉल करके, सही जानकारी फ़ेच की जा सकती हैSurfaceControlViewHost.SurfacePackage
.यह कोड स्निपेट, एपीआई का उदाहरण देता है:
SdkSandboxManager.requestSurfacePackage(String sdkName, Bundle extraParams, Executor executor, OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
इसके बाद ऐप्लिकेशन, लौटाए गए
SurfacePackage
कोSurfaceView
में एम्बेड कर सकता हैSurfaceView
मेंsetChildSurfacePackage
एपीआई के ज़रिए.यह कोड स्निपेट, एपीआई का उदाहरण देता है:
SurfaceView.setChildSurfacePackage(SurfacePackage surfacePackage)
हमारा प्रस्ताव है कि IBinder
और requestSurfacePackage()
एपीआई
यह जेनरिक है और इसे सीधे ऐप्लिकेशन से कॉल नहीं किया जाना चाहिए. इसके बजाय, ये एपीआई
को ऊपर बताए गए जनरेट किए गए एपीआई रेफ़रंस के ज़रिए, "शिम" में कॉल किया जाएगा
इसकी मदद से, ऐप्लिकेशन डेवलपर के बोझ को कम किया जा सकता है.
SDK टूल से SDK टूल
एक ही ऐप्लिकेशन में दो SDK टूल को अक्सर एक-दूसरे के साथ काम करने की ज़रूरत होती है. ऐसा तब हो सकता है, जब SDK टूल को मूल SDK टूल से बनाया गया है. ऐसा तब हो सकता है, जब दो डेवलपर के अनुरोध को पूरा करने के लिए, अलग-अलग पक्षों के SDK टूल को साथ मिलकर काम करना होगा कॉलिंग ऐप्लिकेशन.
यहां दो मुख्य बातों का ध्यान रखें:
- जब दोनों SDK टूल रनटाइम के साथ काम करते हों. इस मामले में, दोनों SDK टूल
साथ ही, SDK टूल का रनटाइम भी इस्तेमाल कर सकते हैं. SDK टूल, इस तरह से संपर्क नहीं कर सकते
किस तरह काम करते हैं. इस वजह से, एक एपीआई
फ़ेच करने की सुविधा चालू करने के लिए,
SdkSandboxController
को जोड़ दिया गया है लोड किए गए सभी RE-SDK टूल के लिएSandboxedSdk
ऑब्जेक्ट. इससे री-एसडीके को ये काम करने में मदद मिलती है SDK टूल के रनटाइम में लोड किए गए अन्य SDK टूल के साथ कम्यूनिकेट करने के लिए. - जब सिर्फ़ एक SDK टूल के लिए रनटाइम चालू हो.
- अगर ऐप्लिकेशन में, कॉल के लिए इस्तेमाल किया जाने वाला SDK टूल चल रहा है, तो यह काम करने के तरीके से अलग है ऐप्लिकेशन, SDK टूल के रनटाइम में दूसरे SDK टूल के लिए इस्तेमाल किया जा रहा हो.
- अगर कॉलिंग SDK टूल SDK टूल के रनटाइम में चल रहा है, तो यह प्रपोज़ल
ऐप्लिकेशन-टू-SDK टूल में बताए गए
IBinder
का इस्तेमाल करके, किसी तरीके को सार्वजनिक करने का सुझाव देता है सेक्शन में मौजूद कोड, आपके सवाल को सुनता है, प्रोसेस करता है, और दिए गए कॉलबैक. - जो विज्ञापन SDK टूल रनटाइम के साथ चालू नहीं हैं वे खुद को रजिस्टर नहीं कर सकते, हम एक मीडिएटर SDK टूल बनाने का सुझाव देते हैं, जिसमें कोई भी पार्टनर या ऐप्लिकेशन शामिल हो SDK टूल, ऐप्लिकेशन के लिए डायरेक्ट डिपेंडेंसी के तौर पर काम करते हैं और रजिस्ट्रेशन को मैनेज करते हैं. यह मीडिएटर SDK टूल, रनटाइम के साथ काम न करने वाले डिवाइसों के बीच कम्यूनिकेशन करता है SDK टूल या अन्य ऐप्लिकेशन डिपेंडेंसी और रनटाइम के दौरान काम करने वाला मीडिएटर, जो अडैप्टर.
SDK टूल और SDK टूल के बारे में जानकारी देने के लिए, सुविधाओं के सेट को इन टाइप में बांटा गया है श्रेणियां:
- SDK टूल के रनटाइम में SDK टूल और SDK टूल के बीच कम्यूनिकेशन (यह जानकारी नए वर्शन में उपलब्ध है) डेवलपर के लिए झलक)
- ऐप्लिकेशन और SDK टूल के रनटाइम के बीच, SDK टूल और SDK टूल के बीच कम्यूनिकेशन. यह डेवलपर की नई झलक)
- व्यू और रिमोट रेंडरिंग को मीडिएशन के लिए कैसे काम करना चाहिए (इसका प्रस्ताव डेवलपमेंट)
इस्तेमाल के इन उदाहरणों पर विचार किया जा रहा है, क्योंकि प्रिमिटिव को डिज़ाइन किया गया:
- मीडिएशन और बिडिंग. कई विज्ञापन SDK टूल, मीडिएशन या बिडिंग की सुविधा देते हैं इस सुविधा की मदद से, SDK टूल किसी विज्ञापन इंप्रेशन के लिए कई अन्य SDK टूल को कॉल करता है (मीडिएशन) या नीलामी (बिडिंग) चलाने के लिए सिग्नल इकट्ठा करने के लिए. आम तौर पर इंटिग्रेट करने के लिए, SDK टूल अन्य SDK टूल को सिंक करने के लिए टूल. ऊपर बताए गए प्रिमिटिव को देखते हुए, कोऑर्डिनेट करने वाले SDK टूल, RE या नहीं होना चाहिए, उसके पास सामान्य इस्तेमाल के लिए सभी आरई और नॉन-आरई SDK टूल का ऐक्सेस नहीं होना चाहिए. इस संदर्भ को रेंडर करना, जांच का एक सक्रिय क्षेत्र है.
- सुविधा का पता लगाना. SDK टूल वाले कुछ प्रॉडक्ट में छोटे SDK टूल शामिल होते हैं. इंटर-SDK टूल खोजने की प्रोसेस के ज़रिए, किसी सुविधा का बेहतरीन सेट तय करें जो ऐप्लिकेशन डेवलपर को बिना अनुमति के सार्वजनिक किए जाते हैं. रजिस्ट्रेशन और डिस्कवरी प्रिमिटिव उम्मीद है कि यह इस्तेमाल के इस उदाहरण को चालू कर देगा.
- पब्लिशर की सदस्यता के मॉडल. कुछ SDK टूल को इस तरह डिज़ाइन किया जाता है कि ऐसे इवेंट के पब्लिशर जिनकी अन्य SDK टूल या ऐप्लिकेशन सदस्यता ले सकते हैं कॉलबैक के ज़रिए भेजी जाती है. ऊपर दिए गए प्रिमिटिव को इस इस्तेमाल में मदद करनी चाहिए केस.
ऐप्लिकेशन-टू-ऐप्लिकेशन
ऐप्लिकेशन-टू-ऐप्लिकेशन कम्यूनिकेशन वह है जिसमें कम से कम दो में से कोई एक प्रोसेस मौजूद हो बातचीत करने की सुविधा, रनटाइम के साथ काम करने वाला SDK टूल है. साथ ही, यह डेटा शेयर करने की जानकारी ज़ाहिर नहीं की गई है. इस वजह से, SDK टूल का रनटाइम, क्लाइंट ऐप्लिकेशन के अलावा, किसी भी अन्य ऐप्लिकेशन से सीधे तौर पर बातचीत करने का चैनल या में SDK टूल इस्तेमाल किए जा रहे हों और जिन्हें किसी दूसरे ऐप्लिकेशन के लिए बनाया गया हो. यह है इन तरीकों से हासिल की जाती हैं:
- SDK टूल,
<service>
,<contentprovider>
या<activity>
के मेनिफ़ेस्ट में किया गया है. - SDK टूल,
ContentProvider
को पब्लिश नहीं कर सकता या ब्रॉडकास्ट नहीं कर सकता. - SDK टूल, किसी अन्य ऐप्लिकेशन से जुड़ी गतिविधि लॉन्च कर सकता है. हालांकि, उस पर ये सीमाएं लागू होती हैं इंटेंट में क्या भेजा जा सकता है. उदाहरण के लिए, कोई भी अतिरिक्त या कस्टम ऐक्शन को इस इंटेंट में जोड़ा जाएगा.
- SDK टूल, अनुमति वाली सेवाओं की सूची में शामिल हो सकता है या उससे बाइंड कर सकता है.
- SDK टूल सिर्फ़
ContentProvider
सिस्टम के सबसेट को ऐक्सेस कर सकता है (जैसे किcom.android.providers.settings.SettingsProvider
), जहां यह मिला डेटा में आइडेंटिफ़ायर नहीं हैं और इसका इस्तेमाल उपयोगकर्ता का फ़िंगरप्रिंट बनाने के लिए नहीं किया जा सकता. ये जांच, इनका इस्तेमाल करकेContentProvider
को ऐक्सेस करने पर भी लागू होती हैंContentResolver
. - SDK टूल, सुरक्षित ब्रॉडकास्ट रिसीवर के कुछ सबसेट को ही ऐक्सेस कर सकता है (जैसे
android.intent.action.AIRPLANE_MODE
के तौर पर).
मेनिफ़ेस्ट टैग
SDK टूल इंस्टॉल होने के बाद, PackageManager
SDK टूल के मेनिफ़ेस्ट को पार्स करता है और काम नहीं करता
का इस्तेमाल करें. उदाहरण के लिए, SDK टूल
<service>, <activity>, <provider>
या <receiver>
जैसे कॉम्पोनेंट को तय नहीं करता हो
और हो सकता है कि मेनिफ़ेस्ट में <permission>
का एलान न करे. फ़ेल हुए टैग
SDK टूल के रनटाइम में, इंस्टॉल करने की सुविधा काम नहीं करती. बार-बार दिखने वाले टैग
इंस्टॉल किया जा सकता है, लेकिन गलती से अनदेखा कर दिया जाता है. आने वाले समय में Android पर ऐसा किया जा सकता है
वर्शन हैं.
ये जांच, उन बिल्ड टाइम टूल पर भी लागू की जा सकती हैं जिनका इस्तेमाल SDK टूल करता है ऐप्लिकेशन स्टोर में अपलोड करते समय, SDK टूल का बंडल बनाएं.
गतिविधि से जुड़ी सहायता
SDK टूल के रनटाइम एनवायरमेंट में मौजूद SDK टूल के मेनिफ़ेस्ट में गतिविधि टैग नहीं जोड़ा जा सकता
फ़ाइल है और Context.startActivity
का इस्तेमाल करके अपनी गतिविधियां शुरू नहीं कर सकता.
इसके बजाय, यह प्लैटफ़ॉर्म, अनुरोध किए जाने पर SDK टूल के लिए गतिविधियां बनाता है और
SDK टूल के साथ उन्हें शेयर करता है.
प्लैटफ़ॉर्म के लिए गतिविधि android.app.Activity
टाइप की है. प्लैटफ़ॉर्म पर की गई गतिविधि
ऐप्लिकेशन की किसी गतिविधि से शुरू होता है और ऐप्लिकेशन टास्क का हिस्सा होता है.
FLAG_ACTIVITY_NEW_TASK
का इस्तेमाल नहीं किया जा सकता.
गतिविधि शुरू करने के लिए, SDK टूल को इस तरह का एक इंस्टेंस रजिस्टर करना चाहिए
SdkSandboxActivityHandler
का इस्तेमाल, गतिविधि बनाए जाने की सूचना देने के लिए किया जाता है. ऐसा तब किया जाता है, जब
ऐप्लिकेशन SdkSandboxManager::startSdkSandboxActivity(Activity, IBinder)
को
गतिविधि शुरू करें.
इस ग्राफ़ में, गतिविधि के अनुरोध करने की प्रोसेस दिखाई गई है.
![डायग्राम](https://developers.google.cn/static/privacy-sandbox/assets/images/android/activityFlow2.png?authuser=5&hl=hi)
डेवलेपमेंट
इस प्रस्ताव का मुख्य सिद्धांत यह है कि डेवलपर पर पड़ने वाले असर को कम करना दिया गया है. इस प्रस्ताव में डेवलपर, आरई को लिखने, बनाने, और डीबग करने के लिए डेवलपमेंट टूल का एक व्यापक सेट बनाते हैं ऐप्लिकेशन और SDK टूल. इस प्रस्ताव की विश्वसनीयता पक्का करने के लिए, यहां आरई ऐप्लिकेशन और एसडीके को कॉन्फ़िगर करने, लिखने, और बनाने के तरीके में कुछ बदलाव किए गए हैं.
लेखन
Android Studio और उससे जुड़े टूल को, SDK टूल के रनटाइम अवेयर ऐक्सेस के अपडेट किया जाएगा. इससे यह पक्का किया जा सकेगा कि डेवलपर ने अपने आरई ऐप्लिकेशन को सही तरीके से कॉन्फ़िगर किया है और SDK टूल. साथ ही, यह पक्का करना कि लेगसी या काम न करने वाले कॉल, नए वर्शन पर अपडेट हो जाएं जहां ज़रूरी हो वहां उपलब्ध विकल्पों में से किसी एक को चुनें. कॉन्टेंट लिखने के दौरान, आपको कुछ चरण पूरे करने होंगे. हमारे प्रस्ताव के लिए डेवलपर को इन बातों पर ध्यान देना होगा.
ऐप्लिकेशन डेवलपर
ऐप्लिकेशन को अपने आरई SDK टूल और SDK टूल के सर्टिफ़िकेट की जानकारी देनी होगी डिपेंडेंसी के हिसाब से काम करते हैं. अपने प्रस्ताव में हम इसे सोर्स के तौर पर देखते हैं को इस बात की पुष्टि कर सकें कि इस प्रस्ताव में सभी ज़रूरी चीज़ें शामिल हैं. उदाहरण के लिए:
- नाम: SDK टूल या लाइब्रेरी के पैकेज का नाम.
- मेजर वर्शन: SDK टूल का मेजर वर्शन कोड.
- सर्टिफ़िकेट का ब्यौरा: SDK टूल के बिल्ड का सर्टिफ़िकेट डाइजेस्ट. किसी दिए गए के लिए हम यह सुझाव देते हैं कि SDK टूल के डेवलपर को में अपने काम का ऐप स्टोर शामिल करें.
यह सिर्फ़ ऐप्लिकेशन स्टोर में मौजूद SDK टूल पर लागू होता है. भले ही, वे आरई हो या न हों. SDK टूल को स्टैटिक तरीके से लिंक करने वाले ऐप्लिकेशन, डिपेंडेंसी के मौजूदा तरीकों का इस्तेमाल करेंगे.
डेवलपर को कम से कम फ़ायदा देने के हमारे लक्ष्य को देखते हुए, यह ज़रूरी है कि एक बार SDK टूल के रनटाइम के साथ काम करने वाले टारगेट एपीआई लेवल की जानकारी दी गई है. यह सिर्फ़ ऐप्लिकेशन डेवलपर के लिए है एक ही बिल्ड की ज़रूरत होगी, भले ही वह बिल्ड ऐसे डिवाइसों पर चले जो SDK टूल के रनटाइम के साथ काम नहीं करता है.
SDK टूल के डेवलपर
हमारे प्रस्तावित डिज़ाइन में, आरई SDK डेवलपर को साफ़ तौर पर मेनिफ़ेस्ट में SDK टूल या लाइब्रेरी इकाई को दिखाने वाले नए एलिमेंट का एलान करें. इसके अलावा, डिपेंडेंसी के तौर पर वैल्यू का एक मिलता-जुलता सेट होना चाहिए माइनर वर्शन के साथ दी गई हो:
- नाम: SDK टूल या लाइब्रेरी के पैकेज का नाम.
- मेजर वर्शन: SDK टूल का मेजर वर्शन कोड.
- छोटा वर्शन: SDK टूल का छोटा वर्शन कोड.
अगर आरई SDK डेवलपर के पास बिल्ड-टाइम डिपेंडेंसी के तौर पर अन्य आरई SDK टूल हैं, तो डेवलपर को ऐप्लिकेशन डेवलपर की तरह ही जानकारी देनी होगी उसी डिपेंडेंसी का एलान करेगा. गैर-आरई SDK टूल पर निर्भर करने वाले आरई SDK टूल उन्हें स्टैटिक तौर पर लिंक किया जा सकता है. इसकी वजह से, ऐसी समस्याएं हो सकती हैं जिनका पता यहां लगाया जाएगा अगर गैर आरई SDK टूल के लिए ज़रूरी है कि वे SDK टूल का रनटाइम, इस सुविधा के साथ काम नहीं करता है या उसे ऐप्लिकेशन की प्रोसेस के दौरान चलाया जा सकता है.
आरई SDK टूल के डेवलपर, उन ऐप्लिकेशन के लिए सहायता पाना जारी रख सकते हैं जो फिर से चालू नहीं हैं डिवाइस, जैसे कि Android 12 या उससे पहले के वर्शन. साथ ही, जैसा कि System Health सेक्शन में, कम सुविधाओं वाले ऐसे Android 13 डिवाइस मौजूद हैं जो सीमित सिस्टम संसाधन. हम SDK टूल को पक्का करने के लिए काम कर रहे हैं डेवलपर, आरई और नॉन-आरई एनवायरमेंट के साथ काम करने के लिए एक ही कोड-बेस का इस्तेमाल कर सकते हैं.
बिल्ड
ऐप्लिकेशन डेवलपर
हमें उम्मीद है कि ऐप्लिकेशन डेवलपर को बिल्ड चरण पूरा हुआ. SDK टूल डिपेंडेंसी, चाहे वे ऐप्लिकेशन स्थानीय तौर पर उपलब्ध हों या ऐप्लिकेशन लिंटिंग के लिए मशीन पर मौजूद होना चाहिए, यानी कि स्टोर में उपलब्ध (आरई) या नहीं, कंपाइलेशन, और बिल्ड. हमारा सुझाव है कि Android Studio, सामान्य इस्तेमाल के साथ ऐप्लिकेशन डेवलपर से मिली जानकारी और इसे पारदर्शी बनाए किया जा सकता है.
हालांकि, हमें उम्मीद है कि DEBUG बिल्ड में सभी कोड और सिंबल शामिल होने चाहिए होने के लिए डिज़ाइन किया गया है, लेकिन रिलीज़ बिल्ड में विकल्प के तौर पर, ऐप्लिकेशन स्टोर पर मौजूद सभी SDK टूल (दोबारा है या नहीं) हटाए जा सकते हैं फ़ाइनल आर्टफ़ैक्ट.
हम अभी डिज़ाइन के चरण में ही हैं. जैसे-जैसे यह पूरा होगा, हम इसके बारे में ज़्यादा जानकारी शेयर करेंगे.
SDK टूल के डेवलपर
हम यह पक्का करने के लिए काम कर रहे हैं कि गैर-आरई और आरई वाले वर्शन डिस्ट्रिब्यूशन के लिए, SDK टूल को एक आर्टफ़ैक्ट में बनाया जा सकता है. यह करने में इससे ऐप्लिकेशन डेवलपर को RE के लिए अलग बिल्ड सपोर्ट की ज़रूरत नहीं पड़ेगी और जिनमें SDK टूल का ऐसा वर्शन हो जो आरई से जुड़ा न हो.
ऐप्लिकेशन की तरह ही, ऐप स्टोर पर डिलीवर किए गए किसी भी डिपेंडेंसी SDK टूल को लिंटिंग, कंपाइलेशन, और बिल्ड के लिए मशीन पर मौजूद हैं और हम Android Studio को यह सुविधा आसानी से मिलनी चाहिए.
टेस्ट करना
ऐप्लिकेशन डेवलपर
जैसा कि हमारे प्रस्ताव में बताया गया है, ऐप्लिकेशन डेवलपर Android 13 वर्शन वाले डिवाइसों पर मौजूद ऐप्लिकेशन आम तौर पर कैसा दिखता है. बनाने के बाद तो वह ऐप्लिकेशन किसी आरई डिवाइस या एम्युलेटर पर इंस्टॉल किया जा सकेगा. इंस्टॉल करने की इस प्रक्रिया से यह पक्का होगा कि डिवाइस या एम्युलेटर के लिए, SDK टूल का रनटाइम, क्या SDK टूल को किसी रिमोट SDK टूल का डेटा स्टोर करने की जगह या बिल्ड सिस्टम की कैश मेमोरी.
SDK टूल के डेवलपर
SDK टूल के डेवलपर आम तौर पर, इन-हाउस टेस्ट ऐप्लिकेशन का इस्तेमाल डिवाइसों पर करते हैं और एम्युलेटर का इस्तेमाल किया जा सकता है. हमारे प्रस्ताव से इसमें कोई बदलाव नहीं हुआ है और इन-ऐप्लिकेशन पुष्टि करने के लिए, वही तरीका अपनाना होगा जो ऐप्लिकेशन डेवलपर के लिए बताया गया है जिसमें आरई और नॉन-आरई, दोनों तरह के ऐप्लिकेशन के लिए एक ही बिल्ड आर्टफ़ैक्ट शामिल हो. एसडीके SDK टूल में मौजूद कोड के बिना, डेवलपर अपने कोड का इस्तेमाल कर सकेंगे रनटाइम या नहीं, हालांकि बेहतर डीबग करने की कुछ सीमाएं हो सकती हैं और प्रोफ़ाइल बनाने के टूल. इस मामले की जांच जारी है.
डिस्ट्रिब्यूशन
ऐप्लिकेशन को उसके SDK टूल से अलग करने के डिज़ाइन के प्रस्ताव से, ऐप स्टोर पर SDK टूल के डिस्ट्रिब्यूशन की संभावना. यह एक सामान्य संभावना है, किसी खास ऐप स्टोर के लिए यूनीक नहीं है. इससे आपको मिलने वाले फ़ायदों के बारे में पूरी जानकारी मिल जाती है:
- पक्का करें कि SDK टूल की क्वालिटी अच्छी हो और वे एक जैसे हों.
- SDK टूल के डेवलपर के लिए, कॉन्टेंट पब्लिश करने की प्रोसेस को आसान बनाएं.
- इंस्टॉल किए गए ऐप्लिकेशन के लिए, SDK टूल के माइनर वर्शन के अपडेट को जल्द से जल्द लॉन्च करें.
SDK टूल के डिस्ट्रिब्यूशन की सुविधा के लिए, ऐप स्टोर को नीचे दी गई ज़्यादातर सुविधाएं उपलब्ध कराई जा सकती हैं:
- एक ऐसा तरीका जिसकी मदद से SDK डेवलपर, ऐप्लिकेशन स्टोर में डिस्ट्रिब्यूट किए जा सकने वाले SDK टूल अपलोड कर सकते हैं करके स्टोर से अपडेट करें, उन्हें अपडेट करें, रोल बैक करें, और शायद हटा भी दें.
- ऐसा तरीका जिससे यह पक्का किया जा सके कि SDK टूल और उसके मूल स्रोत, और ऐप्लिकेशन को भरोसेमंद बनाए रखें और उनकी निर्भरता का समाधान कर सके.
- उन्हें डिवाइसों पर डिप्लॉय करने का तरीका, जो लगातार भरोसेमंद और बेहतर तरीके से काम करते हैं.
समय के साथ बढ़ती पाबंदियां
हमें उम्मीद है कि SDK टूल के रनटाइम में कोड की वजह से जो पाबंदियां लगी हैं वे बाद में बेहतर होंगी
Android के वर्शन हैं. यह पक्का करने के लिए कि ऐप्लिकेशन सही से काम करे, हम इनमें बदलाव नहीं करेंगे
किसी खास SDK टूल के लेवल के लिए, मेनलाइन मॉड्यूल अपडेट के साथ पाबंदियां लागू की जाती हैं. व्यवहार
दिए गए targetSdkVersion
से संबद्ध तब तक सुरक्षित रखा जाता है जब तक उसके लिए समर्थन उपलब्ध नहीं होता
ऐप स्टोर की नीति के तहत, targetSdkVersion
के इस्तेमाल पर रोक लगा दी गई है और
targetSdkVersion
का बंद होना, ऐप्लिकेशन के मुकाबले तेज़ी से हो सकता है.
Android SDK के सभी वर्शन पर, पाबंदियों में बार-बार बदलाव हो सकते हैं. खास तौर पर,
इस्तेमाल किए जा सकते हैं.
इसके अलावा, हम एक कैनरी सिस्टम बना रहे हैं, ताकि बाहरी और अंदरूनी टेस्टर को किसी ऐसे ग्रुप में शामिल करने के लिए अनुमति लेना जिसे अगले Android का एक वर्शन है. इससे हमें सुझाव, राय या शिकायत के साथ-साथ, पाबंदियों के सेट में सुझाए गए बदलाव.
अक्सर पूछे जाने वाले सवाल
-
विज्ञापन से जुड़ा SDK टूल क्या है?
विज्ञापन से जुड़ा SDK टूल, ऐसा SDK टूल होता है जो टारगेटिंग (विज्ञापन के लिए सही दर्शक चुनना) के किसी भी हिस्से को के ज़रिए विज्ञापन देने वाले विज्ञापनदाता. इसमें Analytics SDK टूल शामिल हैं. हालांकि, इसमें और भी चीज़ें शामिल हो सकती हैं, जिन्हें उपयोगकर्ता ने ग्रुप को बाद की टारगेटिंग, विज्ञापन दिखाने वाले SDK टूल, और गलत इस्तेमाल को रोकने के लिए बनाया जा सकता है के साथ-साथ
-
क्या SDK टूल के रनटाइम में कोई SDK टूल चलाया जा सकता है?
हालांकि, शुरुआती तौर पर फ़ोकस विज्ञापन से जुड़े SDK टूल पर होता है, लेकिन विज्ञापन से जुड़े ऐसे SDK टूल जो विज्ञापन से मिलते-जुलते नहीं हैं निजता का ध्यान रखना चाहिए और उनका मानना है कि वे ऊपर बताई गई शर्तें, अपने SDK टूल के बारे में सुझाव/राय दे सकती हैं या शिकायत कर सकती हैं जो SDK टूल के रनटाइम में चल रहे होते हैं. SDK टूल के रनटाइम को, आपके ऐप्लिकेशन के साथ काम करने के लिए डिज़ाइन नहीं किया गया है के लिए इस्तेमाल किया जा सकता है. बताई गई सीमाओं के अलावा, SDK टूल रनटाइम उन SDK टूल के लिए सही नहीं है जिन्हें रीयल-टाइम या ज़्यादा डेटा प्रोसेस करने की ज़रूरत होती है बातचीत करने के लिए इस्तेमाल किया जाता है.
-
किसी प्रोसेस के तहत आइसोलेशन के बजाय प्रोसेस आइसोलेशन को क्यों चुनें Java पर आधारित रनटाइम?
इस समय, Java पर आधारित रनटाइम, सुरक्षा के लिए आसानी से Android के लिए, निजता की सुरक्षा का ध्यान रखने के लिए ज़रूरी सीमाएं उपयोगकर्ता. इस तरह की सुविधाएं लागू करने के लिए, और सफलता की गारंटी के बिना, कई सालों तक काम करने की कोशिश करते हैं. इसलिए, निजता सैंडबॉक्स, प्रोसेस की सीमाओं का इस्तेमाल करता है. यह समयसीमा ऐसी होती है जिसे समझने के लिए काफ़ी समय की ज़रूरत होती है और हम उसे अच्छे से समझते हैं टेक्नोलॉजी.
-
SDK टूल को SDK टूल की रनटाइम प्रोसेस में ले जाने पर डाउनलोड साइज़ मिलता है या जगह बचानी है?
अगर कई ऐप्लिकेशन, रनटाइम के साथ काम करने वाले एक ही SDK टूल के साथ इंटिग्रेट किए गए हों तो इससे डाउनलोड का साइज़ और डिस्क में बचा स्टोरेज कम हो सकता है.
-
ऐप्लिकेशन के किस तरह के लाइफ़साइकल इवेंट होते हैं. जैसे, जब ऐप्लिकेशन किसी बैकग्राउंड, क्या SDK टूल के रनटाइम में SDK टूल का ऐक्सेस मिलेगा?
हम ऐप्लिकेशन के लेवल पर SDK टूल के रनटाइम की सूचना भेजने के लिए, डिज़ाइन से जुड़ी सहायता पर लगातार काम कर रहा है इसके क्लाइंट ऐप्लिकेशन के लाइफ़साइकल इवेंट (उदाहरण के लिए, ऐप्लिकेशन बैकग्राउंड में जाना, ऐप्लिकेशन को फ़ोरग्राउंड में जाने से रोकने के लिए किया जा सकता है). डिज़ाइन और सैंपल कोड को आने वाले समय में डेवलपर की झलक.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- SDK टूल के रनटाइम की डेवलपर गाइड