एसडी कार्ड को "/ sdcard" (या "/ mnt / sdcard") के बजाय "/ sdcard / external_sd" पर क्यों रखा गया है?


18

मैंने हाल ही में अपने फोन को एलजी मोशन 4 जी (एंड्रॉइड 4 आईसीएस) में अपग्रेड किया है। मैं देख रहा हूँ कि sdcard पर आरोहित है /sdcard/external_sd। मैंने यह भी देखा कि यह कुछ अन्य नए मॉडलों के साथ भी ऐसा ही प्रतीत होता है। ऐप्स को sdcard के होने की उम्मीद है /sdcard। मुझे लगता है कि निर्माता बहुत सारे आंतरिक भंडारण को शामिल करना चाहते हैं, लेकिन आंतरिक भंडारण को क्यों माउंट करें /sdcard? यह एंड्रॉयड विनिर्देश मानक के कुछ फार्म के खिलाफ नहीं होना चाहिए?


4
"विनिर्देश मानक" के अनुसार, इसमें कोई समस्या नहीं होनी चाहिए: जैसा कि आप बाहरी संग्रहण पर डेवलपर्स के दस्तावेज़ में पढ़ सकते हैं , ऐप्स को एपीआई कॉल का उपयोग करके स्थान / उपलब्धी का निर्धारण करना चाहिए (यहां: getExternalStorageState () ), हार्ड- कोडिंग पथ का उपयोग नहीं करना ।
इज़ी

अच्छी बात यह है, लेकिन जाहिरा तौर पर कुछ निर्माता गलत तरीके से आंतरिक स्पेस में आने वाले ऐप्स को getExternalStorageDirectory () के माध्यम से रीडायरेक्ट कर रहे हैं। stackoverflow.com/questions/11281010/…
सेपरो

आह, अच्छा बिंदु और साथ ही - एक गैर-डेवलपर के रूप में मुझे इसकी जानकारी नहीं थी। लेकिन मुझे लगता है कि फ्लो ने बहुत अच्छी व्याख्या प्रदान की - फिर से उन बिंदुओं के बारे में
जिन्हें

जवाबों:


26

इसका कारण एंड्रॉइड का इतिहास है: एंड्रॉइड डिवाइस की पहली पीढ़ी में केवल थोड़ी मात्रा में आंतरिक भंडारण (लगभग 100-400MiB) था, जिसके तहत माउंट किया गया था /data

अगला, उस समय बाहरी, एसडी-कार्ड वाले उपकरण सामने आए। के तहत एसडी कार्ड लगाया गया था /mnt/sdcard

उसके बाद, बड़े आंतरिक भंडारण वाले उपकरण बाजार में आए। इस संग्रहण को विभाजित कर /mnt/sdcardदिया गया था , क्योंकि ऐप्स, चित्रों और इस तरह के बड़े डेटा चंक्स के लिए डिफ़ॉल्ट स्थान बन गया था। इसलिए एंड्रॉइड वातावरण के पास एक /dataऔर /mnt/sdcardनिर्देशिका होना चाहिए। इसलिए एक विभाजन था /data, दूसरे के लिए /mnt/sdcard। यही कारण है कि आपके पास स्टोरेज स्पेस कम हो सकता है ( /dataविभाजन) भले ही बहुत सारी जगह हो /mnt/sdcard

एंड्रॉइड 3.0 के साथ इस स्थिति में सुधार किया गया था: /dataऔर /mnt/sdcardअब उसी विभाजन की ओर इशारा कर रहे हैं। अच्छा काम Google, जो कुछ समय पहले किया जा सकता था। जो भी कारण है कि एंड्रॉइड 3.0 या उच्चतर पर app2sd की आवश्यकता नहीं है: आप केवल उसी वॉल्यूम के भीतर डेटा को स्थानांतरित करेंगे।

अब हम इस सवाल का जवाब देते हैं कि क्या आपका प्रश्न: चूंकि /mnt/sdcardपहले से ही आंतरिक भंडारण पर रखा गया है, एक बाहरी एसडी-कार्ड को एक अलग माउंट बिंदु का उपयोग करना होगा। और यह आरोह बिंदु Google द्वारा निर्दिष्ट नहीं है। यह हो सकता था

  • /mnt/sdcard/ext_sd
  • /mnt/external
  • /mnt/extSdCard
  • /mnt/sdcard/external_sd
  • आदि।

