Bingung dengan banyaknya lokasi virtual / sdcard /

46

Beberapa perangkat (seperti Nexus 4 saya) tidak memiliki slot eksternal untuk Kartu SD. Sebaliknya, ada folder root bernama /sdcard/yang diperlakukan dengan cara yang sama. Tapi saya juga menemukan jalur lain yang semuanya menunjuk ke file yang sama - pasti ada semacam pengalihan (saya pikir ini disebut symlinks di Linux).

Semua jalur ini berisi file yang sama:

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

Jalur mana yang merupakan jalur "aktual"? Bagaimana dengan jalur lain? Untuk apa mereka digunakan, mengapa mereka ada?

Torben Gundtofte-Bruun
sumber

Jawaban:

38

Rekomendasi kuliah: Mengapa / sdcard / berubah menjadi / sdcard / 0 / dengan 4.2? .

Singkatnya: Ini ada hubungannya dengan fungsionalitas multi-pengguna yang diperkenalkan dengan Jelly Bean:

  • /storage/emulated/0/: sepengetahuan saya, ini mengacu pada "MMC yang ditiru" ("bagian pemilik"). Biasanya ini yang internal. "0" adalah singkatan dari pengguna di sini, "0" adalah pengguna pertama alias pemilik perangkat. Jika Anda membuat pengguna tambahan, nomor ini akan bertambah untuk masing-masing.
  • /storage/emulated/legacy/seperti sebelumnya, tetapi menunjuk ke bagian pengguna yang sedang bekerja (untuk pemilik, ini akan menjadi symlink ke /storage/emulated/0/). Jadi jalur ini harus membawa setiap pengguna ke "bagian" nya.
  • /sdcard/: Menurut komentar oleh Shywim , ini adalah symlink ke ...
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0+)
  • /storage/sdcard0/: Karena tidak ada legacyliontin di sini (lihat komentar di bawah), "0" dalam hal ini lebih tepatnya mengidentifikasi perangkat (kartu) itu sendiri. Seseorang bisa, pada akhirnya, menghubungkan pembaca kartu dengan SDCard lain melalui OTG, yang kemudian akan menjadi /storage/sdcard1(tidak ada bukti untuk itu, hanya tebakan - tapi saya akan mengatakan yang baik)

Meskipun orang mungkin sampai pada kesimpulan harus ada /storage/sdcard/legacyjuga, tidak ada (lihat komentar) - yang sepenuhnya masuk akal dengan asumsi saya angka-angka di sini tidak terkait dengan pengguna, tetapi lebih kepada kemungkinan beberapa kartu: " 0 "akan selalu menjadi yang ada di slot kartu perangkat, jadi tidak perlu untuk" legacy symlink "di sini.

Izzy
sumber
Terima kasih! Dan tidak, tidak ada /storage/sdcard/legacyjalan.
Torben Gundtofte-Bruun
2
Aneh. Tapi itu mungkin ada hubungannya dengan fakta bahwa hampir tidak ada izin pada sdcard nyata (karena sistem file FAT tidak mendukung mereka). Memperhatikan perbedaan ( /sdcard0/versus /emulated/0), "0" di sini mungkin dimaksudkan untuk case satu yang melampirkan beberapa SDcard melalui pembaca kartu dan mode host USB. Hanya tebakan, bukan fakta yang sulit - tapi saya akan mengatakan yang baik.
Izzy
Jawaban diperbarui sesuai :)
Izzy
2
/sdcard/hanyalah sebuah symlink ke /storage/sdcard0/. Pada versi yang lebih lama dari 4.0.0, itu /mnt/sdcard/.
Matthieu Harlé
Dan saya berasumsi, di Android 4.0+, /mnt/sdcard/apakah symlink /storage/sdcard0/? Karena keduanya dapat dinavigasi pada Nexus 4.
MrWhite
2

Ya agak membingungkan tetapi ini adalah jalur alternatif untuk tata letak memori

/ mnt / sdcard0 / (Kartu SD Virtual Internal)

dan Izzy Anda benar jika lebih banyak perangkat terhubung, tetapi penamaan bisa berbeda tergantung pada perangkat.

ex. / mnt / sdcard1 / (Kartu SD Fisik dalam slot SD)

tetapi perangkat lain seperti USB flash drive yang terhubung dengan adaptor bisa disebut

/ mnt / media_rw / usbdisk (kitkat android 4.4 atau lebih tinggi?) atau / mnt / usbdisk (jellybean 4.1 - 4.2)

XDarkMario
sumber
1
Ya, penamaan mungkin tergantung pada perangkat / pabrikan / ROM. Tapi biasanya, /mnt/*hanya symlink dalam semua kasus - dengan "tunggangan nyata" yang berada di bawah /storage:)
Izzy
Yah, saya punya folder shell di bawah mnt juga. Saya sering mengganti ROM perangkat dan dengan demikian, untuk ROM tersebut, yang menjadikan SDcard eksternal sebagai memori default, folder shell berperilaku sebagai memori internal saya, dan untuk ROM lain yang tidak menukar sdcard sebagai memori internal, shell bahkan tidak datang ke dalam gambar. Itu hanya tetap ada di folder dengan semua data utuh, tetapi tidak dapat diakses oleh manajer file lokal. Ingin tahu, apa sebenarnya itu.
Ali_Waris