Android Q のスコープ付きストレージは開発者に SAF の使用を強制するが、これはひどい

click fraud protection

Android Q の Scoped Storage の変更は、現在、Storage Access Framework にいくつかの欠陥があるため、対処するのが頭の痛い問題です。

Android Q は、携帯電話でのストレージの仕組みを根本的に変えます。 Pie までのすべてのバージョンでは、Android のストレージはデスクトップ コンピューターのように機能しました。任意のアプリを使用して、任意のファイルを読み書きすることができます (アプリに許可を与えている場合)。 Q を使用して、Google は「」を導入 (そして要求) しています。範囲指定されたストレージ」により、Android は iPhone のように動作し、ストレージがアプリごとに分離されます。 アプリは自身のファイルにのみアクセスでき、アンインストールされると、そのファイルはすべて削除されます。

ありがたいことに、Android Q は、中央ファイル システムの Android 本来の動作の一部をまだ保持しています。 残念ながら、ユーザーがそれにアクセスするためにアプリをセットアップするのは面倒であり、パフォーマンスと機能が大幅に低下しています。 そして、開発者はそれをサポートするためにアプリを大幅に再コーディングする必要があります。

一般的なファイルシステムへのアクセスを必要とするアプリ。 オフィス スイート、画像エディター、またはファイル マネージャーでは、「」と呼ばれる Android API を使用する必要があります。ストレージアクセスフレームワーク" (SAF)、すべてのファイル操作用。 SAF は Android 5.0 Lollipop から利用可能になりましたが、開発者は必要な場合以外は SAF を使用しない傾向があります。 文書化された API、ユーザー エクスペリエンス、パフォーマンス、信頼性の低下 (主にデバイス ベンダー固有の実装の形式) 問題)。 SAF への移行が難しいため、Google は、SAF をまだサポートしていないアプリを許可することを決定しました。 Android Q サポートは以前と同様に機能しますが、Play ストアがすべてのアプリに Q をサポートすることを要求すると、これは変更されます。 来年。

SAF によるユーザー側の最も明白な変更は、アプリにストレージへのアクセスを許可するエクスペリエンスです。 アプリがアクセスするには、OS にリクエストが行われ、OS はディレクトリ選択画面を表示します。 この画面で、ユーザーはアプリがファイルを読み書きできるフォルダー階層のルートを選択します。 ユーザーは、ローカル ファイルへのアクセスを必要とするアプリごとにこのプロセスを実行する必要があります。外部 SD カードへのアクセスも許可する必要がある場合は、アプリごとに 2 回実行する必要があります。

Google は少なくともこのプロセスを改善しました Q ベータ 3、以前のベータ版では、アプリがユーザーに選択する場所を提案することさえできなかったため、 ユーザーはかなりの作業を行う必要がありました 実際にデバイスのプライマリ ストレージを見つけます。

SAF ではファイル I/O パフォーマンスが多少低下しますが、最も顕著な問題はファイルにあります。 ディレクトリ操作は、従来のファイル アクセスよりも 25 ~ 50 倍遅くなります。 パイ。 ファイル マネージャーの場合、これは、検索とストレージ使用量の計算の実行に桁違いに長い時間がかかることを意味します。 デモアプリによるバグレポートは、 ここで入手可能です。

SAFTest のサンプル テスト実行。SAF を使用した従来のファイル I/O API とのパフォーマンスの違いを示します。

さらに大きなパフォーマンスの問題は、一部のアプリでは、ファイルを操作する前にローカルの「スコープ指定されたストレージ」領域にファイルをコピーする必要があることです。 このようなファイルのサイズが数ギガバイトである場合、これは問題となる可能性があります。 ビデオ ファイルまたは圧縮アーカイブの場合。 多くの Android アプリは、開発者コミュニティにある驚くほど多くのオープンソース Java ライブラリを利用しており、これらのライブラリが動作するには通常、ファイルシステムに直接アクセスする必要があります。 これらは Android 固有ではないため、SAF で動作するには書き直す必要があります。 さらに悪いことに、パッケージ マネージャーや zip API など、Android 独自の内部ライブラリの多くは Android では動作しません。 たとえば、ファイル マネージャーは、最初に APK 全体を独自のスコープ付きストレージ領域にコピーしないと、(標準の Android API を使用して) APK ファイルのアイコンを表示することさえできません。 バグ報告。

