यदि आपने कभी Android डिवाइस पर फ़ाइलों को प्रबंधित करने का प्रयास किया है, तो आपने शायद देखा होगा कि आप Android के किस संस्करण को चला रहे हैं, इसके आधार पर चीजें अलग-अलग काम करती हैं। Android 10 से शुरुआत करते हुए, Google ने ऐप्स के फ़ाइल सिस्टम के साथ इंटरैक्ट करने के तरीके में एक बुनियादी बदलाव पेश किया। यह परिवर्तन, जिसे स्कोप्ड स्टोरेज के नाम से जाना जाता है, ने साझा भंडारण पर फ़ाइलों को पढ़ने और लिखने के नियमों को फिर से परिभाषित किया। उन उपयोगकर्ताओं के लिए जो ऐप्स को साइडलोड करते हैं, OBB फ़ाइलों को प्रबंधित करते हैं, या फ़ाइल प्रबंधकों के साथ काम करते हैं, स्कोप्ड स्टोरेज को समझना आवश्यक है।
इस लेख में, हम जानेंगे कि स्कोप्ड स्टोरेज क्या है, Google ने इसे क्यों लागू किया, यह रोजमर्रा के उपयोगकर्ताओं और डेवलपर्स को कैसे प्रभावित करता है, और Play Store के बाहर APK या XAPK फ़ाइलें इंस्टॉल करने वाले किसी भी व्यक्ति के लिए इसका क्या अर्थ है।
पुराने संग्रहण मॉडल के साथ समस्या
Android 10 से पहले, कोई भी ऐप जो READ_EXTERNAL_STORAGE या WRITE_EXTERNAL_STORAGE अनुमति का अनुरोध करता था, वह डिवाइस के साझा स्टोरेज पर वस्तुतः किसी भी फ़ाइल तक पहुंच सकता था। इसमें फ़ोटो, दस्तावेज़, डाउनलोड और यहां तक कि अन्य ऐप्स द्वारा बनाई गई फ़ाइलें भी शामिल थीं। हालाँकि इसने फ़ाइल प्रबंधन को सुविधाजनक बना दिया, इसने गोपनीयता और सुरक्षा संबंधी गंभीर चिंताएँ पैदा कर दीं।
एक साधारण टॉर्च ऐप पर विचार करें। पुराने मॉडल के तहत, यदि आपने इसे भंडारण की अनुमति दी है, तो यह चुपचाप आपकी तस्वीरें पढ़ सकता है, आपके डाउनलोड किए गए दस्तावेज़ों को स्कैन कर सकता है, या यहां तक कि अन्य एप्लिकेशन से संबंधित फ़ाइलों को संशोधित भी कर सकता है। कोई बारीक नियंत्रण नहीं था. आपने या तो किसी ऐप को अपने संपूर्ण स्टोरेज तक पूर्ण पहुंच दे दी या उसे पूरी तरह से अस्वीकार कर दिया।
इस व्यापक पहुंच ने वास्तविक दुनिया की समस्याओं को जन्म दिया। कुछ ऐप्स ने संवेदनशील फ़ाइलों के स्टोरेज को स्कैन करके उपयोगकर्ता डेटा एकत्र किया। अन्य लोग अपने पीछे अनाथ फ़ाइलें छोड़ गए जो ऐप अनइंस्टॉल होने के काफी समय बाद तक डिवाइस को अव्यवस्थित कर देती थीं। Google को एक ऐसे समाधान की आवश्यकता थी जो प्रयोज्यता को गोपनीयता के साथ संतुलित करे, और स्कोप्ड स्टोरेज उनका उत्तर था।
स्कोप्ड स्टोरेज वास्तव में क्या करता है
स्कोप्ड स्टोरेज मूल रूप से ऐप्स और फ़ाइल सिस्टम के बीच संबंध को बदल देता है। इस मॉडल के तहत, प्रत्येक ऐप को बाहरी स्टोरेज पर अपना निजी सैंडबॉक्स मिलता है, जो आमतौर पर /Android/data/[package.name]/ पर स्थित होता है। ऐप्स बिना किसी अनुमति की आवश्यकता के अपने स्वयं के सैंडबॉक्स में स्वतंत्र रूप से पढ़ और लिख सकते हैं।
हालाँकि, इस सैंडबॉक्स के बाहर फ़ाइलों तक पहुँचने के लिए नियंत्रित एपीआई से गुजरना आवश्यक है। यहां बताया गया है कि नया मॉडल कैसे काम करता है:
ऐप-विशिष्ट संग्रहण
प्रत्येक ऐप में एक समर्पित निर्देशिका होती है जिसे केवल वह ही एक्सेस कर सकता है। जब ऐप अनइंस्टॉल हो जाता है, तो यह निर्देशिका स्वचालित रूप से साफ़ हो जाती है। रूट एक्सेस के बिना कोई अन्य ऐप इस स्थान पर पढ़ या लिख नहीं सकता है। यह अनाथ फ़ाइलों की समस्या को समाप्त करता है और क्रॉस-ऐप डेटा स्नूपिंग को रोकता है।
मीडिया संग्रह
फ़ोटो, वीडियो और ऑडियो फ़ाइलों जैसे साझा मीडिया के लिए, Android MediaStore API प्रदान करता है। ऐप्स साझा संग्रहों में मीडिया का योगदान कर सकते हैं और अन्य ऐप्स द्वारा बनाए गए मीडिया को पढ़ सकते हैं, लेकिन केवल इस संरचित इंटरफ़ेस के माध्यम से। एक ऐप बिना किसी अनुमति के अपना मीडिया देख सकता है, लेकिन अन्य ऐप्स के मीडिया तक पहुंचने के लिए Android 13 में पेश की गई READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, या READ_MEDIA_AUDIO अनुमतियों की आवश्यकता होती है।
स्टोरेज एक्सेस फ्रेमवर्क
दस्तावेज़ों और अन्य गैर-मीडिया फ़ाइलों के लिए, ऐप्स को स्टोरेज एक्सेस फ़्रेमवर्क (SAF) का उपयोग करना होगा। यह उपयोगकर्ता के लिए एक सिस्टम फ़ाइल पिकर प्रस्तुत करता है, जो स्पष्ट रूप से चुनता है कि ऐप किन फ़ाइलों या निर्देशिकाओं तक पहुंच सकता है। ऐप को कभी भी संपूर्ण फ़ाइल सिस्टम तक पूर्ण पहुंच नहीं मिलती है।
MANAGE_EXTERNAL_STORAGE अनुमति
उन ऐप्स के लिए जिन्हें वास्तव में व्यापक फ़ाइल एक्सेस की आवश्यकता होती है, जैसे फ़ाइल प्रबंधक, बैकअप टूल और एंटीवायरस सॉफ़्टवेयर, Android MANAGE_EXTERNAL_STORAGE अनुमति प्रदान करता है। हालाँकि, इस अनुमति के लिए Play Store के माध्यम से वितरित ऐप्स के लिए Google से विशेष अनुमोदन की आवश्यकता होती है, और उपयोगकर्ताओं को इसे एक साधारण संवाद के बजाय सिस्टम सेटिंग्स के माध्यम से मैन्युअल रूप से प्रदान करना होगा।
रोलआउट टाइमलाइन
Google ने स्कोप्ड स्टोरेज को रातोरात लागू नहीं किया। परिवर्तन धीरे-धीरे हुआ:
- Android 10 (एपीआई 29): स्कोप्ड स्टोरेज पेश किया गया था लेकिन ऐप्स अपने मेनिफ़ेस्ट में requestLegacyExternalStorage="true" का उपयोग करने से इनकार कर सकते थे। इससे डेवलपर्स को अनुकूलन के लिए समय मिल गया।
- Android 11 (एपीआई 30): एपीआई 30 या उच्चतर को लक्षित करने वाले ऐप्स के लिए विरासत ध्वज को नजरअंदाज कर दिया गया था। प्ले स्टोर पर नए और अपडेटेड ऐप्स के लिए स्कोप्ड स्टोरेज अनिवार्य हो गया।
- Android 12 और उससे आगे: आगे परिशोधन किया गया, जिसमें ग्रैन्युलर मीडिया अनुमतियाँ और बेहतर SAF प्रदर्शन शामिल हैं।
- Android 13 (एपीआई 33): विशिष्ट मीडिया अनुमतियों के पक्ष में व्यापक READ_EXTERNAL_STORAGE अनुमति को अस्वीकार कर दिया गया था।
- Android 14 (एपीआई 34): आंशिक फोटो और वीडियो एक्सेस पेश किया गया, जिससे उपयोगकर्ताओं को संपूर्ण मीडिया लाइब्रेरी के बजाय विशिष्ट फ़ाइलों तक पहुंच प्रदान की जा सके।
स्कोप्ड स्टोरेज साइडलोडिंग को कैसे प्रभावित करता है
जो उपयोगकर्ता प्ले स्टोर के बाहर से ऐप्स इंस्टॉल करते हैं, उनके लिए स्कोप्ड स्टोरेज कुछ व्यावहारिक चुनौतियाँ पेश करता है जो समझने लायक हैं।
APK फ़ाइलों को डाउनलोड करना और उन तक पहुंचना
जब आप किसी ब्राउज़र के माध्यम से APK फ़ाइल डाउनलोड करते हैं, तो यह आमतौर पर डाउनलोड फ़ोल्डर में आ जाती है। स्कोप्ड स्टोरेज के तहत, ब्राउज़र ऐप उस फ़ाइल का मालिक होता है। यदि आप किसी भिन्न ऐप, जैसे फ़ाइल प्रबंधक, का उपयोग करके इसे इंस्टॉल करना चाहते हैं, तो उस फ़ाइल प्रबंधक को उचित पहुंच की आवश्यकता होती है। अधिकांश आधुनिक फ़ाइल प्रबंधक एसएएफ के माध्यम से इसे सही ढंग से संभालते हैं, लेकिन पुराने प्रबंधकों को कठिनाई हो सकती है।
सिस्टम पैकेज इंस्टॉलर अभी भी फ़ाइल पिकर के माध्यम से आपके द्वारा स्पष्ट रूप से चुनी गई फ़ाइलों तक पहुंच सकता है, इसलिए APK डाउनलोड करने और इंस्टॉल करने का मूल प्रवाह अभी भी काम करता है। हालाँकि, स्वचालित इंस्टॉलेशन वर्कफ़्लो जो सीधे फ़ाइल पथ पहुंच पर निर्भर थे, टूट सकते हैं।
OBB फ़ाइलें और गेम डेटा
यह वह जगह है जहां स्कोप्ड स्टोरेज साइडलोडर्स के लिए सबसे अधिक घर्षण पैदा करता है। कई बड़े गेम /Android/obb/[package.name]/ में संग्रहीत OBB (अपारदर्शी बाइनरी ब्लॉब) फ़ाइलों का उपयोग करते हैं। पुराने मॉडल के तहत, आप किसी भी फ़ाइल प्रबंधक का उपयोग करके OBB फ़ाइलों को सही निर्देशिका में कॉपी कर सकते हैं।
स्कोप्ड स्टोरेज के साथ, /Android/obb/ निर्देशिका प्रतिबंधित है। Android 11 और उसके बाद के संस्करण पर, नियमित ऐप्स किसी अन्य ऐप की OBB निर्देशिका में नहीं लिख सकते हैं। इसका मतलब यह है कि यदि आप एक XAPK फ़ाइल डाउनलोड करते हैं जिसमें OBB डेटा है, तो इंस्टॉलर को उन फ़ाइलों को सही ढंग से रखने के लिए विशेष हैंडलिंग की आवश्यकता होती है।
हमारे OBB एक्सट्रैक्टर जैसे उपकरण आपको XAPK पैकेज से OBB फ़ाइलें निकालने में मदद कर सकते हैं, लेकिन उन्हें नए Android संस्करणों पर सही निर्देशिका में रखने के लिए MANAGE_EXTERNAL_STORAGE अनुमति के साथ फ़ाइल प्रबंधक का उपयोग करने या कंप्यूटर से ADB कमांड का उपयोग करने की आवश्यकता हो सकती है।
XAPK स्थापना संबंधी विचार
XAPK फ़ाइलें OBB डेटा के साथ एक APK को बंडल करती हैं और कभी-कभी APK कॉन्फ़िगरेशन को विभाजित करती हैं। Android 11 या उसके बाद के संस्करण चलाने वाले उपकरणों पर इन्हें इंस्टॉल करने के लिए एक ऐसे इंस्टॉलर की आवश्यकता होती है जो स्कोप्ड स्टोरेज प्रतिबंधों को समझता हो। OBB फ़ाइलों को सही स्थान पर रखने के लिए इंस्टॉलर को या तो MANAGE_EXTERNAL_STORAGE अनुमति रखनी होगी या उचित एपीआई का उपयोग करना होगा।
यह एक कारण है कि XAPK फ़ाइलों को मानक APK प्रारूप में परिवर्तित करना उपयोगी हो सकता है। एक स्टैंडअलोन APK को OBB फ़ाइल प्लेसमेंट की आवश्यकता नहीं होती है, जिससे नए Android संस्करणों पर इंस्टॉलेशन प्रक्रिया सरल हो जाती है। आप XAPK पैकेज से बेस APK निकालने के लिए हमारे XAPKS से APK कनवर्टर का उपयोग कर सकते हैं।
डेवलपर्स को क्या जानना आवश्यक है
यदि आप Android ऐप्स विकसित कर रहे हैं, तो स्कोप्ड स्टोरेज के लिए आपको फ़ाइलों को संभालने के तरीके पर पुनर्विचार करने की आवश्यकता है:
- ऐप-विशिष्ट निर्देशिकाओं का उपयोग करें किसी भी फ़ाइल के लिए जिसकी केवल आपके ऐप को आवश्यकता है। इन्हें किसी अनुमति की आवश्यकता नहीं है और अनइंस्टॉल करने पर ये स्वचालित रूप से साफ़ हो जाते हैं।
- फ़ोटो, वीडियो और ऑडियो के लिए मीडियास्टोर का प्रयोग करें जो अन्य ऐप्स को दिखाई देना चाहिए और अनइंस्टॉल होने से बचना चाहिए।
- एसएएफ का प्रयोग करें जब आपके ऐप को उपयोगकर्ता द्वारा चयनित दस्तावेज़ों या निर्देशिकाओं के साथ काम करने की आवश्यकता होती है।
- हार्डकोडेड फ़ाइल पथों से बचें. /sdcard/MyApp/ जैसे पथ अब विश्वसनीय नहीं हैं। इसके बजाय Context.getExternalFilesDir() का उपयोग करें।
- एकाधिक एपीआई स्तरों पर परीक्षण करें। व्यवहार Android 10, 11, 13 और 14 के बीच काफी भिन्न है।
प्रवासन रणनीतियाँ
यदि आपका ऐप पहले साझा स्टोरेज में फ़ाइलें संग्रहीत करता है, तो आपको माइग्रेशन योजना की आवश्यकता है। अनुशंसित दृष्टिकोण अपडेट के बाद पहले लॉन्च पर मौजूदा फ़ाइलों को ऐप-विशिष्ट स्टोरेज में कॉपी करना है, फिर पुरानी प्रतियों को हटा देना है। पुरानी फ़ाइलों को पढ़ने के लिए संक्रमण अवधि के दौरान विरासत ध्वज के साथ Environment.getExternalStorageDirectory() का उपयोग करें, फिर उन्हें नए स्थान पर ले जाएं।
सामान्य भ्रांतियाँ
"स्कोप्ड स्टोरेज का मतलब है कि ऐप्स किसी भी फाइल तक नहीं पहुंच सकते"
यह गलत है। ऐप्स अभी भी अपनी फ़ाइलों तक स्वतंत्र रूप से पहुंच सकते हैं, साझा मीडिया संग्रह में योगदान कर सकते हैं, और सिस्टम पिकर के माध्यम से विशिष्ट फ़ाइलों तक पहुंच का अनुरोध कर सकते हैं। जो बदलाव आया है वह यह है कि ऐप्स अब संपूर्ण फ़ाइल सिस्टम को चुपचाप ब्राउज़ नहीं कर सकते हैं।
"फ़ाइल प्रबंधक नए Android संस्करणों पर टूटे हुए हैं"
MANAGE_EXTERNAL_STORAGE का अनुरोध करने वाले फ़ाइल प्रबंधक अभी भी काम करते हैं। उपयोगकर्ता को बस सेटिंग्स के माध्यम से यह विशेष अनुमति देनी होगी। अधिकांश लोकप्रिय फ़ाइल प्रबंधक पहले ही इस आवश्यकता को अपना चुके हैं।
"स्कोप्ड स्टोरेज केवल एसडी कार्ड को प्रभावित करता है"
स्कोप्ड स्टोरेज आंतरिक साझा स्टोरेज सहित सभी साझा स्टोरेज पर लागू होता है। Android में "एक्सटर्नल स्टोरेज" शब्द साझा स्टोरेज को संदर्भित करता है जो कई ऐप्स तक पहुंच योग्य है, जरूरी नहीं कि भौतिक एसडी कार्ड हो।
उपयोगकर्ताओं के लिए व्यावहारिक सुझाव
यदि आप नियमित रूप से अपने Android डिवाइस पर ऐप्स को साइडलोड करते हैं या फ़ाइलों को प्रबंधित करते हैं, तो यहां कुछ व्यावहारिक सिफारिशें दी गई हैं:
- एक आधुनिक फ़ाइल प्रबंधक का उपयोग करें जो MANAGE_EXTERNAL_STORAGE को सपोर्ट करता है। सॉलिड एक्सप्लोरर, MiXplorer और टोटल कमांडर जैसे ऐप्स ने स्कोप्ड स्टोरेज को अच्छी तरह से अनुकूलित कर लिया है।
- अनुमतियाँ सावधानीपूर्वक प्रदान करें. जब कोई फ़ाइल प्रबंधक "सभी फ़ाइलों तक पहुंच" मांगता है, तो समझें कि यह MANAGE_EXTERNAL_STORAGE अनुमति है और पूर्ण कार्यक्षमता के लिए आवश्यक है।
- जिद्दी फ़ाइल संचालन के लिए ADB का उपयोग करें। यदि आप OBB फ़ाइलों को फ़ाइल प्रबंधक के माध्यम से नहीं रख सकते हैं, तो अपने डिवाइस को कंप्यूटर से कनेक्ट करना और adb push का उपयोग करना स्कोप्ड स्टोरेज प्रतिबंधों को पूरी तरह से बायपास कर देता है।
- जटिल पैकेजों को सरल प्रारूपों में परिवर्तित करें। यदि एक XAPK फ़ाइल आपको नए डिवाइस पर परेशानी दे रही है, तो केवल APK घटक को निकालना कम से कम प्रतिरोध का मार्ग हो सकता है।
- अपने इंस्टॉलर ऐप्स को अपडेट रखें. XAPK इंस्टालर के पुराने संस्करण स्कोप्ड स्टोरेज को सही ढंग से संभाल नहीं सकते हैं।
Android स्टोरेज का भविष्य
Google प्रत्येक Android रिलीज़ के साथ स्टोरेज मॉडल को परिष्कृत करना जारी रखता है। Android 14 ने आंशिक मीडिया एक्सेस की शुरुआत की, जिससे उपयोगकर्ताओं को अपनी संपूर्ण लाइब्रेरी के बजाय एक ऐप के साथ विशिष्ट फ़ोटो साझा करने की सुविधा मिली। उम्मीद है कि Android 15 स्टोरेज एक्सेस फ्रेमवर्क के प्रदर्शन और उपयोगिता में और सुधार लाएगा।
प्रवृत्ति स्पष्ट है: Android एक ऐसे मॉडल की ओर बढ़ रहा है जहां उपयोगकर्ताओं के पास प्रत्येक ऐप क्या देख सकता है और संशोधित कर सकता है, इस पर सूक्ष्म नियंत्रण है। हालांकि यह बिजली उपयोगकर्ताओं और साइडलोडर्स के लिए कुछ घर्षण पैदा करता है, यह व्यापक उपयोगकर्ता आधार के लिए गोपनीयता और सुरक्षा में काफी सुधार करता है।
ऐप डेटा को तोड़े बिना स्कोप्ड स्टोरेज के साथ काम करना
स्कोप्ड स्टोरेज हाल के वर्षों में Android के आर्किटेक्चर में सबसे महत्वपूर्ण परिवर्तनों में से एक का प्रतिनिधित्व करता है। ऐप्स को अपने स्वयं के सैंडबॉक्स तक सीमित करके और व्यापक पहुंच के लिए स्पष्ट उपयोगकर्ता सहमति की आवश्यकता करके, Google ने प्लेटफ़ॉर्म की गोपनीयता स्थिति में नाटकीय रूप से सुधार किया है। उन उपयोगकर्ताओं के लिए जो ऐप्स को साइडलोड करते हैं और फ़ाइलों को मैन्युअल रूप से प्रबंधित करते हैं, इन प्रतिबंधों को समझने से आपको कभी-कभी घर्षण बिंदुओं के आसपास काम करने में मदद मिलती है। और डेवलपर्स के लिए, स्कोप्ड स्टोरेज को अपनाना वैकल्पिक नहीं है, बल्कि आधुनिक Android विकास के लिए एक मूलभूत आवश्यकता है।
APK इंस्टॉल करना, OBB फाइलें रखना, और दिन-प्रतिदिन स्टोरेज का प्रबंधन करना सभी एक ही सिस्टम में चलते हैं: स्कोप्ड स्टोरेज। एक बार जब आप समझ जाते हैं कि यह कैसे काम करता है, तो आप उन ऐप्स की दया पर निर्भर होने के बजाय अपने डिवाइस के नियंत्रण में हैं जो व्यापक फ़ाइल पहुंच का दुरुपयोग कर सकते हैं।