Le stockage limité dans Android Q oblige les développeurs à utiliser SAF, ce qui est nul

click fraud protection

Les modifications apportées au stockage étendu dans Android Q sont un casse-tête à gérer, car le Storage Access Framework présente actuellement quelques défauts.

Android Q change fondamentalement la façon dont le stockage fonctionne sur votre téléphone. Dans toutes les versions jusqu'à Pie, le stockage d'Android fonctionnait comme un ordinateur de bureau: vous pouvez utiliser n'importe quelle application pour lire ou écrire n'importe quel fichier (si vous accordez à une application l'autorisation de le faire). Avec Q, Google introduit (et exige) "Stockage limité", ce qui fait qu'Android fonctionne davantage comme un iPhone, où le stockage est isolé pour chaque application. Une application ne peut accéder qu'à ses propres fichiers et si elle est désinstallée, tous ses fichiers sont supprimés.

Heureusement, Android Q conserve toujours une partie du comportement original d'Android en matière de système de fichiers central. Malheureusement, il est désormais difficile pour l'utilisateur de configurer des applications pour y accéder, ce qui réduit considérablement les performances et les capacités. Et les développeurs devront considérablement recoder les applications pour le prendre en charge.

Applications nécessitant un accès général au système de fichiers, par ex. une suite bureautique, un éditeur d'images ou un gestionnaire de fichiers devra désormais utiliser une API Android appelée "Cadre d'accès au stockage" (SAF), pour toutes les opérations sur les fichiers. SAF est disponible depuis Android 5.0 Lollipop, mais les développeurs ont tendance à ne pas l'utiliser à moins que cela ne soit nécessaire, car il a un fonctionnement difficile et médiocre. API documentée, une mauvaise expérience utilisateur, des performances médiocres et une fiabilité médiocre (en grande partie sous la forme d'une implémentation spécifique au fournisseur d'appareil problèmes). En raison de la difficulté de transition vers SAF, Google a décidé d'autoriser les applications qui n'indiquent pas encore La prise en charge d'Android Q fonctionnera comme avant, mais cela changera lorsque le Play Store exigera que toutes les applications prennent en charge Q. l'année prochaine.

Le changement le plus évident pour l'utilisateur avec SAF est l'expérience consistant à accorder à une application l'accès au stockage. Pour qu'une application puisse accéder, elle envoie une requête au système d'exploitation, qui affiche ensuite un écran de sélection de répertoire. Sur cet écran, l'utilisateur sélectionne la racine d'une hiérarchie de dossiers dans laquelle cette application pourra lire et écrire des fichiers. L'utilisateur doit suivre ce processus pour chaque application nécessitant un accès aux fichiers locaux, ou deux fois par application s'il doit également lui accorder l'accès à une carte SD externe.

Google a au moins amélioré ce processus pour Q bêta 3, car les versions bêta précédentes ne permettaient même pas à une application de suggérer un emplacement que l'utilisateur pouvait sélectionner, ce qui a demandé à l'utilisateur de faire pas mal de travail pour trouver réellement le stockage principal de leur appareil.

Les performances d'E/S de fichiers sont quelque peu affectées sous SAF, mais le problème le plus important réside dans la gestion des fichiers. opérations de répertoire, où elles sont environ 25 à 50 fois plus lentes que l'accès aux fichiers conventionnel possible dans Tarte. Dans le cas des gestionnaires de fichiers, cela signifie qu’il faudra beaucoup plus de temps pour effectuer des recherches et des calculs d’utilisation du stockage. Un rapport de bug avec une application de démonstration est disponible ici.

Exemple de test de SAFTest montrant la différence de performances entre l'API d'E/S de fichier conventionnelle et SAF.

Un problème de performances encore plus important est que certaines applications devront copier des fichiers dans leur zone de « stockage limité » locale avant de pouvoir les utiliser. Cela peut être problématique lorsque ces fichiers ont une taille de plusieurs gigaoctets, par ex. dans le cas de fichiers vidéo ou d'archives compressées. De nombreuses applications Android tirent parti du nombre incroyable de bibliothèques Java open source présentes dans la communauté des développeurs, et ces bibliothèques nécessitent généralement un accès direct au système de fichiers pour fonctionner. Ils ne sont pas spécifiques à Android et nécessiteraient une réécriture pour fonctionner avec SAF. Pire encore, de nombreuses bibliothèques internes d'Android ne fonctionneront pas avec, comme le gestionnaire de packages ou l'API zip. Par exemple, un gestionnaire de fichiers ne pourra même pas afficher l'icône d'un fichier APK (en utilisant l'API Android standard) sans d'abord copier l'intégralité de l'APK dans sa propre zone de stockage. Rapport d'erreur.