एपीआई कॉल getExternalStorageDirectory()आमतौर पर आंतरिक भंडारण निर्देशिका को इंगित करता है। यह व्यवहार प्रलेखित है। कर रहे हैं ओपन सोर्स प्रोजेक्ट है कि उपकरण प्रदान करते हैं एक विहित तरह से बाहरी एसडी कार्ड निर्देशिका खोजने के लिए।


क्या इसका मतलब एसडी कार्ड निर्धारित करने के लिए ऐप्स के लिए कोई "पारदर्शी तरीका" नहीं है? बेशक, isExternalStorageRemovable()यह देखना है कि क्या "बाहरी" भंडारण हटाने योग्य है, साथ ही कोई माउंट पॉइंट ( mountकमांड का उपयोग करके ) और माउंट फ़्लैग आदि के लिए जांच कर सकता है, लेकिन अगर मैं यहां गलत नहीं हूं, तो इसका मतलब है कि प्रत्येक डेवलपर की जरूरत है अपने ऐप के लिए खुद ही पता लगाने के लिए, और उसके लिए ऐसा करने के लिए कोई सरल एपीआई कॉल नहीं है?
इज़ी

यह सही है। ऐसे पुस्तकालय हैं जिन्हें मैंने जोड़ा है जो उस सुविधा को जोड़ने का प्रयास करते हैं, लेकिन ऐसा करने के लिए कोई आधिकारिक एपीआई कॉल नहीं है।
प्रवाह

यदि बाहरी संग्रहण और /dataविभाजन दोनों को मिला दिया जाता है, तो मैं अपने पीसी में इसे प्लग इन करने के लिए अपने एसडी कार्ड को सुरक्षित रूप से कैसे माउंट / अनमाउंट कर सकता हूं? यह मुझे लगता है कि अलग-अलग विभाजन होना तर्कसंगत है और मुझे नहीं लगता कि यह सब क्यों होना था।
jadkik94

यह बाहरी भंडारण नहीं है, यह तथाकथित है, "आंतरिक एसडी" और /dataविभाजन जो विलय हो जाता है।
प्रवाह

This situation was improved with Android 3.0: /data and /mnt/sdcard are now pointing to the same parition। सिर्फ FYI करें, यह कम से कम एक फोन पर नहीं चल रहा है जो Android 4.0 (Pantech फट) पर चल रहा है, जहां /data1GB ext4 पार्टीशन है और /mnt/sdcard12GB FAT32 पार्टीशन है।
netvope

3

बाहरी एसडी माउंट को मजबूर करने से /mnt/sdcardकोई तकनीकी योग्यता नहीं है, यह अधिक आंतरिक मेमोरी वाले फोन के लिए एक भेदभाव बिंदु बनाने के लिए हार्डवेयर विक्रेताओं की मदद करने का Google का तरीका है।

कोई कारण नहीं है कि अनुप्रयोगों को बाहरी कार्ड का पता लगाने का एक तरीका खोजना पड़ता है जब /mnt/sdcardस्पष्ट रूप से उस जगह पर एसडीकार्ड होना चाहिए था और बाहरी एसडी कार्ड को लोड करने के लिए Google का अपरिभाषित तरीका बाहरी एसडी कार्ड को कम उपयोगी बनाने के लिए उपभोक्ता के अनुकूल भूखंड से कम नहीं है नए Android उपकरण। कोई कारण नहीं है /dataऔर /mnt/sdcardकम आंतरिक इकाइयों के साथ कम लागत वाली इकाइयों से बड़ी आंतरिक मेमोरी वाले फोन को अलग करने के लिए निर्माता को छोड़कर एंड्रॉइड के नए संस्करण पर एक ही विभाजन में विलय करना पड़ा। यदि मर्ज किया जाना था, तब भी Google स्पष्ट रूप से परिभाषित कर सकता था मानक कोबाहरी एसडी कार्ड के लिए नए बढ़ते बिंदु यह पूरी तरह से अस्पष्ट छोड़ने के बजाय। यह पूरी तरह से एंड्रॉइड ईको-सिस्टम के "विभाजन" को एक अनाड़ी डिजाइन द्वारा रोकने में मदद कर रहा है ताकि कम लागत वाली इकाइयों के खिलाफ उच्च अंत फोन के विक्रेता के निर्माण में मदद मिल सके।

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

