Geleneksel depolama

Android harici depolama HAL simgesi

Android, değişmez POSIX izin sınıfları ve modlarına sahip, büyük/küçük harfe duyarlı olmayan bir dosya sistemi olarak tanımlanan geleneksel depolamaya sahip cihazları destekler. Geleneksel depolama kavramı öykünülmüş ve taşınabilir depolamayı kapsar. Taşınabilir depolama, sistem tarafından benimsenmeyen ve bu nedenle biçimlendirilmeyen, şifrelenmeyen veya belirli bir cihaza bağlanmayan herhangi bir harici depolama olarak tanımlanır. Geleneksel harici depolama, depolanan veriler için minimum düzeyde koruma sağladığından, sistem kodu hassas verileri harici depolamada saklamamalıdır. Özellikle, yapılandırma ve günlük dosyaları yalnızca etkili bir şekilde korunabilecekleri dahili depolamada saklanmalıdır.

Çok kullanıcılı harici depolama

Android 4.2'den itibaren cihazlar birden fazla kullanıcıyı destekleyebilir ve harici depolamanın aşağıdaki kısıtlamaları karşılaması gerekir:

  • Her kullanıcının kendi yalıtılmış birincil harici depolama birimine sahip olması ve diğer kullanıcıların birincil harici depolama alanına erişimi olmamalıdır.
  • /sdcard yolu, işlemin çalıştığı kullanıcıya bağlı olarak kullanıcıya özel doğru birincil harici depolamaya çözümlenmelidir.
  • Android/obb dizinindeki büyük OBB dosyalarının depolanması, optimizasyon amacıyla birden fazla kullanıcı arasında paylaşılabilir.
  • İkincil harici depolama, sentezlenmiş izinlerin izin verdiği pakete özgü dizinler dışında uygulamalar tarafından yazılamaz olmalıdır.

Bu özelliğin varsayılan platform uygulaması, her Zygote çatallı işlem için yalıtılmış bağlama tabloları oluşturmak üzere Linux çekirdeği ad alanlarından yararlanır ve ardından bu özel ad alanına doğru kullanıcıya özel birincil harici depolamayı sunmak için bağlama bağlamalarını kullanır.

Önyükleme sırasında sistem, uygulamalardan gizlenen EMULATED_STORAGE_SOURCE konumuna tek bir öykünülmüş harici depolama FUSE arka plan programı bağlar. Zygote çatallarından sonra, FUSE arka plan programının altından kullanıcıya özel uygun alt dizini EMULATED_STORAGE_TARGET bağlar, böylece harici depolama yolları uygulama için doğru şekilde çözümlenir. Bir uygulamada diğer kullanıcıların depolama alanı için erişilebilir bağlama noktaları bulunmadığından, yalnızca başlatıldığı kullanıcı için depolama alanına erişebilirler.

Bu uygulama aynı zamanda montaj 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, ASEC kapsayıcıları ve OBB montajı gibi özelliklerin doğru şekilde çalışmaya devam etmesini sağlar. Bunu, rootf'leri paylaşılan olarak monte ederek ve ardından her Zygote ad alanı oluşturulduktan sonra onu köle olarak yeniden monte ederek yapar.

Çoklu harici depolama aygıtları

Android 4.4'ten başlayarak, Context.getExternalFilesDirs() , Context.getExternalCacheDirs() ve Context.getObbDirs() aracılığıyla birden çok harici depolama aygıtı geliştiricilere sunuluyor.

Bu API'ler aracılığıyla ortaya çıkan harici depolama cihazları, cihazın yarı kalıcı bir parçası olmalıdır (pil bölmesindeki SD kart yuvası gibi). Geliştiriciler, bu konumlarda depolanan verilerin uzun süre boyunca kullanılabilir olmasını bekliyor. Bu nedenle geçici depolama aygıtlarının (USB yığın depolama sürücüleri gibi) bu API'ler aracılığıyla ortaya çıkarılmaması gerekir.

WRITE_EXTERNAL_STORAGE izni yalnızca cihazdaki birincil harici depolama birimine yazma erişimi vermelidir. Sentezlenmiş izinlerin izin verdiği pakete özel dizinler dışında, uygulamaların ikincil harici depolama cihazlarına yazması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 bir süre için bağlanan taşınabilir depolama cihazlarını destekler. Bir kullanıcı yeni bir taşınabilir cihaz taktığında platform, bu cihazın içeriğini kopyalamasına veya yönetmesine olanak tanıyan bir bildirim görüntüler.

Android 6.0'da benimsenmeyen herhangi bir cihaz taşınabilir olarak kabul edilir. Taşınabilir depolama yalnızca kısa bir süre için bağlandığından platform, medya tarama gibi ağır işlemlerden kaçınır. Üçüncü taraf uygulamaların, taşınabilir depolama birimindeki dosyalarla etkileşim kurabilmesi için Depolama Erişimi Çerçevesinden geçmesi gerekir; doğrudan erişim, gizlilik ve güvenlik nedenleriyle açıkça engellenmiştir.