Androidアプリがデータを保存する可能性のあるすべてのディレクトリを一覧表示し、各ディレクトリに保存されるデータの種類を説明してください。
コメント
- 関連項目:特別なAndroidSDカードフォルダーのリスト? / SDカードを再編成することはできますか?そこは混乱しているので / 内部SDでどのディレクトリを削除できますか? / アプリが使用するストレージを確認しますか?
- Plus Android Folder Hiearchy / ファイルシステムのどこにSMSメッセージが保存されていますか? / ファイルシステムのどこにアプリケーションがインストールされていますか?
回答
すべてのアプリ(ルートかどうか)には、デフォルトのデータディレクトリ/data/data/<package_name>
があります。デフォルトでは、アプリのデータベース、設定、その他すべてのデータがここに表示されます。アプリが大量のデータの保存を期待している場合、またはその他の理由で「内部ストレージに適している」場合は、SDカードに対応するディレクトリ(Android/data/<package_name>
)があります。
それを除けば、すべてのアプリは制限がないため、SDカードのどこにでもデータを保存できます。多くのアプリはそうします。ディレクトリ名を自由に使用できます(そしてまたそうします)。カード上のすべての「ジャンク」が何を対象としているのか、何を削除できるのかを判断するのが難しくなります。
ただし、トムが指摘したように、root-appsはデバイス上のほぼすべての場所にデータを保存でき、通常は他のアプリと同じルールに従います。
Androidディレクトリ階層の一般的な説明は
ここに私の答え。特定の質問については、/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
は<を返しますdiv id = "b40840751e">
)。セカンダリ外部ストレージとリムーバブルストレージにはSAFが使用されます。詳細については外部SDカードにファイルを保存する方法をご覧ください。。
ただし、Android 10では、プライマリ外部共有ストレージへの直接書き込みは非推奨です(getExternalStorageDirectory
およびgetExternalStoragePublicDirectory
は非推奨です。アプリはAndroidの組み込みコンテンツプロバイダーの1つを使用する必要があります。 MediaStore (メディアファイルの場合)または SAF (その他の種類のファイルの場合)
/data
パスは、Adoptable Storageを使用すると、/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 “private files
外部ストレージ内のディレクトリは MediaScanner によって自動的にスキャンされませんが、media
ディレクトリはスキャンされます。
キャッシュとno_backup
ディレクトリはクラウドにバックアップされません。 公式ドキュメントを参照してください。
回答
あなたが尋ねているあなたの質問に対する答えは大きすぎます。しかし、私はあなたに基本をカバーする基本的な答えを与えることができます。
アプリには、
ルートと非ルートの2種類があります。
ルートアプリは基本的に、ファイルをどこにでも保存/変更できます。
ルート以外のアプリは、ここでのみファイルを保存/変更できます:/sdcard/
とその後に続くすべてのフォルダ。
ほとんどの場合、インストールされたアプリは/sdcard/Android/data
または/sdcard/Android/obb
に保存されます。
一部アプリは、保存ゲーム/構成データファイルを/sdcard/APPNAME/
に保存するか、/sdcard/
に保存します。 root アプリの場合、Androidデバイスをルート化し、スーパーユーザーアプリの1つから許可を与える必要があります。