Gdzie aplikacje na Androida przechowują dane?

97

Czy możesz wymienić wszystkie możliwe katalogi, w których aplikacje na Androida mogą przechowywać dane, podając opis, jakie dane są przechowywane w każdym katalogu?

mrpyo
źródło

Odpowiedzi:

92

Wszystkie aplikacje (root lub nie) mają domyślny katalog danych, którym jest /data/data/<package_name>. Domyślnie bazy danych aplikacji, ustawienia i wszystkie inne dane są tutaj. Jeśli aplikacja oczekuje na przechowywanie ogromnych ilości danych lub z innych powodów chce „być przyjemna dla pamięci wewnętrznej”, na karcie SDCard ( Android/data/<package_name>) znajduje się odpowiedni katalog .

Poza tym wszystkie aplikacje mogą przechowywać dane w dowolnym miejscu na karcie SD, ponieważ nie ma żadnych ograniczeń - i wiele aplikacji to robi. Mogą swobodnie korzystać z nazw katalogów (i robią to ponownie), co często utrudnia podjęcie decyzji, do czego przeznaczone są te wszystkie „śmieci” na karcie i które z nich można usunąć.

Chociaż, jak zauważył Tom , aplikacje root mogą przechowywać swoje dane prawie wszędzie na twoim urządzeniu, zwykle przestrzegają tych samych zasad, co inne aplikacje.

Ogólne wyjaśnienie hierarchii katalogów Androida można znaleźć w mojej odpowiedzi tutaj . Do konkretnego pytania mogę dodać więcej szczegółów na temat /data/data/<package_name>(i odpowiadającej części SD):

  • databases/: tutaj są bazy danych aplikacji
  • lib/: biblioteki i pomocniki dla aplikacji
  • files/: inne powiązane pliki
  • shared_prefs/: preferencje i ustawienia
  • cache/: no cache

W tym miejscu może być jeszcze kilka katalogów lub mniej - wszystko zależy od aplikacji. W swoim własnym „katalogu domowym” (i tak to właściwie jest, mówiąc Linux-em), mogą umieszczać pliki tam, gdzie chcą. Zazwyczaj te pliki i katalogi są dostępne tylko przez samą aplikację (i oczywiście root) - inne niż te przechowywane na karcie SD, do których są dostępne wszystkie aplikacje.

Izzy
źródło
1
Czy /data/data/<name>/files/dokąd pójdą pliki utworzone zgodnie z opisem w developer.android.com/guide/topics/data/... ? Czyli te otwarte FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);?
Nikt
Ogólnie rzecz biorąc, jest to już ładna odpowiedź, ale co z dodawaniem odniesień do developer.android.com/guide/topics/data/… o tym, który katalog koreluje z którym opisem abstrakcyjnym / agnostycznym?
Nikt
@Nobody 2), ponieważ ta strona jest mocno zorientowana na programistę, podczas gdy ta strona jest zorientowana na użytkownika końcowego? To samo dla 1) Nie jestem programistą, a to pyta o szczegóły programistyczne. Przepraszam.
Izzy
1
Nie mam karty SD, aw moim Androida 6 i Android 7 Whatsapp przechowywać wiele danych w /storage/emulated/0/WhatsApp/(subdirs .Shared, .trash, Backups, Databases, Media), w tym wszystkie media. Nie wiem, czy to dodatkowo \data\data..., nie mogę teraz uzyskać dostępu do tego katalogu. Może zmieniło się to między wersjami.
sancho.s
1
@Shayan katalog główny ( /) nie znajduje się na karcie SD. Karta SD oznacza poniżej /sdcard(karta wewnętrzna, punkty /storage/emulated/<user>) lub odpowiednią ścieżkę twojej karty zewnętrznej. I nie, nie mogę wyjaśnić wszystkich możliwych lokalizacji, z których może korzystać aplikacja, przepraszam; AFAIK /data/miscjest zarządzany przez sam system Android, więc „zwykłe aplikacje” powinny mieć co najwyżej dostęp do odczytu. Nigdy nie spotkałem data/user_de(ponieważ jest to ścieżka względna, i tak nie wiem, co masz na myśli).
Izzy
9

Odpowiedź na zadane pytanie jest zbyt duża. Mogę jednak dać podstawową odpowiedź, która obejmuje podstawy.

Istnieją dwa rodzaje aplikacji:
rootowanie i rootowanie .

Aplikacje do rootowania mogą zasadniczo przechowywać / modyfikować pliki w dowolnym miejscu. Aplikacje

inne niż root mogą tutaj przechowywać / modyfikować pliki: /sdcard/i każdy folder, który nastąpi później.
Przeważnie zainstalowane aplikacje przechowują się w /sdcard/Android/datalub /sdcard/Android/obb.
Niektóre aplikacje przechowują swoje zapisane gry / pliki danych konfiguracji w /sdcard/APPNAME/lub po prostu /sdcard/

Aby móc korzystać z aplikacji root , musisz zrootować urządzenie z Androidem i wyrazić zgodę na jedną z aplikacji administratora.

Tomek
źródło