Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Depolama

Android harici depolama HAL simgesi

Android, çok çeşitli depolama cihazı türlerini ve özelliklerini desteklemek için zamanla gelişti. Android'in tüm sürümleri, taşınabilir ve taklit depolama içeren geleneksel depolamaya sahip cihazları destekler. Taşınabilir depolama, SD kart veya USB gibi, geçici veri aktarımı / dosya depolama için fiziksel ortam tarafından sağlanabilir. Fiziksel ortam aygıtta uzun süre kalabilir, ancak aygıta bağlı değildir ve çıkarılabilir. SD kartlar, Android 1.0'dan beri taşınabilir depolama birimi olarak mevcuttur; Android 6.0 USB desteği ekledi. Emulated saklama bir benzetim tabakası içinden dahili bir depolama bölümünün maruz bırakılarak sağlanır, Android 3.0 yana kullanılmaktadır.

Android 6.0 başlayarak, Android destekler uyarlanamıyor depolama şifrelenir ve dahili depolama gibi davranmaya biçimlendirilmiş bir SD kart veya USB gibi fiziksel medya tarafından sağlanmaktadır. Benimsenebilir depolama alanı tüm uygulama verilerini saklayabilir.

İzinler

Harici depolama birimine erişim çeşitli Android izinleriyle korunur. Android 1.0'dan başlayarak yazma erişimi WRITE_EXTERNAL_STORAGE izniyle korunmaktadır. Android 4.1'den başlayarak, okuma erişimi READ_EXTERNAL_STORAGE izniyle korunmaktadır.

Android 4.4'ten başlayarak, harici depolama cihazlarındaki dosya sahibi, grubu ve modları artık dizin yapısına göre sentezleniyor. Bu, uygulamaların geniş WRITE_EXTERNAL_STORAGE iznine sahip olmaları gerekmeksizin pakete özgü dizinlerini harici depolama WRITE_EXTERNAL_STORAGE yönetmelerini sağlar. Örneğin, com.example.foo paket adına sahip uygulama artık izinsiz harici depolama cihazlarında Android/data/com.example.foo/ serbestçe erişebiliyor. Bu sentezlenmiş izinler, ham depolama cihazlarını bir FUSE arka plan programına sararak elde edilir.

Android 10'dan başlayarak, Android 9'u ve daha düşük varsayılanları eski depolamayı hedefleyen ve yalıtılmış depolamayı seçebilen uygulamalar . Android 10'u ve varsayılanı yalıtılmış depolamayı hedefleyen uygulamalar geçici olarak devre dışı bırakabilir . Varsayılan durumu değiştirmek için depolama modelini kontrol eden manifest requestLegacyExternalStorage özelliğini kullanın.

Hem READ_EXTERNAL_STORAGE hem de WRITE_EXTERNAL_STORAGE izinleri yumuşak kısıtlı olduğundan, yükleyici uygulamayı beyaz listeye almadıysa, izin SD karta erişim olmadan yalnızca sesli ve görsel koleksiyonlara erişimi denetler. Bu, uygulama eski depolama alanı istese bile geçerlidir. Hem katı kısıtlamalar hem de yumuşak kısıtlamalar hakkında daha fazla bilgi için Android 10'daki Sert ve yumuşak kısıtlamalar konusuna bakın.

Yükleyici izni beyaz listeye eklediyse, eski modda çalışan bir uygulama yalıtılmamış izin davranışını alır. İzin, SD kart erişimini ve işitsel ve görsel koleksiyonları kontrol eder. Bu, uygulama Android 9 veya daha düşük bir sürümü hedeflediğinde ve yalıtılmış depolamayı seçmediğinde veya Android 10'u hedeflediğinde ve devre dışı bırakıldığında gerçekleşir.

Beyaz liste durumu yalnızca yükleme sırasında belirtilebilir ve uygulama yükleninceye kadar değiştirilemez.

READ_EXTERNAL_STORAGE iznini ayarlama hakkında daha fazla bilgi için PackageInstaller.SessionParams sınıfındaki setWhitelistedRestrictedPermissions() bakın.

Çalışma zamanı izinleri

Android 6.0, uygulamaların çalışma zamanında gerektiğinde yetenek istediği yeni bir çalışma zamanı izinleri modeli sunar. Yeni model READ/WRITE_EXTERNAL_STORAGE izinlerini içerdiğinden, platformun zaten çalışan uygulamaları öldürmeden veya yeniden başlatmadan dinamik olarak depolama erişimi vermesi gerekir. Bunu, tüm takılı depolama aygıtlarının üç ayrı görünümünü koruyarak yapar:

  • /mnt/runtime/default , özel depolama izni olmayan uygulamalara ve adbd ve diğer sistem bileşenlerinin yaşadığı kök ad adbd .
  • /mnt/runtime/read ile uygulamalar gösterilir READ_EXTERNAL_STORAGE (Set LEGACY_STORAGE Android 10)
  • /mnt/runtime/write , WRITE_EXTERNAL_STORAGE olan uygulamalara gösterilir

Zygote çatal zamanında, çalışan her uygulama için bir montaj ad alanı oluşturur ve uygun ilk görünümü yerine bağlar. Daha sonra, çalışma zamanı izinleri verildiğinde, vold zaten çalışan uygulamaların bağlama ad vold atlar ve bağlama yükseltilmiş görünümü yerine bağlar. İzin düşürmelerinin her zaman uygulamanın öldürülmesine neden olduğunu unutmayın.

Bu özelliği uygulamak için kullanılan setns() işlevselliği en az Linux 3.8 gerektirir, ancak yamalar Linux 3.4'e başarıyla aktarılmıştır. PermissionsHostTest CTS testi, doğru çekirdek davranışını doğrulamak için kullanılabilir.