SDCardFSの非推奨

SDCardFSは、Android 11以降で起動し、カーネルバージョン5.4以降を実行するデバイスでは非推奨になりました。このようなデバイスでは、 VTSテストでは、SDCardFSとしてリストされているマウントされたファイルシステムは許可されません。 Android 11以降で起動し、カーネルバージョン4.19以下を実行しているデバイスは、引き続きSDCardFSを使用できますが、Googleは追加のサポートを提供していません。

非推奨になる前は、SDCardFSは、エミュレートされた内部ストレージと外部SDカードへのアクセスを制御する方法を提供し、アプリがそれらに関連するデータのみにアクセスできるようにしました。さらに、大文字と小文字を区別しないレイヤーと、追加のストレージ追跡を提供しました。

SDCardFS交換機能

SDCardFSの代わりに、いくつかのLinuxカーネルファイルシステム機能を使用して、同様の結果を実現します。大文字と小文字の区別はファイルシステムによって直接処理されます。これにより、大文字と小文字を区別するフォルダーと大文字と小文字を区別しないフォルダーのルックアップ時間がほぼ同じになり、SDCardFSから大きなフォルダーの速度低下がなくなります。 SDCardFSが設定用のストレージデータをすばやく収集するために行っていたクォータトラッキングが、プロジェクトクォータを使用してユーザースペースから構成されるようになりました。一部のパフォーマンスに敏感なコンテキストでは、ディレクトリは所定の場所にバインドマウントされます。新しいFUSE実装は、主に位置情報の編集をサポートするために、ファイルシステムに直接アクセスするためのスコープ付きストレージを提供します。

SDカード交換機能の設定

SDCardFSを使用せずにemulated_storage.mkレートされたストレージのプロジェクトクォータとケースフォールディングを有効にするには、 device.mkファイルのemulated_storage.mkから継承します。

$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)

これは、Android11以降で起動するデバイスに対してのみ実行してください。

SDCardFSを廃止する理由

SDCardFSを廃止する理由はさまざまです。

安定

SDCardFSは、大文字と小文字の区別に関するいくつかの競合状態と、メモリ不足の状況に関するいくつかの問題に悩まされています。大文字と小文字を区別しないルックアップは、別のケースを見つけるために下位ディレクトリをたどる必要があるため、大きなディレクトリではかなり遅くなる可能性があります。上位ファイルシステムと下位ファイルシステムに同時にアクセスすると、問題が発生する可能性もあります。

アップストリームパリティ

SDCardFSでは、バインドマウントのオプションの変更をサポートするために、VFSに追加のパッチが必要です。これらのパッチにより、これらの領域へのアップストリームの変更を受け入れる追加の作業が発生します。 SDCardFSの機能は、アップストリームコンポーネントによって複製できるため、この問題点が解消されます。

APIと同等の機能

Androidの以前のリリースでは、スコープストレージは特定のタイプのメタデータへのアクセスを制限していました。 SDCardFSを介した直接ストレージアクセスは、これらのスコープストレージ機能をサポートしていません。