Android 앱이 데이터를 저장할 수있는 가능한 모든 디렉토리를 나열하고 각 디렉토리에 어떤 종류의 데이터가 저장되는지에 대한 설명을 제공 하시겠습니까?
댓글
- 참조 : 특수 Android SD 카드 폴더 목록 / SD 카드를 재구성 할 수 있습니까? 엉망이기 때문에 / 내부 SD에서 어떤 디렉토리를 제거 할 수 있습니까? / 앱에서 사용하는 저장 용량을 확인 하시겠습니까?
- Plus Android 폴더 계층 구조 / SMS 메시지는 파일 시스템의 어디에 저장됩니까? / 응용 프로그램이 설치된 파일 시스템의 위치
답변
모든 앱 (루트 여부에 관계없이)에는 기본 데이터 디렉터리 인 /data/data/<package_name>
가 있습니다. 기본적으로 앱 데이터베이스, 설정 및 기타 모든 데이터가 여기에 있습니다. 앱에서 엄청난 양의 데이터가 저장 될 것으로 예상하거나 다른 이유로 “내부 저장소에 적합”하려는 경우 “SDCard에 해당 디렉토리 (Android/data/<package_name>
)가 있습니다.
그 외에도 모든 앱은 제한이 없기 때문에 SDCard의 어느 위치 에나 데이터를 저장할 수 있으며 많은 앱이 저장합니다. 디렉토리 이름을 자유롭게 사용할 수 있습니다 (다시 사용합니다). 카드에있는 “정크”가 무엇을위한 것인지, 무엇을 삭제할 수 있는지 결정하기 어렵게 만듭니다.
하지만 Tom이 지적했듯이 루트 앱은 기기의 거의 모든 곳에 데이터를 저장할 수 있으며 일반적으로 다른 앱과 동일한 규칙을 따릅니다.
여기에 내 답변 이 있습니다. 구체적인 질문에 대해서는 /data/data/<package_name>
(및 해당 SD 부분)에 대한 자세한 내용을 추가 할 수 있습니다.
-
databases/
: 앱의 데이터베이스로 이동합니다. -
lib/
: 앱용 라이브러리 및 도우미 -
files/
: 기타 관련 파일 -
shared_prefs/
: 환경 설정 및 설정 -
cache/
: 음, 캐시
이 장소에 여러 개의 디렉토리가 더 있거나 더 적을 수 있습니다. 모두 앱에 따라 다릅니다. 자체 “홈 디렉토리”(기본적으로 Linux에서 말하는 것임)에 파일을 원하는 곳에 배치 할 수 있습니다. 일반적으로 이러한 파일과 디렉토리는 앱 자체 (물론 루트)에서만 액세스 할 수 있습니다. -SDCard에 저장된 것 외에 모든 앱에서 액세스 할 수 있습니다.
댓글
- 댓글은 확장 된 토론이 아닙니다.이 대화에는 채팅으로 이동 되었습니다.
답변
Android 4.4의 저장소에 몇 가지 주요 변경 사항이 발생했습니다 ( Android의 저장소 여정 참조). 따라서 다음은 일반적으로 Android 4.4 이상, 특히 6+에 해당됩니다.
이것은 Android 기기에서 디스크 공간이 어떻게 사용 되나요? . 앱 파일은 시스템 및 앱 자체별로 다른 카테고리의 내부 및 외부 저장소에 저장됩니다.
DIRECTORY DESCRIPTION / API ===================================================================================== APP CODE ======== /data/app/<pkg>* (user apps installation directory) /data/app/<pkg>*/base.apk (original `.apk` file) /data/app/<pkg>*/lib/<arch>/*.so (shared libraries) /data/app/<pkg>*/oat/<arch>/base.[art|odex|vdex] (compiled executable code) /data/dalvik-cache/<arch>/*.[art|dex|oat|vdex] (compiled executable code, only for system apps) /data/misc/profiles/cur/<user_id>/<pkg>/primary.prof (ART profile) /data/misc/profiles/ref/<pkg>/primary.prof (ART profile) INTERNAL STORAGE ================ /data/user[_de]/<user_id>/<pkg> getDataDir /data/user[_de]/<user_id>/<pkg>/files getFilesDir /data/user[_de]/<user_id>/<pkg>/[code_]cache getCacheDir or getCodeCacheDir /data/user[_de]/<user_id>/<pkg>/databases getDatabasePath /data/user[_de]/<user_id>/<pkg>/no_backup getNoBackupFilesDir /data/user[_de]/<user_id>/<pkg>/shared_prefs getSharedPreferences EXTERNAL STORAGE ================ /storage/emulated/obb/<pkg>/*.obb (shared by multi-users, exposed in following view) /storage/emulated/<user_id>/Android/obb/<pkg>/*.<pkg>.obb getObbDirs /storage/emulated/<user_id>/Android/media/<pkg> getExternalMediaDirs /storage/emulated/<user_id>/Android/data/<pkg>/ /storage/emulated/<user_id>/Android/data/<pkg>/files getExternalFilesDirs /storage/emulated/<user_id>/Android/data/<pkg>/[code_]cache getExternalCacheDirs
-
위의 모든 항목 내부 및 외부 저장소 (기본 및 보조)의 경로는 권한을 요청하지 않고 각 앱에 액세스 할 수있는 앱의 개인 디렉터리입니다. 앱은 개인 저장소에 다른 디렉터리 (API를 통해 명시 적으로 사용할 수 없음)를 만들 수도 있습니다. 앱이 제거되면 앱에 속한 이러한 모든 디렉토리가 삭제됩니다.
-
또한 앱은 기본 외부 저장소 (일부 표준 디렉토리 및 기타 앱 비공개 디렉토리)
WRITE_EXTERNAL_STORAGE
권한이 부여 된 경우 (getExternalStorageDirectory
는/storage/emulated/<user_id>
). 보조 외부 저장소 및 이동식 저장소의 경우 SAF가 사용됩니다. 자세한 내용은 외부 SD 카드에 파일을 저장하는 방법
을 참조하세요. a>.
그러나 Android 10에서는 기본 외부 공유 저장소에 직접 쓰기가 더 이상 사용되지 않습니다 (getExternalStorageDirectory
및 getExternalStoragePublicDirectory
는 더 이상 사용할 수 없음). 앱은 Android의 내장 콘텐츠 제공 업체 중 하나를 사용해야합니다. MediaStore (미디어 파일 용) 또는 SAF (다른 유형의 파일 용)
/data
경로는 채택 가능한 저장소를 사용할 때 /mnt/expand/[UUID]
로 대체 될 수 있습니다. 보조 외부 저장소 (예 : SD 카드)를 사용할 때 /storage/emulated
가 /storage/[UUID]
로 대체됩니다.
여러 사용자 / 프로필의 경우 <user_id>
는 다르며 기기 소유자는 항상 0
입니다. . /data/user/0
는 역사적인 이유로 /data/data
에 대한 심볼릭 링크입니다. 보조 외부 저장소는 기기 소유자 만 사용할 수 있습니다.
OBB 디렉토리는 공간을 절약하기 위해 사용자 / 프로필 (최대 Android 9)간에 공유됩니다. FUSE / sdcardfs
는 항상 /storage/emulated/obb
를 /storage/emulated/<user_id>/Android/obb
로 노출합니다.
/data/user_de
는 사용자 자격 증명을 요청하지 않고 부팅시 특정 앱을 실행할 수있는 FBE 기기의 기기 암호화 저장소입니다.
/data/misc/profiles
는 앱 코드의 프로필 기반 컴파일 을 위해 ART에서 사용됩니다.
각 디렉토리에 대한 설명은 이름에서 다소 분명합니다. 자세한 내용은 API 문서 에서 확인할 수 있습니다.
저장 용량이 부족하면 OS에서 캐시를 삭제하여 할당 된 할당량을 초과하는 앱을 맨 위에 둡니다.
Apps “비공개 files
외부 저장소의 디렉터리는 MediaScanner 에 의해 자동으로 검색되지 않지만 media
디렉터리는 검색됩니다.
p>
캐시 및 no_backup
디렉터리는 클라우드에 백업되지 않습니다. 공식 문서 를 참조하세요.
답변
질문에 대한 답변이 너무 큽니다. 그러나 기본을 다루는 기본 답변을 드릴 수 있습니다.
앱에는
루트 와 루트가 아닌 의 두 종류가 있습니다.
루트 앱은 기본적으로 원하는 위치에 파일을 저장 / 수정할 수 있습니다.
루트가 아닌 앱은 여기에서만 파일을 저장 / 수정할 수 있습니다. /sdcard/
및 그 뒤에 오는 모든 폴더.
대부분 설치된 앱은 /sdcard/Android/data
또는 /sdcard/Android/obb
에 저장됩니다.
일부 앱은 저장 게임 / 구성 데이터 파일을 /sdcard/APPNAME/
또는 /sdcard/
에 저장합니다.
루트 앱을 사용하려면 Android 기기를 루팅하고 수퍼 유저 앱 중 하나에서 권한을 부여해야합니다.