技術に詳しい人向けに、appops コマンドを使用して ADB 経由でアプリごとに Android Q の「スコープド ストレージ」を無効にすることが現在可能です。 root ユーザーは、デスクトップ コンピューターを使用せずに、自分のデバイス上でコマンドを直接実行できます。 このようなコマンドは開発者の機能としてドキュメントに記載されているため、いつでも削除される可能性があります。

アプリの一般的なストレージ アクセスを有効にします。

adb shell cmd appops set your-package-name android: legacy_storage allow && \adb shell am force-stop your-package-name

アプリの一般的なストレージ アクセスを無効にします。

adb shell cmd appops set your-package-name android: legacy_storage default && \adb shell am force-stop your-package-name

Google はこの変更によるセキュリティとプライバシーの利点を宣伝していますが、技術的に言えば改善はありません。 Android 1.0 以降、アプリにはファイルをプライベートに保存する機能があり、ほぼすべてのアプリがこの機能を利用しています。 SAF 経由でストレージのルート ディレクトリへのアクセスをアプリに許可すると、アプリは任意のファイルの読み取り、書き込み、送信が可能になります。 は、アプリに Pie のストレージへのアクセスを許可したときとまったく同じ方法で、その極悪非道な開発者に要求します。

唯一の「セキュリティの改善」は、ユーザーにとってこれを行うのがより困難なプロセスになったためです。 もちろん、アプリがあなたの写真やビデオなどの最も個人的な情報を盗むことだけを目的としている場合を除きます。 Google は、単純なポップアップ クリックで「はい」のセキュリティを使用する代替アクセス ソリューションを追加しました。 ダイアログ。

Google がこの変更によってどのような利益を達成したいと考えているのかは不明です。 Android Q ベータ版のドキュメントで公式に述べられている理由は、「ユーザーが自分のファイルをより詳細に制御できるようにし、ファイルを制限できるようにするため」です。 乱雑。」 スコープ付きストレージは、現在の形式では、ユーザーが実行できることの新しい制限であり、ユーザーの機能を拡張するものではありません。 コントロール。 乱雑さを軽減するという主張はある程度は正当であるかもしれませんが、それは変更によりファイルの使用能力がまったく低下するためです。 また、一部のアプリで操作するためにファイルを複製する必要があるという問題を考慮すると、「乱雑さ」はさらに増します。

Google がユーザーにファイルや乱雑さをより詳細に制御できるようにすることを本当に懸念しているのであれば、 現在の Android Q デザインをそのようなものであると誤ってブランド化するのではなく、この問題に直接対処するソリューションです。 改善。 最も簡単な答えは、既存のストレージのアクセス許可要求ダイアログを使用して、アプリに範囲指定されたファイル システム アクセスを許可するか、一般的なファイル システム アクセスを許可するかをユーザーに決定させることです。 ここでユーザーが誤った決定を下すことに特別な懸念がある場合は、確かに次のことが可能です。 そのダイアログをより目立つようにし、アプリを完全に承認するには追加のユーザー操作を必要とします。 アクセス。

Android がユーザーに自分のファイルをより詳細に制御できるようにする方法に対する答えは、実際にユーザーにより詳細な制御を提供することであり、それを奪って Android プラットフォームの機能を根本的に制限することではありません。


編集者注: これは XDA 上級メンバーによって書かれたゲスト記事です トリーベック、の作品で最もよく知られています。 FXファイルエクスプローラー. この記事の内容は、XDA-Developers の編集長である Mishaal Rahman からの最小限の入力と編集を加えて、Android Q のスコープ ストレージ制限に関する彼自身の意見と分析を反映しています。 私たちはこれらの懸念事項のいくつかについて Google に問い合わせましたが、公開時点までに同社からの返答はありませんでした。