Bir Android cihazında dosyaları yönetmeyi denediyseniz, muhtemelen çalıştırdığınız Android sürümüne bağlı olarak işlerin farklı şekilde çalıştığını fark etmişsinizdir. Android 10'dan başlayarak Google, uygulamaların dosya sistemiyle etkileşim kurma biçiminde temel bir değişiklik başlattı. Kapsamlı Depolama olarak bilinen bu değişiklik, paylaşılan depolama alanındaki dosyaların okunması ve yazılmasına ilişkin kuralları yeniden tanımladı. Uygulamaları dışarıdan yükleyen, OBB dosyalarını yöneten veya dosya yöneticileriyle çalışan kullanıcılar için kapsamlı depolamayı anlamak çok önemlidir.
Bu makalede, kapsamlı depolamanın ne olduğunu, Google'ın bunu neden uyguladığını, sıradan kullanıcıları ve geliştiricileri nasıl etkilediğini ve Play Store dışında APK veya XAPK dosyalarını yükleyen herkes için ne anlama geldiğini keşfedeceğiz.
Eski Depolama Modelindeki Sorun
Android 10'dan önce, READ_EXTERNAL_STORAGE veya WRITE_EXTERNAL_STORAGE iznini isteyen herhangi bir uygulama, cihazın paylaşılan depolama alanındaki hemen hemen her dosyaya erişebiliyordu. Buna fotoğraflar, belgeler, indirilenler ve hatta diğer uygulamalar tarafından oluşturulan dosyalar da dahildir. Bu, dosya yönetimini kolaylaştırsa da ciddi gizlilik ve güvenlik endişeleri yarattı.
Basit bir el feneri uygulamasını düşünün. Eski modelde, depolama izni verdiğiniz takdirde sessizce fotoğraflarınızı okuyabilir, indirdiğiniz belgelerinizi tarayabilir ve hatta diğer uygulamalara ait dosyaları değiştirebilir. Granüler kontrol yoktu. Bir uygulamaya ya tüm depolama alanınıza tam erişim izni verdiniz ya da onu tamamen reddettiniz.
Bu geniş erişim gerçek dünyadaki sorunlara yol açtı. Bazı uygulamalar, depolama alanını hassas dosyalar için tarayarak kullanıcı verilerini topladı. Diğerleri, uygulama kaldırıldıktan uzun süre sonra bile cihazı karmaşık hale getiren artık dosyaları geride bıraktı. Google'ın kullanılabilirliği gizlilikle dengeleyen bir çözüme ihtiyacı vardı ve onların cevabı kapsamlı depolamaydı.
Kapsamlı Depolama Aslında Ne Yapar?
Kapsamlı depolama, uygulamalar ile dosya sistemi arasındaki ilişkiyi temelden değiştirir. Bu modelde her uygulama, harici depolamada genellikle /Android/data/[package.name]/ konumunda bulunan kendi özel sanal alanına sahip olur. Uygulamalar, hiçbir izne ihtiyaç duymadan kendi sanal alanlarında özgürce okuyabilir ve yazabilir.
Ancak bu sanal alanın dışındaki dosyalara erişmek, kontrollü API'lerden geçmeyi gerektirir. Yeni model şu şekilde çalışıyor:
Uygulamaya Özel Depolama
Her uygulamanın yalnızca kendisinin erişebileceği özel bir dizini vardır. Uygulama kaldırıldığında bu dizin otomatik olarak temizlenir. Başka hiçbir uygulama root erişimi olmadan bu konumu okuyamaz veya yazamaz. Bu, artık dosyalar sorununu ortadan kaldırır ve uygulamalar arası verilerin gözetlenmesini önler.
Medya Koleksiyonları
Fotoğraflar, videolar ve ses dosyaları gibi paylaşılan medyalar için Android, MediaStore API'sini sağlar. Uygulamalar, yalnızca bu yapılandırılmış arayüz aracılığıyla, paylaşılan koleksiyonlara medya katkıda bulunabilir ve diğer uygulamalar tarafından oluşturulan medyayı okuyabilir. Bir uygulama kendi medyasını herhangi bir izin olmadan görebilir ancak diğer uygulamaların medyasına erişmek için Android 13'te sunulan READ_MEDIA_IMAGES, READ_MEDIA_VIDEO veya READ_MEDIA_AUDIO izinleri gerekir.
Depolama Erişim Çerçevesi
Belgeler ve diğer medya dışı dosyalar için uygulamaların Depolama Erişim Çerçevesini (SAF) kullanması gerekir. Bu, uygulamanın hangi dosyalara veya dizinlere erişebileceğini açıkça seçen kullanıcıya bir sistem dosyası seçici sunar. Uygulama hiçbir zaman dosya sisteminin tamamına tam erişim sağlayamaz.
MANAGE_EXTERNAL_STORAGE İzni
Dosya yöneticileri, yedekleme araçları ve antivirüs yazılımı gibi gerçekten geniş dosya erişimine ihtiyaç duyan uygulamalar için Android, MANAGE_EXTERNAL_STORAGE iznini sağlar. Ancak bu izin, Play Store aracılığıyla dağıtılan uygulamalar için Google'dan özel onay gerektirir ve kullanıcıların bunu basit bir iletişim kutusu yerine sistem ayarları aracılığıyla manuel olarak vermeleri gerekir.
Kullanıma Sunma Zaman Çizelgesi
Google, kapsamlı depolamayı bir gecede zorunlu kılmadı. Geçiş yavaş yavaş gerçekleşti:
- Android 10 (API 29): Kapsamlı depolama kullanıma sunuldu ancak uygulamalar, bildirimlerinde requestLegacyExternalStorage="true"'yi kullanarak kapsam dışında kalmayı tercih edebilir. Bu, geliştiricilere uyum sağlamaları için zaman verdi.
- Android 11 (API 30): Eski bayrak, API 30 veya üzerini hedefleyen uygulamalar için göz ardı edildi. Play Store'daki yeni ve güncellenmiş uygulamalar için kapsamlı depolama zorunlu hale geldi.
- Android 12 ve sonrası: Ayrıntılı medya izinleri ve iyileştirilmiş SAF performansı da dahil olmak üzere daha fazla iyileştirme yapıldı.
- Android 13 (API 33): Geniş READ_EXTERNAL_STORAGE izni, belirli medya izinleri lehine kullanımdan kaldırıldı.
- Android 14 (API 34): Kısmi fotoğraf ve video erişimi tanıtıldı ve kullanıcıların medya kitaplıklarının tamamı yerine belirli dosyalara erişim izni vermesine olanak tanındı.
Kapsamlı Depolama Yandan Yüklemeyi Nasıl Etkiler?
Play Store dışından uygulama yükleyen kullanıcılar için kapsamlı depolama, anlamaya değer bazı pratik zorluklar sunar.
APK Dosyalarını İndirme ve Erişme
Bir APK dosyasını tarayıcı aracılığıyla indirdiğinizde, dosya genellikle İndirilenler klasörüne düşer. Kapsamlı depolama altında tarayıcı uygulaması bu dosyanın sahibidir. Dosya yöneticisi gibi farklı bir uygulama kullanarak yüklemek istiyorsanız bu dosya yöneticisinin uygun erişime ihtiyacı vardır. Çoğu modern dosya yöneticisi bunu SAF aracılığıyla doğru bir şekilde halleder, ancak daha eski olanlar zorluk yaşayabilir.
Sistem paketi yükleyicisi, dosya seçici aracılığıyla açıkça seçtiğiniz dosyalara erişmeye devam edebilir, böylece bir APK'yı indirmenin ve yüklemenin temel akışı çalışmaya devam eder. Ancak doğrudan dosya yolu erişimine dayanan otomatik yükleme iş akışları bozulabilir.
OBB Dosyaları ve Oyun Verileri
Kapsamlı depolamanın yandan yükleyiciler için en fazla sürtünmeyi yarattığı yer burasıdır. Birçok büyük oyun, /Android/obb/[package.name]/'de depolanan OBB (Opak İkili Blob) dosyalarını kullanır. Eski modelde, herhangi bir dosya yöneticisini kullanarak OBB dosyalarını doğru dizine kolayca kopyalayabilirsiniz.
Kapsamlı depolama ile /Android/obb/ dizini kısıtlanır. Android 11 ve sonraki sürümlerde normal uygulamalar başka bir uygulamanın OBB dizinine yazamaz. Bu, OBB verilerini içeren bir XAPK dosyası indirirseniz yükleyicinin bu dosyaları doğru şekilde yerleştirmek için özel bir işleme ihtiyaç duyduğu anlamına gelir.
OBB Çıkarıcı gibi araçlar, OBB dosyalarını XAPK paketlerinden çıkarmanıza yardımcı olabilir, ancak bunları daha yeni Android sürümlerinde doğru dizine yerleştirmek, MANAGE_EXTERNAL_STORAGE iznine sahip bir dosya yöneticisi kullanmayı veya bir bilgisayardan ADB komutlarını kullanmayı gerektirebilir.
XAPK Kurulumunda Dikkat Edilecek Hususlar
XAPK dosyaları bir APK'yı OBB verileriyle birlikte paketler ve bazen APK yapılandırmalarını böler. Bunları Android 11 veya sonraki sürümleri çalıştıran cihazlara yüklemek, kapsamlı depolama kısıtlamalarını anlayan bir yükleyici gerektirir. Yükleyicinin, OBB dosyalarını doğru konuma yerleştirmek için MANAGE_EXTERNAL_STORAGE iznine sahip olması veya uygun API'leri kullanması gerekir.
XAPK dosyalarını standart APK formatına dönüştürmenin faydalı olmasının bir nedeni de budur. Bağımsız bir APK, OBB dosyasının yerleştirilmesini gerektirmez, bu da daha yeni Android sürümlerinde kurulum sürecini basitleştirir. Temel APK'yı bir XAPK paketinden çıkarmak için XAPK'den APK'ye dönüştürücü aracımızı kullanabilirsiniz.
Geliştiricilerin Bilmesi Gerekenler
Android uygulamaları geliştiriyorsanız kapsamlı depolama, dosyaları nasıl kullandığınızı yeniden düşünmenizi gerektirir:
- Yalnızca uygulamanızın ihtiyaç duyduğu tüm dosyalar için Uygulamaya özel dizinleri kullanın. Bunlar hiçbir izin gerektirmez ve kaldırma sırasında otomatik olarak temizlenir.
- MediaStore'u kullanın, diğer uygulamalar tarafından görülebilmesi ve yükleme kaldırıldıktan sonra hayatta kalması gereken fotoğraflar, videolar ve sesler için.
- Uygulamanızın kullanıcı tarafından seçilen belgeler veya dizinlerle çalışması gerektiğinde SAF'yi kullan.
- Sabit kodlanmış dosya yollarından kaçının. /sdcard/MyApp/ gibi yollar artık güvenilir değil. Bunun yerine Context.getExternalFilesDir() kullanın.
- Birden fazla API düzeyinde test yapın. Davranışı Android 10, 11, 13 ve 14 arasında önemli ölçüde farklılık gösterir.
Göç Stratejileri
Uygulamanız daha önce dosyaları paylaşılan depolama alanında depoluyorsa bir geçiş planına ihtiyacınız vardır. Önerilen yaklaşım, güncellemeden sonraki ilk başlatma sırasında mevcut dosyaları uygulamaya özel depolama alanına kopyalamak ve ardından eski kopyaları silmektir. Eski dosyaları okumak için geçiş döneminde Environment.getExternalStorageDirectory()'yi eski bayrakla birlikte kullanın, ardından bunları yeni konuma taşıyın.
Yaygın Yanılgılar
"Kapsamlı depolama, uygulamaların hiçbir dosyaya erişemeyeceği anlamına gelir"
Bu yanlış. Uygulamalar hâlâ kendi dosyalarına serbestçe erişebilir, paylaşılan medya koleksiyonlarına katkıda bulunabilir ve sistem seçici aracılığıyla belirli dosyalara erişim talebinde bulunabilir. Değişen şey, uygulamaların artık tüm dosya sistemine sessizce göz atamamasıdır.
"Dosya yöneticileri yeni Android sürümlerinde bozuk"
MANAGE_EXTERNAL_STORAGE talebinde bulunan dosya yöneticileri hala çalışıyor. Kullanıcının ayarlar aracılığıyla bu özel izni vermesi yeterlidir. Popüler dosya yöneticilerinin çoğu zaten bu gereksinime uyum sağlamıştır.
"Kapsamlı depolama yalnızca SD kartı etkiler"
Kapsamlı depolama, dahili paylaşılan depolama da dahil olmak üzere tüm paylaşılan depolama için geçerlidir. Android'deki "harici depolama" terimi, mutlaka fiziksel bir SD kart değil, birden fazla uygulama tarafından erişilebilen paylaşılan depolamayı ifade eder.
Kullanıcılar İçin Pratik İpuçları
Android cihazınıza düzenli olarak uygulamalar yüklüyorsanız veya dosyaları yönetiyorsanız, işte bazı pratik öneriler:
- . Solid Explorer, MiXplorer ve Total Commander gibi uygulamalar kapsamlı depolamaya iyi uyum sağladı. Modern bir dosya yöneticisi kullanın MANAGE_EXTERNAL_STORAGE
- İzinleri dikkatlice verin. Bir dosya yöneticisi "Tüm dosyalara erişim" istediğinde bunun MANAGE_EXTERNAL_STORAGE izni olduğunu ve tam işlevsellik için gerekli olduğunu anlayın.
- İnatçı dosya işlemleri için ADB'yi kullanın. OBB dosyalarını bir dosya yöneticisi aracılığıyla yerleştiremiyorsanız, cihazınızı bir bilgisayara bağlayıp adb push'yi kullanmak, kapsamlı depolama kısıtlamalarını tamamen atlar.
- Karmaşık paketleri daha basit formatlara dönüştürün. Daha yeni bir cihazda bir XAPK dosyası size sorun çıkarıyorsa, yalnızca APK bileşenini çıkarmak en az dirençli yol olabilir.
- Yükleyici uygulamalarınızı güncel tutun. XAPK yükleyicilerinin eski sürümleri, kapsamlı depolamayı doğru şekilde işlemeyebilir.
Android Depolama Alanının Geleceği
Google, her Android sürümüyle birlikte depolama modelini geliştirmeye devam ediyor. Android 14, kısmi medya erişimini sunarak kullanıcıların kitaplıklarının tamamı yerine belirli fotoğrafları bir uygulamayla paylaşmalarına olanak tanıdı. Android 15'in Depolama Erişim Çerçevesinin performansına ve kullanılabilirliğine daha fazla iyileştirme getirmesi bekleniyor.
Trend açık: Android, kullanıcıların her uygulamanın görebileceği ve değiştirebileceği şeyler üzerinde ayrıntılı kontrole sahip olduğu bir modele doğru ilerliyor. Bu, uzman kullanıcılar ve yandan yükleme yapanlar için bir miktar sürtüşme yaratsa da, daha geniş kullanıcı tabanı için gizliliği ve güvenliği önemli ölçüde artırır.
Uygulama Verilerini Bozmadan Kapsamlı Depolamayla Çalışma
Kapsamlı depolama, son yıllarda Android mimarisinde yapılan en önemli değişikliklerden birini temsil ediyor. Google, uygulamaları kendi sanal alanlarıyla sınırlayarak ve daha geniş erişim için açık kullanıcı izni gerektirerek platformun gizlilik yapısını önemli ölçüde iyileştirdi. Uygulamaları dışarıdan yükleyen ve dosyaları manuel olarak yöneten kullanıcılar için bu kısıtlamaları anlamak, ara sıra ortaya çıkan anlaşmazlık noktalarını aşmanıza yardımcı olur. Geliştiriciler için kapsamlı depolamaya uyum sağlamak isteğe bağlı değil, modern Android geliştirme için temel bir gerekliliktir.
APK'ları yüklemek, OBB dosyalarını yerleştirmek ve günlük depolamayı yönetmek, hepsi aynı sistemde çalışır: kapsamlı depolama. Nasıl çalıştığını anladığınızda, geniş dosya erişimini kötüye kullanabilecek uygulamaların insafına kalmak yerine cihazınızın kontrolü sizde olur.