Müzakirə

Android’de Scoped Storage Sisteminin Teknik Detayları

Başladan Furko · 30 noy 2025 14:17 · 57 Baxış · 0 Cavablar
Mövzunu Açan #0

Scoped Storage Nedir ve Neden Gerekliydi?


Android işletim sistemi, mobil cihazlarda depolama alanının yönetimi konusunda önemli evrimler geçirdi. Scoped Storage, Android 10 (API seviyesi 29) ile tanıtılan ve Android 11 (API seviyesi 30) ile zorunlu hale getirilen radikal bir depolama erişimi modelidir. Bu sistem, uygulamaların cihazın tüm harici depolama alanına kontrolsüz erişimini kısıtlayarak kullanıcı gizliliğini ve veri güvenliğini artırmayı amaçlar. Önceleri, bir uygulama `WRITE_EXTERNAL_STORAGE` izniyle tüm paylaşılan depolama alanına erişebiliyordu. Bu durum, kötü niyetli uygulamaların kullanıcı verilerini kötüye kullanması veya hassas bilgilere izinsiz ulaşması riskini beraberinde getiriyordu. Scoped Storage, bu riski minimize etmek için her uygulamanın kendi "kapsamlı" depolama alanına ve belirli medya koleksiyonlarına özel izinlerle erişmesini sağlar. Bu nedenle, kullanıcılar artık hangi uygulamanın hangi verilere eriştiği konusunda daha fazla kontrol sahibidir.

Sistem Mimarisi ve Çalışma Prensibi


Scoped Storage, her uygulamaya izole edilmiş bir depolama alanı atayarak çalışır. Bu izolasyon, uygulamanın yalnızca kendi özel dizinlerine veya kullanıcının açık rızasıyla belirli türdeki paylaşılan medya koleksiyonlarına (örneğin fotoğraflar, videolar, müzikler) erişebilmesi anlamına gelir. Uygulamalar, diğer uygulamaların özel dosyalarına veya genel dosya sisteminin rastgele dizinlerine doğrudan erişemez. Bunun yerine, paylaşılan depolama alanındaki dosyalara erişim, sistemin sağladığı özel API’ler aracılığıyla gerçekleşir. Örneğin, medya dosyaları için MediaStore API kullanılırken, diğer türdeki belgeler ve indirmeler için Storage Access Framework (SAF) devreye girer. Başka bir deyişle, sistem, uygulamalar ile depolama alanı arasına bir aracı koyarak güvenliği artırır ve kontrolü merkezileştirir.

Medya Dosyalarına Erişimin Yeniden Tanımlanması


Scoped Storage ile medya dosyalarına erişim, MediaStore API üzerinden standartlaştırılmıştır. Uygulamalar, cihazdaki tüm fotoğraflara, videolara ve ses dosyalarına erişmek için artık genel depolama iznine değil, `READ_MEDIA_IMAGES`, `READ_MEDIA_VIDEO` veya `READ_MEDIA_AUDIO` gibi daha spesifik izinlere ihtiyaç duyar. Bir uygulama kendi oluşturduğu medya dosyalarını MediaStore’a eklediğinde, bu dosyalara varsayılan olarak tam erişim hakkına sahip olur. Ancak, başka bir uygulamanın oluşturduğu medya dosyalarını değiştirmek veya silmek istediğinde, kullanıcının açık iznini alması gerekir. Sonuç olarak, bu yaklaşım, uygulamanın amacına uygun minimum izin prensibini destekler ve kullanıcıların medya içeriği üzerindeki denetimini önemli ölçüde güçlendirir.

Uygulama Özel Depolama Alanının Yönetimi


