Harici depolama alanı, vold
başlangıcının bir kombinasyonuyla yönetilir
hizmet ve StorageManagerService
sistem hizmeti. Montaj teçhizatı
fiziksel harici depolama birimleri vold
tarafından işlenir.
medyayı uygulamalara sunmadan önce hazırlamak için hazırlık işlemleri gerçekleştirir.
Not: Android 8.0'da,
MountService
sınıfın adı şu şekilde değiştirildi:
StorageManagerService
.
Dosya eşlemeleri
Android 4.2.2 ve önceki sürümlerde cihaza özel vold.fstab
yapılandırma dosyası, sysfs cihazlarından dosya sistemi ekleme işlemine eşlemeleri tanımlar
noktalarından oluşur ve her satır şu biçimdedir:
dev_mount <label> <mount_point> <partition> <sysfs_path> [flags]
label
: Cildin etiketi.mount_point
: Birimin eklenmesi gereken dosya sistemi yolu.partition
: Bölüm numarası (1 tabanlı) veya "otomatik" bölümüne ekleyin.sysfs_path
: Bu bağlantı noktasını sağlayabilecek cihazlara giden bir veya daha fazla sysfs yolu puan. Boşluklarla ayrılır ve her biri/
ile başlamalıdır.flags
: İsteğe bağlı olarak virgülle ayrılmış işaret listesi,/
içermemelidir. Olası değerler arasındanonremovable
veencryptable
bulunur.
Android 4.3 ve sonraki sürümleri için init, vold ve
kurtarma /fstab.<device>
dosyasında birleştirildi. Harici
vold
tarafından yönetilen depolama birimleri için girişlerde,
şu biçimdedir:
<src> <mnt_point> <type> <mnt_flags> <fs_mgr_flags>
src
: Syfs altındaki yol (genellikle /sys konumuna eklenir) sağlayabilir. Yol,/
ile başlamalıdır.mount_point
: Birimin eklenmesi gereken dosya sistemi yolu.type
: Birimdeki dosya sisteminin türü. Harici kartlarda bu genelliklevfat
.mnt_flags
:Vold
, bu alanı yoksayar ve ayarlanmalıdır varış noktası:defaults
fs_mgr_flags
:Vold
, birleştirilmiş fstab'deki tüm satırları yoksayar bu alandavoldmanaged=
işaretini içermeyen uygulamalar. Bu işaret, ardından kartı açıklayan bir etiket ve bölüm numarası veya sözcüğün ardındanauto
Örnek:voldmanaged=sdcard:auto
. Olası diğer işaretler:nonremovable
,encryptable=sdcard
,noemulatedsd
veencryptable=userdata
.
Yapılandırma ayrıntıları
Çerçeve düzeyindeki ve bu düzeyin üzerindeki harici depolama etkileşimleri işlenir
StorageManagerService
tarihine kadar geçerlidir. Şuradaki yapılandırma değişiklikleri nedeniyle:
Android 6.0 (depo_list.xml kaynak yer paylaşımının kaldırılması gibi),
yapılandırma ayrıntıları iki kategoriye ayrılır.
Android 5.x ve önceki sürümler
Cihaza özel storage_list.xml
yapılandırması
dosyası, genellikle bir frameworks/base
yer paylaşımı üzerinden sağlanan
özellikleri ve kısıtlamaları hakkında daha fazla bilgi edinin. <StorageList>
öğesi
bir veya daha fazla <storage>
öğesi içeriyor ve bunlardan tam olarak biri işaretlenmelidir
birincil. <storage>
özellikleri şunlardır:
mountPoint
: Bu eklemenin dosya sistemi yolu.storageDescription
: Bu ekleme işlemini açıklayan dize kaynağı.primary
: Bu ekleme, birincil harici depolamaysa true.removable
: bu ekleme noktasında fiziksel SD gibi çıkarılabilir medya varsa doğru kartını inceleyebilirsiniz.emulated
: Bu ekleme emülasyonluysa ve dahili depolama alanı tarafından destekleniyorsa true, bir FUSE arka plan programı kullanıyor olabilirsiniz.mtp-reserve
: MTP'nin ücretsiz olarak ayırması gereken depolama alanı sayısı depolama alanına sahip olursunuz. Yalnızca ekleme işlemi emülasyonlu olarak işaretlendiğinde kullanılır.allowMassStorage
: Bu bağlantı birimi, USB yığın depolama birimi üzerinden paylaşılabiliyorsa true.maxFileSize
: MB cinsinden maksimum dosya boyutu.
Cihazlar, büyük/küçük harfe duyarlı olmayan bir emülasyon yaparak harici depolama alanı sağlayabilir.
dahili depolama destekli izinsiz dosya sistemi. Bir olası
uygulama, system/core/sdcard
içindeki FUSE arka plan programı tarafından sağlanmaktadır.
Cihaza özel bir init.rc
hizmeti olarak eklenmelidir:
# virtual sdcard daemon running as media_rw (1023) service sdcard /system/bin/sdcard <source_path> <dest_path> 1023 1023 class late_start
Burada source_path
yedek dahili depolama, dest_path
ise yedek depolama alanıdır
hedef ekleme noktası.
Cihaza özel bir init.rc
komut dosyası yapılandırılırken EXTERNAL_STORAGE
ortam değişkeni, birincil harici ortama giden yol olarak tanımlanmalıdır.
depolama alanına sahip olursunuz. /sdcard
yolu da aynı konuma çözümlenmelidir, muhtemelen
sembolik bağlantılardan gelir. Bir cihaz, harici depolamanın konumunu ayarlar
eski yolların çalışmaya devam etmesi için sembolik bağlantılar oluşturulmalıdır.
Android 6.0
Depolama alt sisteminin yapılandırması artık
cihaza özel fstab
dosyası ve bazı geçmiş statik yapılandırma dosyaları/değişkenleri
daha dinamik bir davranışı desteklemek için kaldırıldı:
storage_list.xml
kaynak yer paylaşımı kaldırıldı ve artık çerçeve tarafından kullanılmıyor. Depolama cihazları artıkvold
tarafından algılandığında dinamik olarak yapılandırılıyor.EMULATED_STORAGE_SOURCE/TARGET
ortam değişkeni kaldırıldı ve artık Zygote tarafından şu işlemler için kullanılmıyor: kullanıcıya özel ekleme noktalarını yapılandırın. Bunun yerine kullanıcı ayırma zorunlu kılındı kullanıcıya özel GID'lerle çalışır ve birincil paylaşılan depolama alanı, çalışma zamanındavold
tarafından yerine eklenir.- Geliştiriciler modellere bağlı olarak, yolları dinamik veya statik olarak oluşturmaya devam edebilir.
en iyi yöntemin
ne olduğunu öğreneceğiz. Yola UUID'nin eklenmesi, yapılacak her kartı tanımlar
geliştiriciler için konum netleştirmesidir. (Örneğin,
/storage/ABCD-1234/report.txt
açıkça/storage/DCBA-4321/report.txt
ile farklı bir dosyadır.)
- Geliştiriciler modellere bağlı olarak, yolları dinamik veya statik olarak oluşturmaya devam edebilir.
en iyi yöntemin
ne olduğunu öğreneceğiz. Yola UUID'nin eklenmesi, yapılacak her kartı tanımlar
geliştiriciler için konum netleştirmesidir. (Örneğin,
- Sabit kodlu FUSE hizmetleri, cihaza özel
init.rc
dosyalarından kaldırıldı. Bunun yerine, gerektiğindevold
hizmetinden dinamik olarak çatallanmaya başlandı.
Android 6.0, bu yapılandırma değişikliklerine ek olarak dahili hale getirebilirsiniz. Android 6.0 cihazlarda gibi görünüyor.
Kabul edilebilir depolama alanı
fstab
içinde uyarlanabilir bir depolama cihazını belirtmek için fs_mgr_flags
alanında encryptable=userdata
özelliğini kullanın. Tipik bir tanımı aşağıda bulabilirsiniz:
/devices/platform/mtk-msdc.1/mmc_host* auto auto defaults voldmanaged=sdcard1:auto,encryptable=userdata
Bir depolama cihazı kullanıldığında platform, cihazdaki içerikleri siler ve İki bölümü tanımlayan GUID bölümü tablosu:
- gelecekte kullanım için ayrılmış küçük, boş bir
android_meta
bölümü. Bölüm türü GUID'si: 19A710A2-B3CA-11E4-B026-10604B889DCF. - dm-crypt kullanılarak şifrelenmiş ve çekirdek özelliklerine bağlı olarak
ext4
veyaf2fs
kullanılarak biçimlendirilmiş büyük birandroid_ext
bölümü. Bölüm türü GUID'si: 193D1EA4-B3CA-11E4-B075-10604B889DCF.
Taşınabilir depolama birimi
fstab
sisteminde, voldmanaged
özelliğine sahip depolama cihazları, başka bir özellik olmadıkça varsayılan olarak taşınabilir kabul edilir.
örneğin encryptable=userdata
tanımlanır. Örneğin, USB OTG cihazların tipik bir tanımı aşağıda verilmiştir:
/devices/*/xhci-hcd.0.auto/usb* auto auto defaults voldmanaged=usb:auto
Platform, ekleme işleminden önce dosya sistemi türlerini algılamak için blkid
kullanır ve kullanıcılar
medya dosyası oluşturabilirsiniz.