
Android, değişmez POSIX izin sınıfları ve modları ile büyük / küçük harfe duyarlı olmayan bir dosya sistemi olarak tanımlanan geleneksel depolamaya sahip cihazları destekler. Geleneksel depolama kavramı, taklit edilmiş ve taşınabilir depolamayı kapsar. Taşınabilir depolama, sistem tarafından benimsenmeyen ve bu nedenle biçimlendirilmeyen ve şifrelenmeyen veya belirli bir cihaza bağlanmayan herhangi bir harici depolama olarak tanımlanır. Geleneksel harici depolama, depolanan veriler için minimum koruma sağladığından, sistem kodu hassas verileri harici depolamada saklamamalıdır. Özellikle, yapılandırma ve günlük dosyaları yalnızca etkin bir şekilde korunabilecekleri dahili depolamada saklanmalıdır.
Çok kullanıcılı harici depolama
Android 4.2 sürümünden itibaren, cihazlar birden çok kullanıcıyı destekleyebilir ve harici depolama aşağıdaki kısıtlamaları karşılamalıdır:
- Her kullanıcının kendi yalıtılmış birincil harici depolaması olmalı ve diğer kullanıcıların birincil harici depolamasına erişimi olmamalıdır.
-
/sdcard
yolu, bir işlemin çalıştığı kullanıcıya bağlı olarak doğru kullanıcıya özgü birincil harici depolamaya çözümlemelidir. -
Android/obb
dizinindeki büyük OBB dosyalarınınAndroid/obb
, bir optimizasyon olarak birden çok kullanıcı arasında paylaşılabilir. - İkincil harici depolama, sentezlenmiş izinlerin izin verdiği pakete özel dizinler haricinde uygulamalar tarafından yazılmamalıdır.
Bu özelliğin varsayılan platform uygulaması, her Zygote çatallı işlem için yalıtılmış bağlama tabloları oluşturmak için Linux çekirdeği ad alanlarından yararlanır ve ardından bu özel ad alanına doğru kullanıcıya özgü birincil harici depolamayı sunmak için bağlama bağlarını kullanır.
Önyüklemede, sistem, uygulamalardan gizlenen EMULATED_STORAGE_SOURCE
adresinde tek bir taklit edilmiş harici depolama FUSE daemon'u bağlar. Zygote çatallarından sonra, harici depolama yollarının uygulama için doğru bir şekilde çözümlenmesi için, FUSE arka plan programının altından uygun kullanıcıya özel alt dizini EMULATED_STORAGE_TARGET
. Bir uygulama, diğer kullanıcıların depolama alanı için erişilebilir bağlantı noktalarına sahip olmadığından, yalnızca başlatıldığı kullanıcının depolama alanına erişebilirler.
Bu uygulama ayrıca, bağlama olaylarını varsayılan kök ad alanından uygulama ad alanlarına yaymak için paylaşılan alt ağaç çekirdeği özelliğini kullanır, bu da ASEC kapsayıcıları ve OBB bağlama gibi özelliklerin doğru şekilde çalışmaya devam etmesini sağlar. Bunu, rootf'leri paylaşımlı olarak bağlayarak ve ardından her Zygote ad alanı oluşturulduktan sonra onu slave olarak yeniden bağlayarak yapar.
Çoklu harici depolama cihazları
Android 4.4'ten başlayarak, Context.getExternalFilesDirs()
, Context.getExternalCacheDirs()
ve Context.getObbDirs()
aracılığıyla geliştiricilere birden fazla harici depolama cihazı sunulmaktadır.
WRITE_EXTERNAL_STORAGE
izni, yalnızca bir cihazdaki birincil harici depolamaya yazma erişimi sağlamalıdır. Uygulamaların, sentezlenmiş izinlerin izin verdiği pakete özel dizinleri dışında ikincil harici depolama cihazlarına yazmasına izin verilmemelidir. Yazmaları bu şekilde kısıtlamak, sistemin uygulamalar kaldırıldığında dosyaları temizleyebilmesini sağlar.
USB ortam desteği
Android 6.0, USB flash sürücüler gibi cihaza yalnızca kısa bir süre için bağlı olan taşınabilir depolama cihazlarını destekler. Bir kullanıcı yeni bir taşınabilir cihaz yerleştirdiğinde, platform, o cihazın içeriğini kopyalamasına veya yönetmesine izin veren bir bildirim gösterir.
Android 6.0'da, benimsenmeyen tüm cihazlar taşınabilir olarak kabul edilir. Taşınabilir depolama yalnızca kısa bir süre için bağlandığı için platform, medya tarama gibi ağır işlemlerden kaçınır. Üçüncü taraf uygulamalar, taşınabilir depolamadaki dosyalarla etkileşim kurmak için Depolama Erişimi Çerçevesinden geçmelidir; doğrudan erişim, gizlilik ve güvenlik nedenleriyle açıkça engellenmiştir.