สับสนโดยสถานที่หลายแห่งของเสมือน / sdcard /


46

อุปกรณ์บางอย่าง (เช่น Nexus 4) ของฉันไม่มีช่องเสียบภายนอกสำหรับการ์ด SD มีโฟลเดอร์รูทที่เรียก/sdcard/ว่าวิธีเดียวกัน แต่ฉันก็พบเส้นทางอื่น ๆ ที่ชี้ไปที่ไฟล์เดียวกัน - ต้องมีการเปลี่ยนเส้นทางบางอย่างเกิดขึ้น (ฉันคิดว่านี่เรียกว่าsymlinksใน Linux)

พา ธ ทั้งหมดเหล่านี้มีไฟล์เดียวกัน:

/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/

เส้นทางใดที่เป็น "ของจริง" แล้วเส้นทางอื่นล่ะ? สิ่งที่พวกเขาใช้ทำไมพวกเขาอยู่?

คำตอบ:


38

การบรรยายที่แนะนำ: ทำไม / sdcard / เปลี่ยนเป็น / sdcard / 0 / ด้วย 4.2? .

กล่าวโดยย่อ: เกี่ยวข้องกับฟังก์ชั่นการใช้งานของผู้ใช้หลายคนที่ใช้งานกับ Jelly Bean:

  • /storage/emulated/0/: สำหรับความรู้ของฉันนี่หมายถึง "emulated MMC" ("ส่วนของเจ้าของ") โดยปกติแล้วนี่คือสิ่งที่อยู่ภายใน "0" หมายถึงผู้ใช้ที่นี่ "0" คือผู้ใช้คนแรกที่เป็นเจ้าของอุปกรณ์ หากคุณสร้างผู้ใช้เพิ่มเติมจำนวนนี้จะเพิ่มขึ้นสำหรับแต่ละคน
  • /storage/emulated/legacy/เหมือนก่อนหน้า แต่ชี้ไปที่ส่วนหนึ่งของผู้ใช้ที่ทำงานอยู่ในปัจจุบัน (สำหรับเจ้าของสิ่งนี้จะเป็นการเชื่อมโยงไปยัง/storage/emulated/0/) ดังนั้นเส้นทางนี้ควรนำผู้ใช้ทุกคนไปสู่ ​​"ส่วน" ของเขา
  • /sdcard/: ตามความคิดเห็นโดย Shywimนี่คือ symlink ไปที่ ...
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0+)
  • /storage/sdcard0/: เนื่องจากไม่มีlegacyจี้ที่นี่ (ดูความคิดเห็นด้านล่าง), "0" ในกรณีนี้ค่อนข้างจะระบุอุปกรณ์ (การ์ด) เอง ในที่สุดก็สามารถเชื่อมต่อเครื่องอ่านการ์ดกับ SDCard อีกเครื่องผ่านทาง OTG ซึ่งจะกลายเป็น/storage/sdcard1(ไม่มีข้อพิสูจน์สำหรับการเดา - แต่ฉันจะบอกว่าดี)

ถึงแม้ว่าใครจะได้ข้อสรุปก็ควรมี/storage/sdcard/legacyเช่นกัน แต่ก็ไม่มี (ดูความคิดเห็น) - ซึ่งเหมาะสมกับสมมติฐานของฉันเกี่ยวกับตัวเลขในที่นี้ไม่เกี่ยวข้องกับผู้ใช้ 0 "จะเป็นหนึ่งในช่องเสียบการ์ดของอุปกรณ์เสมอดังนั้นไม่จำเป็นต้องใช้" symlink แบบดั้งเดิม "ที่นี่


ขอบคุณ! และไม่ไม่มี/storage/sdcard/legacyเส้นทาง
Torben Gundtofte-Bruun

2
แปลก. แต่นั่นอาจเกี่ยวข้องกับความจริงที่ว่าแทบจะไม่มีสิทธิ์ใด ๆ ใน sdcard จริง (เนื่องจากระบบไฟล์ FAT ไม่รองรับพวกเขา) สังเกตเห็นความแตกต่าง ( /sdcard0/กับ/emulated/0), "0" ที่นี่อาจมีไว้สำหรับกรณีที่หนึ่งแนบ SDCards หลายผ่านเครื่องอ่านการ์ดและโหมดโฮสต์ USB แล้ว แค่เดาไม่จริงยาก - แต่ฉันจะพูดดี
Izzy

ตอบปรับปรุงข้อมูลตามนั้น :)
Izzy

2
/sdcard/เป็นเพียงsymlink/storage/sdcard0/ไป ในรุ่นเก่ากว่า 4.0.0 /mnt/sdcard/มันเป็น
Matthieu Harlé

และฉันคิดว่าบน Android 4.0+ /mnt/sdcard/เป็น symlink /storage/sdcard0/หรือเปล่า? เนื่องจากทั้งคู่สามารถใช้งานบน Nexus 4 ของฉันได้
MrWhite

2

ใช่เล็กน้อยทำให้เกิดความสับสน แต่สิ่งเหล่านี้เป็นเส้นทางสำรองสำหรับเค้าโครงหน่วยความจำ

/ mnt / sdcard0 / (การ์ด SD เสมือนภายใน)

และอิซซี่ของคุณถูกต้องหากมีการเชื่อมต่ออุปกรณ์เพิ่มเติม แต่การตั้งชื่ออาจแตกต่างกันไปขึ้นอยู่กับอุปกรณ์

อดีต / mnt / sdcard1 / (การ์ด SD จริงในช่องเสียบ SD)

แต่อุปกรณ์อื่น ๆ เช่นแฟลชไดรฟ์ Usb เชื่อมต่อกับอะแดปเตอร์อาจถูกเรียก

/ mnt / media_rw / usbdisk (android kitkat 4.4 ขึ้นไป?) หรือ / mnt / usbdisk (jellybean 4.1 - 4.2)


1
ใช่การตั้งชื่ออาจขึ้นอยู่กับอุปกรณ์ / ผู้ผลิต / ROM แต่มักจะ/mnt/*เป็นเพียง symlink ในทุกกรณีเหล่านั้น - กับ "ม้าจริง" ที่อาศัยอยู่ด้านล่าง/storage:)
อิซซี่

ดีฉันมีโฟลเดอร์เชลล์ภายใต้mntด้วย ฉันเปลี่ยน ROM ของอุปกรณ์บ่อยๆดังนั้นสำหรับรอมเหล่านั้นซึ่งทำให้ SDcard ภายนอกเป็นหน่วยความจำเริ่มต้นโฟลเดอร์เชลล์จะทำงานเป็นหน่วยความจำภายในของฉันและสำหรับรอมอื่น ๆ ที่ไม่สลับ sdcard เป็นหน่วยความจำภายในเชลล์ก็ไม่ได้มา เป็นภาพ มันเพิ่งจะอยู่ที่นั่นในโฟลเดอร์ที่มีข้อมูลทั้งหมดเหมือนเดิม แต่ไม่สามารถเข้าถึงได้โดยตัวจัดการไฟล์ในเครื่อง อยากรู้ว่ามันคืออะไรกันแน่
Ali_Waris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.