Geleneksel Depolama

Android harici depolama HAL simgesi

Android, değişmez POSIX izin sınıfları ve modları ile büyük/küçük harfe duyarsız 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çimlendirilmemiş, şifrelenmemiş veya belirli bir cihaza bağlı olmayan 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. Spesifik olarak, 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'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 deposuna sahip olması ve diğer kullanıcıların birincil harici depolamasına erişimi olmaması gerekir.
  • /sdcard yolu, bir işlemin çalıştığı kullanıcıya bağlı olarak doğru kullanıcıya özel birincil harici depolamaya çözümlemelidir.
  • Android/obb dizinindeki büyük OBB dosyaları için depolama, optimizasyon olarak birden çok kullanıcı arasında paylaşılabilir.
  • İkincil harici depolama, 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 bir Zygote çatallı işlem için yalıtılmış bağlama tabloları oluşturmak üzere Linux çekirdek 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 tek bir öykünülmüş harici depolama FUSE arka plan programı bağlar. Zygote çatallanmasından sonra, harici depolama yollarının uygulama için doğru ş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 depolaması için erişilebilir bağlama noktalarına sahip olmadığından, yalnızca başlatıldığı kullanıcının depolama alanına erişebilir.

Bu uygulama ayrıca, varsayılan kök ad alanından uygulama ad alanlarına mount olaylarını 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 çalışmaya devam etmesini sağlar. Bunu, rootfs'u paylaşılan olarak monte ederek ve ardından her Zygote ad alanı oluşturulduktan sonra onu slave olarak yeniden monte ederek yapar.

Birden çok harici depolama aygıtı

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

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 kullanılabilir olmasını bekler. Bu nedenle, geçici depolama aygıtları (USB yığın depolama sürücüleri gibi) bu API'ler aracılığıyla açığa çıkarılmamalıdır.

WRITE_EXTERNAL_STORAGE izni, yalnızca bir cihazdaki birincil harici depolamaya yazma erişimi vermelidir. Uygulamaların, sentezlenmiş izinlerin izin verdiği pakete özel dizinler dışında, ikincil harici depolama cihazlarına yazmalarına izin verilmemelidir. Yazma işlemlerini bu şekilde kısıtlamak, 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, o cihazın içeriğini kopyalamasına veya yönetmesine izin vermek için bir bildirim gösterir.

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ğlı olduğundan, platform medya tarama gibi ağır işlemlerden kaçınır. Üçüncü taraf uygulamalar, taşınabilir depolama alanındaki dosyalarla etkileşim kurmak için Depolama Erişim Çerçevesinden geçmelidir; doğrudan erişim, gizlilik ve güvenlik nedenleriyle açıkça engellenmiştir.