पारंपरिक भंडारण

Android बाहरी संग्रहण HAL आइकन

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

बहु-उपयोगकर्ता बाहरी भंडारण

एंड्रॉइड 4.2 में शुरू, डिवाइस कई उपयोगकर्ताओं का समर्थन कर सकते हैं, और बाहरी भंडारण को निम्नलिखित बाधाओं को पूरा करना चाहिए:

  • प्रत्येक उपयोगकर्ता के पास अपना पृथक प्राथमिक बाह्य संग्रहण होना चाहिए, और अन्य उपयोगकर्ताओं के प्राथमिक बाहरी संग्रहण तक पहुँच नहीं होनी चाहिए।
  • /sdcard पथ को उपयोगकर्ता के आधार पर सही उपयोगकर्ता-विशिष्ट प्राथमिक बाहरी भंडारण के लिए हल करना चाहिए जो एक प्रक्रिया के रूप में चल रही है।
  • Android/obb निर्देशिका में बड़ी OBB फ़ाइलों के लिए संग्रहण को अनुकूलन के रूप में कई उपयोगकर्ताओं के बीच साझा किया जा सकता है।
  • संश्लेषित अनुमतियों द्वारा अनुमत पैकेज-विशिष्ट निर्देशिकाओं को छोड़कर, द्वितीयक बाह्य संग्रहण ऐप्स द्वारा योग्य नहीं होना चाहिए।

इस सुविधा का डिफ़ॉल्ट प्लेटफ़ॉर्म कार्यान्वयन प्रत्येक ज़ीगोट-फ़ॉर्क्ड प्रक्रिया के लिए अलग-अलग माउंट टेबल बनाने के लिए लिनक्स कर्नेल नेमस्पेस का लाभ उठाता है, और फिर उस निजी नेमस्पेस में सही उपयोगकर्ता-विशिष्ट प्राथमिक बाहरी भंडारण की पेशकश करने के लिए बाइंड माउंट का उपयोग करता है।

बूट पर, सिस्टम EMULATED_STORAGE_SOURCE पर एक एकल EMULATED_STORAGE_SOURCE बाहरी संग्रहण FUSE डेमॉन की EMULATED_STORAGE_SOURCE , जो ऐप्स से छिपा होता है। Zygote कांटे के बाद, यह उपयुक्त उपयोगकर्ता-विशिष्ट उपनिर्देशिका को FUSE डेमन से EMULATED_STORAGE_TARGET तक ले EMULATED_STORAGE_TARGET ताकि बाहरी संग्रहण पथ ऐप के लिए सही तरीके से हल हो जाए। क्योंकि एक ऐप में अन्य उपयोगकर्ताओं के भंडारण के लिए सुलभ माउंट बिंदुओं का अभाव है, वे केवल उस उपयोगकर्ता के लिए संग्रहण तक पहुंच सकते हैं जो इसे शुरू किया गया था।

यह कार्यान्वयन डिफ़ॉल्ट उप-नामस्थान से ऐप नेमस्पेस में माउंट घटनाओं को फैलाने के लिए साझा सबट्री कर्नेल सुविधा का भी उपयोग करता है, जो यह सुनिश्चित करता है कि ASEC कंटेनर और OBB माउंटिंग जैसी सुविधाएँ सही तरीके से काम करती रहें। यह रूटफुट को साझा के रूप में बढ़ते हुए करता है, और फिर प्रत्येक ज़िगोट नामस्थान बनाए जाने के बाद इसे दास के रूप में रिमूव करता है।

कई बाहरी भंडारण उपकरणों

एंड्रॉइड 4.4 में शुरू, कई बाहरी भंडारण उपकरण डेवलपर्स के लिए Context.getExternalFilesDirs() , Context.getExternalCacheDirs() , और Context.getObbDirs() माध्यम से सामने आए हैं।

इन एपीआई के माध्यम से निकले बाहरी भंडारण उपकरण डिवाइस का एक अर्ध-स्थायी हिस्सा होना चाहिए (जैसे कि बैटरी डिब्बे में एसडी कार्ड स्लॉट)। डेवलपर्स को उम्मीद है कि इन स्थानों में संग्रहीत डेटा लंबे समय तक उपलब्ध होगा। इस कारण से, इन API के माध्यम से क्षणिक स्टोरेज डिवाइस (जैसे USB मास स्टोरेज ड्राइव) सामने नहीं आने चाहिए।

WRITE_EXTERNAL_STORAGE अनुमति केवल एक डिवाइस पर प्राथमिक बाहरी भंडारण के लिए लिखने का उपयोग प्रदान करना चाहिए। ऐप्स को माध्यमिक बाह्य संग्रहण उपकरणों पर लिखने की अनुमति नहीं दी जानी चाहिए, सिवाय उनके पैकेज-विशिष्ट निर्देशिकाओं के, जिन्हें संश्लेषित अनुमतियों द्वारा अनुमति दी गई हो। इस तरह से लिखना प्रतिबंधित करता है, यह सुनिश्चित करता है कि जब एप्लिकेशन अनइंस्टॉल हो जाएं तो सिस्टम फाइलों को साफ कर सकता है।

USB मीडिया समर्थन

एंड्रॉइड 6.0 पोर्टेबल भंडारण उपकरणों का समर्थन करता है जो केवल थोड़े समय के लिए डिवाइस से जुड़े होते हैं, जैसे यूएसबी फ्लैश ड्राइव। जब कोई उपयोगकर्ता एक नया पोर्टेबल डिवाइस सम्मिलित करता है, तो प्लेटफ़ॉर्म उन्हें उस उपकरण की सामग्री की प्रतिलिपि बनाने या प्रबंधित करने के लिए एक अधिसूचना दिखाता है।

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