तो: नहीं, इसके अलावा किसी अन्य स्थान पर बढ़ते एसडी कार्ड और /mnt/sdcardकुछ नहीं, बल्कि एंड्रॉइड के नए संस्करण के तहत उच्च कीमत वाले नए फोन बेचने के लिए एक व्यवसायिक रणनीति है, इससे ज्यादा कुछ नहीं। जरा सोचिए, अगर नेक्सस 4 8 जीबी और नेक्सस 16 जीबी, दोनों 64 जीबी बाहरी एसडी कार्ड का उपयोग आवेदन और मीडिया के लिए कर सकते हैं, तो क्या किसी के लिए 16 जीबी संस्करण खरीदने का कोई कारण है? यदि अतिरिक्त SD कार्ड शामिल हैं तो अतिरिक्त 8 GB NAND मेमोरी निश्चित रूप से $ 50 मूल्य अंतर नहीं है। चूंकि एक स्मार्ट फोन में अधिकांश घटक समान (रैम, प्रोसेसर, रेडियो) होना चाहिए, अधिक लाभ मार्जिन के लिए एकमात्र क्षेत्र आंतरिक मेमोरी स्पेस है, और इसलिए अजीब बाहरी मेमरी माउंटिंग पॉइंट है।

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

मुझे एंड्रॉइड 5.0 द्वारा आश्चर्य नहीं होगा, बाहरी एसडी कार्ड समर्थन अतीत की बात होगी। क्योंकि अगर बाहरी ऐप्लिकेशंस एसडी कार्ड को ढूंढना मुश्किल है, तो ज्यादातर प्रोग्राम केवल ज्ञात /dataऔर /mnt/sdcardस्थानों का उपयोग करेंगे , अधिकांश ऐप इसके संचालन के लिए अधिक से अधिक संग्रहीत डेटा का उपयोग करते हैं, एक जीवंत उत्पाद मार्क रणनीति "पतली हवा" से बनाई गई है। "बस पर बाहरी एसडी कार्ड माउंट नहीं है /mnt/sdcard


1
अब, मैं इसे पाठ की एक दीवार कहता हूं । थोड़ा रैंटी भी लगता है। कृपया अपने उत्तर में कुछ अनुच्छेद जोड़ें। इसके अलावा, मुझे नहीं लगता कि "विलय करने का कोई कारण नहीं है" /dataऔर /mnt/sdcard, जैसा कि मुझे स्पष्ट रूप से एक कारण दिखाई देता है: आंतरिक भंडारण के विखंडन से बचना।
प्रवाह

1
यह निश्चित रूप से एक शेख़ी, डीसेक था, लेकिन चाहे, मैं आपके इनपुट की सराहना करता हूं। चीयर्स
सेपरो

और इसमें एक बात और भी है: आंतरिक एक (जैसे एलजी P880 पर) के अंदर xternal एसडी कार्ड रखने वाले उपकरणों के साथ /sdcard/external_sd, "साझा भंडारण" का बैकअप दोनों में शामिल है , और एक विशाल संग्रह बनाता है। केवल एक आसान दृष्टिकोण में आंतरिक एसडी बैकअप के लिए कोई रास्ता नहीं है। जो बहुत मायने नहीं रखता है, क्योंकि बाहरी कार्ड बैकअप के लिए बहुत आसान तरीके हैं। एक तथ्य यह है जो मुझे पागल बना देता है, जैसा कि मैंने उल्लेख डिवाइस है ...
इज़ी

2

आपको अवगत होना चाहिए (यदि रूट किया गया है) आप /system/etc/vold.fstab में जा सकते हैं और / sdcard / /mnt/external_sdInthis के लिए माउंट पॉइंट स्वैप कर सकते हैं, तो आपका sdcard आपके / sdcard पर होने की अनुमति देगा जैसा कि आप उम्मीद करते हैं। और शेष "आंतरिक भंडारण" को / mnt / external_sd पर या यदि आप पसंद करते हैं / sdcard / external_sd / पर मुहिम शुरू की जाएगी


यह फोन के कुछ मॉडलों के साथ काम करता है, लेकिन सभी नहीं। यह मेरे एलजी मोशन 4 जी, एंड्रॉइड 4.0.4 के लिए काम नहीं करता है। Thx
सेपरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.