Pour les personnes techniquement enclines, il est actuellement possible de désactiver le « stockage étendu » d'Android Q pour chaque application via ADB à l'aide d'une commande appops. Les utilisateurs root peuvent exécuter les commandes directement sur leur appareil sans ordinateur de bureau. Ces commandes sont décrites dans la documentation en tant que fonctionnalités du développeur et peuvent donc être supprimées à tout moment.

Activer l'accès général au stockage pour une application :

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

Désactivez l'accès général au stockage pour une application :

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

Google vante les avantages de ce changement en matière de sécurité et de confidentialité, mais techniquement, il n’y a aucune amélioration. Les applications ont la possibilité de stocker des fichiers de manière privée depuis Android 1.0, et presque toutes les applications utilisent cette fonctionnalité. Lorsque vous accordez à une application l'accès au répertoire racine de votre stockage via SAF, elle peut lire, écrire et envoyer n'importe quel fichier. veut à son infâme développeur exactement de la même manière qu'il le ferait lorsque vous accordiez à une application l'accès au stockage dans Pie.

La seule « amélioration de la sécurité » vient du fait que c'est désormais un processus plus ardu pour un utilisateur. À moins bien sûr qu'une application ne veuille voler vos informations les plus personnelles, comme les photos et les vidéos que vous avez prise, pour laquelle Google a ajouté une solution d'accès alternative qui utilise une simple sécurité contextuelle clic-oui dialogue.

On ne sait pas quels avantages Google espère obtenir avec ce changement. La raison officielle indiquée dans la documentation bêta d'Android Q est de « donner aux utilisateurs plus de contrôle sur leurs fichiers et de limiter les fichiers. désordre." Le stockage limité, dans sa forme actuelle, est une nouvelle limitation de ce que l'utilisateur est autorisé à faire, et non une extension de ses capacités. contrôle. L'affirmation selon laquelle l'encombrement serait réduit est peut-être quelque peu valable, mais uniquement parce que le changement réduit la possibilité d'utiliser des fichiers. Et «l'encombrement» est accru si l'on considère le problème de certaines applications qui doivent désormais dupliquer des fichiers pour pouvoir les utiliser.

Si Google souhaite vraiment donner aux utilisateurs plus de contrôle sur les fichiers et l'encombrement, ils devraient concevoir un solution qui répond directement à ce problème, plutôt que de qualifier faussement la conception actuelle d'Android Q de telle amélioration. La réponse la plus simple serait de laisser les utilisateurs décider s'ils souhaitent qu'une application ait un accès limité ou général au système de fichiers, en utilisant la boîte de dialogue de demande d'autorisation de stockage existante. S’il existe ici une préoccupation particulière pour les utilisateurs qui prennent de mauvaises décisions, il est certainement possible de rendre cette boîte de dialogue plus visible et nécessiter une interaction supplémentaire de l'utilisateur pour approuver une application dans son intégralité accéder.

La réponse à la question de savoir comment Android peut donner aux utilisateurs plus de contrôle sur leurs fichiers est de leur donner plus de contrôle, et non de le supprimer et de limiter fondamentalement les capacités de la plate-forme Android.


Note de l'éditeur: il s'agit d'un article invité rédigé par un membre senior de XDA. tliebeck, surtout connu pour son travail sur Explorateur de fichiers FX. Le contenu de cet article reflète sa propre opinion et analyse des restrictions de stockage étendu d'Android Q, avec une contribution et des modifications minimales de Mishaal Rahman, rédacteur en chef de XDA-Developers. Nous avons contacté Google pour leur poser des questions sur certaines de ces préoccupations, mais nous n'avons pas reçu de réponse de la société au moment de la publication.