Geleneksel depolama

Android harici depolama HAL simgesi

Android, geleneksel depolama alanına sahip cihazları destekler. Bu depolama alanı, sabit POSIX izin sınıfları ve modlarına sahip, büyük/küçük harf duyarlı olmayan bir dosya sistemi olarak tanımlanır. Geleneksel depolama alanı kavramı, taklit edilen ve taşınabilir depolama alanlarını kapsar. Taşınabilir depolama alanı, sistem tarafından benimsenmeyen ve bu nedenle biçimlendirilmeyen, şifrelenmeyen veya belirli bir cihaza bağlı olmayan harici depolama alanı olarak tanımlanır. Geleneksel harici depolama alanı, depolanan veriler için minimum düzeyde koruma sunduğundan sistem kodu, hassas verileri harici depolamada saklamamalıdır. Daha açık belirtmek gerekirse, yapılandırma ve günlük dosyaları yalnızca etkili bir şekilde korunabilecekleri dahili depolama alanında depolanmalıdır.

Çok kullanıcılı harici depolama alanı

Android 4.2'den itibaren cihazlar birden fazla kullanıcıyı destekleyebilir ve harici depolama alanı aşağıdaki kısıtlamaları karşılamalıdır:

  • Her kullanıcının kendi izole birincil harici depolama alanı olmalıdır ve diğer kullanıcıların birincil harici depolama alanlarına erişimi olmamalıdır.
  • /sdcard yolu, bir işlemin çalıştığı kullanıcıya göre doğru kullanıcıya özel birincil harici depolama alanına yönlendirmelidir.
  • Android/obb dizininde bulunan büyük OBB dosyalarının depolama alanı, optimizasyon amacıyla birden fazla kullanıcı arasında paylaşılabilir.
  • İkincil harici depolama alanı, sentezlenmiş izinlerin izin verdiği pakete özel dizinler dışında uygulamalar tarafından yazılabilir olmamalıdır.

Bu özelliğin varsayılan platform uygulaması, her Zygote çatallanmış işlemi için izole bağlama tabloları oluşturmak üzere Linux çekirdek ad alanlarından yararlanır ve ardından bu özel ad alanında kullanıcıya özel doğru birincil harici depolama alanını sunmak için bağlama bağlamalarını kullanır.

Sistem, önyükleme sırasında EMULATED_STORAGE_SOURCE adresinde tek bir taklit edilmiş harici depolama FUSE daemon'ı bağlar. Bu daemon, uygulamalardan gizlenir. Zygote çatallanma işleminden sonra, harici depolama yolu uygulama için doğru şekilde çözülecek şekilde, FUSE daemon'unun altındaki kullanıcıya özel uygun alt dizini EMULATED_STORAGE_TARGET'ye bağlar. Uygulamalar, diğer kullanıcıların depolama alanlarına erişebilen bağlama noktalarına sahip olmadığından yalnızca başlatıldıkları kullanıcının depolama alanına erişebilir.

Bu uygulama, varsayılan kök ad alanından uygulama ad alanlarına montaj etkinliklerini yaymak için paylaşılan alt ağaç çekirdek özelliğini de kullanır. Bu sayede ASEC kapsayıcıları ve OBB bağlama gibi özelliklerin düzgün şekilde çalışmaya devam etmesi sağlanır. Bunu rootfs'yi paylaşılan olarak bağlayarak ve her Zygote ad alanı oluşturulduktan sonra köle olarak yeniden bağlayarak yapar.

Birden fazla harici depolama cihazı

Android 4.4'ten itibaren, geliştiricilere Context.getExternalFilesDirs(), Context.getExternalCacheDirs() ve Context.getObbDirs() aracılığıyla birden fazla harici depolama cihazı gösterilir.

Bu API'ler aracılığıyla gösterilen harici depolama cihazları, cihazın yarı kalıcı bir parçası olmalıdır (ör. pil bölmesinde SD kart yuvası). Geliştiriciler, bu konumlarda depolanan verilerin uzun süre boyunca kullanılabilmesini bekler. Bu nedenle, geçici depolama cihazları (ör. USB toplu depolama sürücüleri) bu API'ler aracılığıyla gösterilmemelidir.

WRITE_EXTERNAL_STORAGE izni yalnızca cihazdaki birincil harici depolama alanına yazma erişimi vermelidir. Uygulamaların, sentezlenmiş izinlerin izin verdiği pakete özel dizinleri dışında ikincil harici depolama cihazlarına yazmalarına izin verilmemelidir. Yazma işlemlerinin bu şekilde kısıtlanması, uygulamalar kaldırıldığında sistemin dosyaları temizleyebilmesini sağlar.

USB medya desteği

Android 6.0, USB flash sürücüler gibi cihaza yalnızca kısa süre bağlı olan taşınabilir depolama cihazlarını destekler. Kullanıcı yeni bir taşınabilir cihaz taktığında platform, söz konusu cihazın içeriğini kopyalamasına veya yönetmesine olanak tanıyan bir bildirim gösterir.

Android 6.0'ta, benimsenmemiş tüm cihazlar taşınabilir olarak kabul edilir. Taşınabilir depolama alanı yalnızca kısa bir süre bağlı olduğundan platform, medya taraması gibi ağır işlemlerden kaçınır. Üçüncü taraf uygulamaları, taşınabilir depolama alanındaki dosyalarla etkileşimde bulunmak için Depolama Erişim Çerçevesi'ni kullanmalıdır. Gizlilik ve güvenlik nedeniyle doğrudan erişim açıkça engellenir.