Her Android uygulaması, sistem tarafından kendisine özel olarak tahsis edilmiş bir depolama alanına sahiptir. Bu alan, uygulamanın kendi verilerini (veritabanları, ayarlar, geçici dosyalar vb.) saklamak için kullanılır ve diğer uygulamalar tarafından doğrudan erişilemez. Uygulama özel depolama alanı, dahili ve harici olmak üzere ikiye ayrılabilir. Dahili depolama (`Context.getFilesDir()`, `Context.getCacheDir()`), uygulamanın kaldırılmasıyla tamamen silinir ve oldukça güvenlidir. Harici depolama (`Context.getExternalFilesDir()`, `Context.getExternalCacheDir()`) ise genellikle paylaşılan depolama alanında uygulamanın adıyla oluşturulmuş bir dizindir. Uygulama kaldırıldığında buradaki veriler de silinir. Ek olarak, bu alanlar için herhangi bir izin istemeye gerek yoktur, çünkü sistem varsayılan olarak yalnızca ilgili uygulamaya erişim hakkı tanır.

Belge ve İndirme Dosyalarında Değişen Yaklaşım


Medya dosyalarının yanı sıra, genel belgeler ve indirmeler de Scoped Storage kapsamındadır. Uygulamalar, bu tür dosyalara erişmek veya bunları yönetmek için Storage Access Framework (SAF) kullanmak zorundadır. SAF, kullanıcının belirli bir dosyayı veya dizini uygulamayla paylaşmasına olanak tanıyan bir sistem arayüzüdür. Örneğin, bir metin düzenleyici uygulama, kullanıcıdan belirli bir belgeyi açmasını istediğinde, SAF seçiciyi tetikler. Kullanıcı, cihazındaki dosyalardan istediğini seçerek uygulamaya geçici veya kalıcı erişim izni verir. Bununla birlikte, uygulamalar `Downloads` klasörüne doğrudan erişim sağlayamaz. Uygulamanın indirdiği dosyalar genellikle kendi özel indirme dizininde saklanır veya kullanıcı SAF aracılığıyla manuel olarak farklı bir konuma kaydeder.

Eski Uygulamalardan Geçiş Süreci ve Zorluklar


Android 10 ile birlikte Scoped Storage tanıtıldığında, geliştiricilere uyumluluk sağlamak adına `requestLegacyExternalStorage` manifest bayrağını kullanma imkanı tanındı. Bu bayrak, uygulamaların Android 10 cihazlarda eski depolama modelini geçici olarak kullanmasına olanak sağlıyordu. Ancak, Android 11 ile bu bayrak tamamen devre dışı bırakıldı ve tüm uygulamaların Scoped Storage modeline uyması zorunlu hale geldi. Bu geçiş süreci, özellikle eski API’lere dayalı kapsamlı dosya işlemleri yapan uygulamalar için önemli zorluklar yarattı. Geliştiricilerin, mevcut dosya erişim mantıklarını MediaStore ve SAF API'lerini kullanacak şekilde baştan yazmaları gerekti. Bu nedenle, uyumluluk testleri ve yeniden düzenleme süreçleri, birçok uygulama için zaman alıcı ve karmaşık oldu.

Gizlilik ve Güvenlik Açısından Getirdiği Avantajlar


Scoped Storage, kullanıcı gizliliği ve cihaz güvenliği açısından birçok önemli avantaj sunar. Her şeyden önce, uygulamaların yalnızca ihtiyaç duydukları verilere erişimini sağlayarak, yetkisiz veri toplama ve kötüye kullanım riskini büyük ölçüde azaltır. Örneğin, bir fotoğraf düzenleme uygulaması yalnızca görsellere erişim izni isteyebilir, kullanıcının tüm kişisel belgelerine veya bankacılık uygulamalarına ulaşamaz. Ek olarak, kötü amaçlı yazılımların cihazdaki diğer uygulamaların verilerine bulaşması veya bunları çalması Scoped Storage sayesinde neredeyse imkansız hale gelmiştir. Bu sistem, aynı zamanda, kullanıcıya hangi uygulamanın hangi veri türüne ne kadar süreyle erişeceğine dair daha fazla şeffaflık ve kontrol sağlar. Sonuç olarak, Android ekosisteminin genel güvenliğini artırır ve kullanıcıların cihazlarında depoladıkları verilere daha fazla güvenmelerine olanak tanır.

Cavab vermək üçün daxil olmalısınız.

0 sitat seçildi