SD kart neden “/ sdcard” (veya “/ mnt / sdcard”) yerine “/ sdcard / external_sd” ye monte edildi?


18

Yakın zamanda telefonumu bir LG Motion 4G'ye (Android 4 ICS) yükselttim. SD kartın takılı olduğunu görüyorum /sdcard/external_sd. Bunun diğer bazı yeni modellerle aynı göründüğünü de fark ettim. Uygulamalar sdcard'ın adresinde olmasını bekliyor /sdcard. Üreticilerin çok fazla dahili depolama alanı eklemek istediklerini varsayıyorum, ancak neden dahili depolama birimini takabilirsiniz /sdcard? Bu bir tür Android spesifikasyon standardına karşı olmamalı mı?


4
"Spesifikasyon standardı" ile ilgili olarak, bu sorun yaratmaz : Harici Depolama alanındaki geliştiricilerin belgelerinde okuyabileceğiniz gibi , uygulamalar API çağrılarını (burada: getExternalStorageState () ) kullanarak sabit kodlanmış yollar kullanmadan konumu / kullanılabilirliği belirlemelidir .
Izzy

İyi bir nokta Izzy, ancak görünüşe göre bazı üreticiler uygulamaları getExternalStorageDirectory () aracılığıyla yanlış bir şekilde iç alana yönlendiriyorlar. stackoverflow.com/questions/11281010/…
Sepero

Ah, iyi bir nokta - geliştirici olmayan biri olarak bunun farkında değildim. Ama Flow'un çok iyi bir açıklama sağladığını görüyorum - yine farkında olmadığım puanlarla ...
Izzy

Yanıtlar:


26

Nedeni Android'in geçmişi: İlk nesil Android cihazların altına monte edilmiş sadece az miktarda dahili depolama alanı (yaklaşık 100-400MiB) vardı /data.

Ardından, o zaman harici SD kartlı cihazlar çıktı. SD kart altına monte edildi /mnt/sdcard.

Bundan sonra, büyük dahili depolama alanına sahip cihazlar piyasaya çıktı. Bu depolama bölümü /mnt/sdcard, uygulamalardan, resimlerden ve benzerlerinden büyük veri parçaları için varsayılan yer haline geldiğinden paylaştırıldı . Bu yüzden Android ortamının bir /datave /mnt/sdcarddizini olması gerekiyordu. Bu nedenle bir bölüm içindi /datadiğer, /mnt/sdcard. Depolama alanı /databol miktarda olsa bile azalır ( bölüm) /mnt/sdcard.

Bu durum Android 3.0 ile geliştirildi: /datave /mnt/sdcardşimdi aynı bölüme işaret ediyorlar. İyi iş Google, bu daha önce yapılmış olabilir. Ayrıca Android 3.0 veya sonraki sürümlerde app2sd'ye artık ihtiyaç duyulmamasının nedeni de: Verileri yalnızca aynı birim içinde taşıyabilirsiniz.

Şimdi sorunuza cevap geliyoruz: /mnt/sdcardZaten dahili depolama birimine monte edildiğinden, harici bir SD kart farklı bir bağlama noktası kullanmalıdır. Ve bu bağlama noktası Google tarafından belirtilmemiştir. Olabilir

  • /mnt/sdcard/ext_sd
  • /mnt/external
  • /mnt/extSdCard
  • /mnt/sdcard/external_sd
  • vb.

API çağrısı getExternalStorageDirectory()genellikle dahili depolama dizinini gösterir. Bu davranış belgelenmiştir. Orada araçları sağlamak açık kaynak projeleri kanonik biçimde harici SD kart dizini bulmak için.


Bu, uygulamaların SD kartı belirlemesinin "şeffaf bir yolu" olmadığı anlamına mı geliyor? Tabii ki, isExternalStorageRemovable()"harici" depolama çıkarılabilir olup olmadığını görmek için, artı biri (noktaları kullanarak mount) montaj noktalarını belirleyebilir ve montaj bayrakları vb kontrol edebilirsiniz. Ama burada yanlış almazsanız, bu hala her geliştirici ihtiyacı anlamına gelir ve kendisi için bunu yapmak için basit bir API çağrısı yok mu?
Izzy

Bu doğru. Bağladığım, bu özelliği eklemeye çalışan kütüphaneler var, ancak bunun için resmi bir API çağrısı yok.
Akış

Hem harici depolama birimi hem de /databölüm birleştirilirse, SD kartımı, örneğin bilgisayarıma takmak için nasıl güvenli bir şekilde bağlayabilir / çıkarabilirim? Bana öyle geliyor ki, ayrı bölümlere sahip olmak mantıklı ve tüm bunların neden olması gerektiğini anlamıyorum.
jadkik94

Harici depolama değil, sözde "dahili SD" ve /databirleştirilen bölüm.
Akış

This situation was improved with Android 3.0: /data and /mnt/sdcard are now pointing to the same parition. Sadece FYI, /data1GB ext4 bölümü ve /mnt/sdcard12GB FAT32 bölümü olan Android 4.0 (Pantech Burst) çalıştıran en az bir telefonda bu doğru değil .
netvope

3

Harici SD yuvasını zorlamanın /mnt/sdcardteknik bir değeri yoktur, Google'ın donanım üreticilerinin daha fazla dahili belleğe sahip telefonlar için bir farklılaşma noktası oluşturmasına yardımcı olma yoludur.

