Ứng dụng Android lưu trữ dữ liệu ở đâu?


97

Câu trả lời:


92

Tất cả các ứng dụng (gốc hoặc không) đều có thư mục dữ liệu mặc định /data/data/<package_name>. Theo mặc định, cơ sở dữ liệu ứng dụng, cài đặt và tất cả các dữ liệu khác ở đây. Nếu một ứng dụng mong đợi lượng dữ liệu khổng lồ sẽ được lưu trữ hoặc vì lý do khác muốn "tốt đẹp cho bộ nhớ trong", thì có một thư mục tương ứng trên SDCard ( Android/data/<package_name>).

Ngoài ra, tất cả các ứng dụng có thể lưu trữ dữ liệu ở bất cứ đâu trên SDCard, vì không có hạn chế - và nhiều ứng dụng làm như vậy. Họ có thể sử dụng tên thư mục một cách tự do (và họ lại làm như vậy), đó là điều thường khiến bạn khó quyết định tất cả những gì "rác" trên thẻ được dùng cho mục đích gì và nó có thể bị xóa.

Mặc dù, như Tom chỉ ra , các ứng dụng gốc có thể lưu trữ dữ liệu của chúng ở hầu hết mọi nơi trên thiết bị của bạn, chúng thường tuân theo các quy tắc giống như các ứng dụng khác.

Bạn có thể tìm thấy một lời giải thích chung về hệ thống phân cấp thư mục Android trong câu trả lời của tôi ở đây . Đối với câu hỏi cụ thể của bạn, tôi có thể thêm một số chi tiết về phần /data/data/<package_name>(và phần SD tương ứng):

  • databases/: ở đây đi cơ sở dữ liệu của ứng dụng
  • lib/: thư viện và người trợ giúp cho ứng dụng
  • files/: các tập tin liên quan khác
  • shared_prefs/: tùy chọn và cài đặt
  • cache/: tốt, bộ nhớ cache

Có thể có nhiều thư mục ở nơi này hoặc ít hơn - tất cả phụ thuộc vào ứng dụng. Trong "thư mục chính" của riêng mình (và đó chính là bản chất của Linux, nói khôn ngoan), họ có thể đặt các tệp ở nơi họ muốn. Thông thường, các tệp và thư mục này chỉ có thể được truy cập bởi chính ứng dụng (và tất nhiên là root) - trừ những tệp được lưu trữ trên SDCard, có thể truy cập được bởi tất cả các ứng dụng.


1
/data/data/<name>/files/nơi các tệp được tạo như được mô tả trong developer.android.com/guide/topics/data/ khuyên sẽ đi đâu? Tức là những người đã mở với FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);?
Không ai là

Nói chung, đây đã là một câu trả lời hay, nhưng còn việc thêm tài liệu tham khảo cho developer.android.com/guide/topics/data/ trộm về thư mục nào tương quan với mô tả trừu tượng / đường dẫn không biết ở đó thì sao?
Không ai là

@Nobody 2) vì trang đó được nhiều nhà phát triển định hướng, trong khi trang này hướng đến người dùng cuối? Tương tự cho 1) Tôi không phải là nhà phát triển và yêu cầu chi tiết phát triển. Lấy làm tiếc.
Izzy

1
Tôi không có một thẻ SD, và trong Android của tôi 6 và Android 7, Whatsapp lưu trữ nhiều dữ liệu trong /storage/emulated/0/WhatsApp/(subdirs .Shared, .trash, Backups, Databases, Media), bao gồm tất cả các phương tiện truyền thông. Tôi không biết nếu đây là ngoài \data\data..., tôi không thể truy cập thư mục này ngay bây giờ. Có lẽ điều này đã thay đổi giữa các phiên bản.
sancho.s

1
@Shaya thư mục gốc ( /) không nằm trên thẻ SD. Thẻ SD có nghĩa là bên dưới /sdcard(thẻ nội bộ, trỏ đến /storage/emulated/<user>) hoặc đường dẫn tương ứng của thẻ bên ngoài của bạn. Và không, tôi không thể giải thích tất cả các vị trí có thể một số ứng dụng có thể sử dụng, xin lỗi; AFAIK /data/miscđược quản lý bởi chính hệ thống Android, vì vậy "các ứng dụng đơn thuần" tốt nhất nên có quyền truy cập đọc ở đó. Không bao giờ gặp phải data/user_de(vì đó là một con đường tương đối, tôi không biết ý của bạn là gì).
Izzy

9

Câu trả lời cho câu hỏi của bạn mà bạn đang hỏi quá lớn. Tôi có thể, tuy nhiên, cung cấp cho bạn một câu trả lời cơ bản bao gồm những điều cơ bản.

Có hai loại ứng dụng:
Rootkhông root .

Ứng dụng root về cơ bản có thể lưu trữ / sửa đổi các tập tin bất cứ nơi nào họ muốn.

Các ứng dụng không root chỉ có thể lưu trữ / sửa đổi các tệp ở đây: /sdcard/và mọi thư mục xuất hiện sau.
Hầu hết, các ứng dụng được cài đặt tự lưu trữ tại /sdcard/Android/datahoặc /sdcard/Android/obb.
Một số ứng dụng lưu trữ các tệp dữ liệu cấu hình trò chơi / trò chơi của họ /sdcard/APPNAME/hoặc chỉ trên /sdcard/

Để có thể sử dụng các ứng dụng gốc , bạn sẽ cần phải root thiết bị Android của mình và đã được sự cho phép từ một trong những ứng dụng siêu người dùng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.