Android uygulamaları verileri nerede saklar?


97

Yanıtlar:


92

Tüm uygulamaların (root veya değil) varsayılan bir veri dizini vardır /data/data/<package_name>. Varsayılan olarak, uygulamalar veritabanları, ayarlar ve diğer tüm veriler buraya gider. Bir uygulama büyük miktarda veri depolanmasını bekliyorsa veya başka nedenlerden dolayı "dahili depolamaya iyi davranmak" istiyorsa, SDCard'da ( Android/data/<package_name>) ilgili bir dizin var .

Bunun dışında, tüm uygulamalar kısıtlama olmadığından SDCard'ın herhangi bir yerinde veri depolayabilir - ve çoğu uygulama bunu yapar. Dizin adlarını serbestçe kullanabilirler (ve yine de yaparlar), karttaki tüm bu "önemsiz" lerin ne için tasarlandığına ve bunun ne için silinebileceğine karar vermeyi zorlaştıran şey budur.

Tom'un belirttiği gibi , kök uygulamalar verilerini cihazınızın hemen her yerinde depolayabilseler de, genellikle diğer uygulamalarla aynı kuralları izlerler.

Cevabımda Android dizini hiyerarşisinin genel bir açıklamasını burada bulabilirsiniz . Özel sorunuz için, /data/data/<package_name>(ve ilgili SD bölümü) ile ilgili daha fazla ayrıntı ekleyebilirim :

  • databases/: işte uygulamanın veritabanlarına gidin
  • lib/: uygulama için kütüphaneler ve yardımcılar
  • files/: diğer ilgili dosyalar
  • shared_prefs/: tercihler ve ayarlar
  • cache/: iyi, önbellekleri

Bu yerde birkaç tane daha dizin olabilir, ya da daha az - hepsi uygulamaya bağlıdır. Kendi "home dizini" nde (ve temel olarak ne söylenirse, Linux dilinde konuşulur) istedikleri dosyaları yerleştirebilirler. Genellikle, bu dosyalara ve dizinlere yalnızca uygulamanın kendisi (ve elbette root) erişebilir - SDCard'da depolananlar dışında, tüm uygulamalar tarafından erişilebilir.


1
Is /data/data/<name>/files/açıklandığı gibi dosyaları oluşturulur nereye developer.android.com/guide/topics/data/... gider? Yani bunlar açıldı FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);mı?
Kimse

Genel olarak, bu çoktan güzel bir cevap ama peki hangi dizinin hangi soyut / yol-agnostik tanımla ilişkilendirildiği hakkında hangi dizine , developer.android.com/guide/topics/data/… ' ya referanslar eklemeye ne dersiniz ?
Kimse

@ Kimse 2) bu sayfa yoğun biçimde geliştiriciye yönelik olduğundan, bu site son kullanıcılara yönelikse? 1 için aynı) Ben geliştirici değilim ve bu geliştirme detayları için sorar. Üzgünüm.
Izzy

1
Ben bir SD kartım yok ve benim Android 6 ve Android 7'de, Whatsapp miktarda veri depolanmış /storage/emulated/0/WhatsApp/(subdirs .Shared, .trash, Backups, Databases, Mediatüm medya dahil). Buna ek olarak bilmiyorum \data\data..., şimdi bu dizine erişemiyorum. Belki bu sürümler arasında değişti.
sancho.s

1
@Shayan root dizini ( /) SD kartta bulunmuyor. SD Kart aşağıda /sdcard(dahili kart, işaret eder /storage/emulated/<user>) veya harici kartınızın karşılık gelen yolu anlamına gelir . Ve hayır, bazı uygulamaların kullanabileceği olası tüm yerleri açıklayamam, üzgünüm; AFAIK /data/miscAndroid sisteminin kendisi tarafından yönetiliyor, bu nedenle "sadece uygulamalar" en iyi orada okuma erişimine sahip olmalı. Hiç karşılaşmadım data/user_de(göreceli bir yol olduğu için zaten nereyi kastettiğinizi bilmiyorum).
Izzy

9

İstediğiniz sorunuzun cevabı çok büyük. Bununla birlikte, size temelleri kapsayan temel bir cevap verebilirim.

İki tür uygulama vardır:
Kök ve kök dışı .

Kök uygulamalar temel olarak dosyaları istedikleri yerde depolayabilir / değiştirebilir.

Kök olmayan uygulamalar sadece burada dosyaları depolayabilir / değiştirebilir: /sdcard/ve sonrasında gelen her klasör.
Çoğunlukla, yüklü uygulamalar kendilerini /sdcard/Android/dataveya konumunda saklar /sdcard/Android/obb.
Bazı uygulamalar kaydetme oyunlarını / yapılandırma veri dosyalarını /sdcard/APPNAME/veya yalnızca Kök uygulamalarını /sdcard/

kullanabilmek için depolarlar, Android cihazınızı köklendirmeniz ve süper kullanıcı uygulamalarından birinden izin almanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.