Uygulamaların /mnt/sdcard, sdcard'ın olması gereken yerdeyken harici kartı bulmak için bir yol bulmasının bir nedeni yoktur ve Google'ın harici SD kartı takmanın tanımlanmamış yolu, harici SD kartı daha az kullanışlı hale getirmek için tüketici dostu arsadan daha azdır. daha yeni Android cihazlar. Neden HAYIR nedeni vardır /datave /mnt/sdcarddaha az dahili bellek ile daha düşük maliyet birimlerinden daha büyük dahili hafıza ile ayırt etme telefonlara üreticiler hariç Android'in daha yeni bir sürümü üzerinde aynı bölüme birleştirilecek gerekiyordu. Birleştirme yapılması gerekse bile Google açıkça bir STANDART tanımlamış olabilirharici SD kartlar için tamamen belirsiz bırakmak yerine yeni montaj noktası. Bu, daha yüksek dahili telefonların daha az dahili belleğe sahip daha düşük maliyetli birimlere karşı satıcıya farklılaşmasına yardımcı olmak için beceriksiz bir tasarımla Android eko sisteminin daha fazla "segmentasyonunu" önlemeye karşı tamamen çalışıyor.

Android uygulama ikili dosyaları küçük, 1-2 GB dahili belleğe sahip telefonlar yüzlerce uygulama için yeterli alandan daha fazla alana sahip olmalı ve tüm büyük veriler harici bir SD kartta güvenli bir şekilde sıkışmış olabilir. Ancak daha sonra satıcılar, daha yüksek son ürünlerini farklılaştırmanın bir yoluna sahip olmaları gerektiğini fark ettiler ve daha yüksek bir dahili belleğin bu şemanın bir parçası olduğunu iddia etmek ve harici belleğin yararlılığını sakatlamak, bu şemanın tam olarak çalışması için gerekli olan diğer entegre kısımdır. harici sd kartları ve standartlaştırılmamış montaj noktalarını bulmak için daha az yardımcı API.

Yani: Hayır, SD kartı başka bir yere monte etmek /mnt/sdcard, Android'in yeni sürümü altında daha yüksek fiyatlı yeni telefonları satmak için bir iş stratejisinden başka bir şey değildir , bundan başka bir şey değildir. Nexus 4 8GB ve Nexus 16GB'nin ikisi de uygulama ve medya için 64GB harici sd kart kullanabiliyorsa, herkesin 16 GB sürümünü satın almasının bir nedeni var mı? Harici SD kartlar varsa, fazladan 8 GB NAND bellek kesinlikle 50 $ fiyat farkına değmez. Bir akıllı telefondaki çoğu bileşenin hemen hemen aynı olması gerektiğinden (RAM, işlemci, radyolar), daha fazla kar marjı için kalan tek alan dahili bellek alanı ve dolayısıyla garip harici bellek montaj noktasıdır.

Ayrıca herkes de "Google" markalı android cihazların mevcut mahsul harici SD desteği olmadığını fark ettiniz mi? Bu eğilim "en üst seviye" Android cihazlarda genişlemeye devam edecek. Harici SD kart desteği, Android cihazların iPhone'un mobil pazardaki hakimiyetini geçmesi için önemli bir farklılaşma oldu. Şimdi sayılar oyunda üstün Android iktidarı ile, bu kâr saptırma uygulaması çok daha uzun süre tutulması için çok az ihtiyaç vardır.

Android 5.0 beni şaşırtmayacak, harici SD kart desteği artık geçmişte kaldı. Çünkü harici SD kart bulmak için uygulamalar zorsa, çoğu program sadece bilinen /datave /mnt/sdcardkonumları kullanacak, çoğu uygulama çalışması için daha fazla depolanmış veri kullanacak, "ince hava" dan canlı bir ürün işaretleme stratejisi oluşturuldu "sadece harici SD kartı takmadan /mnt/sdcard.


1
Şimdi buna metin duvarı diyorum . Ayrıca biraz ranty görünüyor. Lütfen cevabınıza bazı paragraflar ekleyin. "Birleştirme için hiçbir neden yoktur neden Ayrıca ben alamadım /datave /mnt/sdcard" Ben açıkça bir neden görmüyorum olarak,: dahili depolama parçalanması kaçınmak.
Akış

1
Bu kesinlikle bir ranttı, Deecee, ama ne olursa olsun, girdinizi takdir ediyorum. Şerefe
Sepero

Ve bir şey daha var: xternal SD kartını dahili olanın içine yerleştiren cihazlarla (örneğin /sdcard/external_sd, LG P880'de), "paylaşılan depolamayı" yedeklemek her ikisini de içerir ve büyük bir arşiv oluşturur. Dahili SD'yi yalnızca kolay bir yaklaşımla yedeklemenin hiçbir yolu yoktur. Harici kartı yedeklemenin çok daha kolay yolları olduğundan, bu çok mantıklı değil. Bahsedilen cihaza sahip olduğum için beni çıldırtan bir gerçek ...
Izzy

2

/System/etc/vold.fstab adresine gidebilmeniz (köklü ise) / sdcard ve /mnt/external_sd için bağlama noktalarını değiştirebileceğinizden emin olmanız gerekir; bu, sdcard'ınızın beklediğiniz gibi / sdcard'da olmasına izin verir ve kalan "dahili depolama alanı" / mnt / external_sd üzerine veya / sdcard / external_sd /


Bu, bazı telefon modellerinde çalışır, ancak hepsi için geçerli değildir. LG Motion 4G, Android 4.0.4 için çalışmıyor. Thx
Sepero
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.