Développer des applications pour Android, c'est comme être un YouTube (démonétisé)

Comme vous le savez, certains auteurs sur YouTube sont extrêmement insatisfaits des conditions qu'offre cette plateforme. Une bataille similaire est actuellement menée par les développeurs d'applications Android sur la plate-forme Google Play. J'essaierai dans 20 minutes d'expliquer ce qui ne va pas avec Android.

Android était autrefois considéré comme la meilleure plate-forme mobile: contrôle, personnalisation, fonctionnalités avancées, véritable multitâche, prise en charge des cas d'utilisation même rares et liberté des développeurs. C'était la meilleure plate-forme pour la science et l'éducation: d'une part, les outils de développement sont gratuits et multiplateformes, et d'autre part, Android était un système d'exploitation très flexible qui n'interférait pas avec l'expérimentation de concepts innovants et le bricolage d'équipements. Maintenant, tout cela disparaît rapidement.

Auparavant, les principales versions d'Android apportaient de nouvelles fonctionnalités qui ravissaient les développeurs et les utilisateurs. Mais à un moment donné, j'avais déjà peur des annonces de nouvelles versions, et je cherche toujours la force (heh) en moi de regarder la liste des changements et des recommandations pour les développeurs pour la dernière version. Et les nouvelles versions ne sont pas la seule raison des tracas: les changements dans les politiques du Google Play Store sont également toujours amusants à lire.

Pour commencer, il y a un peu de contexte: avant Android, j'ai expérimenté avec Windows Mobile 6.x et je suis passé à Android après la sortie de la version 4.2: Je me souviens qu'ils ont annoncé 4.4 peu de temps après, et elle est restée sur mon premier téléphone Android pour le reste de sa vie. Android a été le premier et jusqu'à présent le seul OS mobile où j'ai sérieusement investi dans le développement d'applications.

J'ai commencé à bricoler le développement d'applications peu de temps avant la sortie de la version 6.0 (Marshmallow), donc je n'étais pas un ancien et je ne peux pas dire que j'ai regardé l'évolution d'Android depuis le tout début et, bien sûr, je n'ai pas observé l'ensemble du processus du point de vue du développeur. Néanmoins, une décennie de changements se sont déroulés sous mes yeux - même pendant les expériences avec Windows Mobile, j'ai fait attention à ce qui se passait dans le camp Android, même si je n'avais toujours pas assez d'argent pour ces téléphones (tout est allé aux «ordinateurs de poche» sous Windows Mobile) . Je comprends parfaitement à quel point c'était gênant pour les utilisateurs et les développeurs d'Android 4.x auparavant: je pouvais moi-même essayer ces versions et mes applications devaient les prendre en charge.

Obsolescence de l'API et perte de compatibilité descendante


Avec chaque version de Google change l'API Android. Ces interfaces déterminent en grande partie ce que les applications peuvent et ne peuvent pas faire. De plus, certaines API nécessitent des autorisations que vous acceptez lors de l'installation, et certaines de ces autorisations peuvent être définies au démarrage (l'idée est que l'application devrait se dégrader gracieusement en fournissant des fonctions distinctes sans obtenir certaines autorisations). Cela s'applique à la liste de contacts ou à l'API de localisation.

Les nouvelles versions d'Android incluent de nouvelles API. Auparavant, presque aucune modification n'était apportée aux anciennes API des versions précédentes. Autrement dit, les anciennes applications ont continué à fonctionner normalement.

Au cours des deux ou trois dernières années, de nouvelles versions d'Android ont commencé à supprimer et à modifier les anciennes API. Par exemple, si une application souhaite rester active en arrière-plan, elle doit maintenant afficher une notification constante. L'idée semble bonne en théorie, mais au final, vous avez constamment plusieurs notifications, une pour chaque application d'arrière-plan. Par exemple, deux notifications sont constamment accrochées à mon téléphone: une pour l'enregistreur, l'autre pour l'égaliseur. Une de mes propres applications devrait également afficher en permanence une notification dans Android 8 / Oreo et les versions plus récentes pour une analyse d'arrière-plan Wi-Fi fiable afin d'établir l'apparence de l'utilisateur à certains endroits.

Dans la future version d'Android 10 / Q, les capacités des applications seront encore plus limitées. Google supprime l'accès au presse-papiers , tuant toute une catégorie d'applications pour gérer le presse-papiers (historique des fragments copiés, synchronisation avec d'autres téléphones, ordinateurs, etc.). Actuellement, toutes les applications peuvent accéder au tampon sans autorisations spéciales. Vous pouvez résoudre le problème en ajoutant une demande d'autorisation, plutôt qu'en supprimant complètement l'API. Les applications ne peuvent plus activer et désactiver le Wi-Fi , ce qui empêche, par exemple, de désactiver automatiquement le Wi-Fi lorsque vous voyagez en voiture. Google pense interdire complètement aux applications d'accéder à des fichiers arbitraires dans le «stockage externe» (cartes SD et zone de mémoire interne de votre téléphone, où captures d'écran et photos, MP3, images à émuler, etc.).

Notez qu'ils suppriment toutes ces choses par «sécurité», mais ils pourraient simplement être protégés par une demande d'autorisation, comme avec une liste de contacts ou un emplacement. Au lieu de cela, ils ont décidé de supprimer complètement les fonctionnalités. Même si les utilisateurs le souhaitent, les applications ne pourront pas les implémenter. Les applications existantes sont susceptibles d'être écrasées par les utilisateurs, car les gens ne comprendront pas pourquoi le programme a soudainement cessé de fonctionner après la mise à jour vers une merveilleuse nouvelle version d'Android.

Ce sont des changements importants. Les applications normales peuvent cesser de fonctionner. Les développeurs devront les mettre à jour pour implémenter des solutions de contournement moins pratiques, implémenter des messages explicatifs, etc. Cela nécessite du temps, des efforts, de l'argent, etc., qui pourraient être consacrés à la résolution d'autres problèmes ou au développement de nouvelles fonctions. Pour les petites équipes ou les développeurs indépendants, en particulier ceux qui le font pendant leur temps libre, il peut être très difficile de rattraper les dernières tendances de Google. Par exemple, en raison d'un changement dans le fonctionnement des services d'arrière-plan, au cours de l'été, j'ai passé la majeure partie de mon temps libre à repenser l'architecture d'une des applications, ce qui a à son tour conduit à de nouvelles erreurs qui devaient être diagnostiquées, corrigées, etc., pour créer l'application mentionnée. a affiché une notification et a fonctionné correctement dans les dernières versions d'Android.

Même sans la sortie de nouvelles versions d'Android, Google peut envoyer les anciennes API au rebut: par exemple, définir de nouvelles règles pour le Play Store en interdisant les applications avec certaines autorisations. Récemment, Google a interdit les autorisations d'accès aux SMS et aux journaux d'appels: en conséquence, toutes ces applications sont expulsées du répertoire.

Ces applications peuvent toujours être installées directement à partir de l'APK ou d'autres répertoires, mais pas du Play Store. En pratique, il s'avère que sur de nombreuses applications sur le Play Store, les fonctionnalités clés sont supprimées. Par exemple, l'enregistreur ne peut plus indiquer le numéro de téléphone dans les enregistrements audio et les applications d'automatisation ne peuvent plus utiliser de messages SMS comme déclencheur d'actions. Étant donné que 99% des utilisateurs téléchargent des applications à partir de Google Play, cette fonctionnalité est désormais interdite et n'est disponible que pour une minorité très absolue d'utilisateurs qui savent contourner ces restrictions.

Google Play Store est YouTube pour les développeurs d'applications.


Les développeurs du Play Store se sentent de plus en plus comme des créateurs de contenu pour YouTube, où les changements de politique se produisent soudainement et sans avertissement. Sur YouTube, les producteurs craignent toujours que le contenu soit démonétisé pour une raison quelconque: cela est décidé par un système entièrement automatisé et opaque, ainsi que pour répondre aux plaintes des titulaires de droits d'auteur. Le Play Store doit maintenant également surveiller en permanence pour quelle nouvelle raison il peut supprimer soudainement votre application ou bloquer le compte développeur, ainsi que tous les autres comptes que Google considère impliqués:


Et ce ne sont que des exemples isolés d'histoires qui ne sont même pas les plus «effrayantes» publiées tous les deux jours dans r / androiddev. Dans la "catégorie" correspondante, des dizaines d'histoires sur chacun de ces sujets. Parfois, des cas similaires arrivent sur Hacker News. Il semble que Google traite l'interdiction des comptes et la désinstallation des applications Play Store avec la même frivolité que les modérateurs de jeux en ligne, qui, pour la moindre raison, interdisent aux joueurs d'être soupçonnés de fraude. Pour la plupart des joueurs, les jeux en ligne ne sont que du divertissement, contrairement au développement d'applications Android. La question évidente se pose: que faire aux personnes interdites?

Maintenant, je comprends que l'analogie avec YouTube est terrible. Vous voyez, YouTube reçoit généralement des avertissements. Il n'y a rien de tel que vous vous êtes réveillé et que vous avez soudainement constaté que votre compte était banni. Les auteurs de vidéos ont généralement la possibilité de tirer parti du drame en s'adressant aux utilisateurs. Le public sympathise généralement avec eux, tandis que les développeurs d'applications traitent l'indignation des utilisateurs qui n'ont aucune idée ou qui ne veulent pas savoir pourquoi nous devons supprimer massivement des fonctionnalités ou réduire les performances de nos applications. Par exemple, le développeur de l'enregistreur ACR populaire, après avoir supprimé l'autorisation d'accéder au journal des appels, a fait face à de mauvaises critiques, à des abus et à des blasphèmes de milliers d'utilisateurs en colère - et ce, après un avertissement de campagne complet des changements à venir (en tant qu'utilisateur ACR, j'ai désinstallé la version Play Store et installé via XDA Labs, une version indépendante qui conserve les anciennes fonctionnalités).

Pour les développeurs indépendants et les petites entreprises, le développement Android est devenu plus risqué que jamais. Aujourd'hui, je vais commencer à travailler sur le projet et six mois plus tard, lorsque je préparerai la première version, les modifications de la politique de catalogue ne permettront pas sa publication ou n'affecteront pas sérieusement la fonctionnalité ... en plus du paragraphe ci-dessus sur les API obsolètes et qui changent la sémantique, nécessitant une prise en charge constante du code, pour suivre les dernières versions.

Si vous avez suivi les liens ci-dessus, vous avez compris autre chose: Google manque en fait de support utilisateur pour de vraies personnes, et si leurs bots étaient aussi réactifs que Google Assistant ... S'ils ne sont pas des bots, mais des personnes, alors la différence ne se fait pas sentir: ils crachent des réponses de modèle. Il est bien connu que la meilleure façon de résoudre les problèmes de référencement sur Google Play est d'attirer l'attention d'un employé de Google sur les réseaux sociaux.

Il semble que le niveau d'assistance de Google dépend de la puissance du bruit que vous faites sur les réseaux sociaux. Et c'est une corrélation exponentielle, car beaucoup de bruit ne suffit pas pour obtenir un niveau de support modéré; besoin de faire un bruit géant. C'est un problème avec la plupart des services Google, surtout si vous n'utilisez pas G Suite (apparemment, les développeurs d'applications ne sont pas considérés comme des "clients payants" en matière d'assistance). Une des choses que j'aimerais réglementer au niveau de l'État, bien sûr, est l'obligation de ces méga-sociétés de fournir un soutien réel aux utilisateurs.

Bien que l'analogie avec YouTube était probablement erronée, il y a un autre parallèle ici: beaucoup pensent que YouTube a modifié ces derniers temps les modèles commerciaux et les algorithmes, favorisant les grands auteurs bien connus et rendant plus difficile la tâche des plus petits. Je pense que nous observons une tendance similaire dans le Google Play Store - gardez à l'esprit que la popularité de l'application ou son «niveau» ne doit pas être estimée par le nombre de téléchargements ou d'utilisateurs actifs, mais par le montant des commissions pour Google provenant de la publicité et des achats dans le jeu.

"Android est open source"


«Android est open source» est devenu une blague il y a cinq ans. Bien que le projet Open Source Android (AOSP) existe toujours, de nombreux composants qui sont vraiment importants pour les utilisateurs finaux et les développeurs sont de plus en plus fermés.

Les applications de Google peuvent faire des choses qui sont presque inaccessibles aux applications tierces, en raison de leur interaction étroite avec l'hippopotame propriétaire, qui est Google Play Services. Cela est particulièrement visible dans l'application Google elle-même, ainsi que dans Google Assistant et Google Launcher (Google Start).

Il manque beaucoup dans l'assemblage AOSP, et de nombreuses applications, dont la mienne, auront des problèmes de fonctionnement normal. Les projets de «débogage» d'Android ont développé des alternatives gratuites pour de nombreuses fonctionnalités de Google Play. Mais le fait que la communauté doive développer ces alternatives et qu'elles soient indispensables au lancement des applications les plus populaires montre qu'à l'heure actuelle Android peut être considéré comme gratuit sauf en tant que distribution Linux.

L'AOSP lui-même est effectivement contrôlé par Google. Ce projet est important car il définit des API communes pour les différentes «versions OEM» d'Android, afin que nous puissions développer pour Android, pas pour «Samsung Android» ou «Nokia Android». Mais quelle API mettre en œuvre, et laquelle exclure, dépend entièrement de Google. Il en va de même pour l'architecture générale du système, le modèle de sécurité, etc. Cela signifie que Google peut incliner l'AOSP en tout cas, supprimer des fonctions et le transférer vers des composants propriétaires comme bon lui semble.

De toute évidence, la mise en œuvre de fonctions importantes via Google Play et la liaison du système d'exploitation aux composants de Google est importante pour maintenir le contrôle sur les «OEM-assembleurs». L'effet positif pour les utilisateurs et les développeurs est que les fonctions et les correctifs de sécurité deviennent disponibles même sur les appareils qui ne reçoivent pas de mises à jour d'OEM ou ne reçoivent des mises à jour que pour leur version d'Android, mais pas pour une nouvelle. L'effet négatif est que ces changements du jour au lendemain peuvent affecter des versions encore plus anciennes d'Android. Cela reste entièrement à la discrétion de Google, ainsi que des restrictions d'application sur le Play Store.

Il semble que Google n'ouvre que le minimum nécessaire d'Android, combien est nécessaire pour que le système d'exploitation fonctionne sur les appareils OEM. Nous n'atteignons pas le point extrême, principalement parce que les plus grands OEM ont suffisamment de poids pour empêcher cela. Je pense que si Google pouvait faire d'Android un système complètement fermé, je le ferais. Fait intéressant, ce qui va changer dans le futur système d'exploitation Fuchsia.

La sécurité au détriment de la fonctionnalité


Google a deux excuses pour les changements dans les politiques d'Android et de Google Play: «sécurité» et «expérience utilisateur», cette dernière incluant «autonomie de la batterie». Je ne sais pas pour qui Google a développé son «expérience utilisateur» ces dernières années, mais certainement pas pour les «utilisateurs expérimentés» comme moi. Cependant, parlons d'abord de sécurité.

Les mesures de sécurité doivent être proportionnées à ce qu'elles protègent. Avec chaque version d'Android, nous voyons de plus en plus l'accent sur la sécurité: par exemple, ruiner un téléphone devient plus difficile sans micrologiciel personnalisé, qui inclut initialement la fonctionnalité de superutilisateur. Nous pouvons conclure que Google agit pour le bien. Mais il est facile de voir que, sous prétexte de sécurité, certaines autorisations, telles que les journaux d'appels et l'accès aux messages, sont refusées ou que les API, y compris l'accès au stockage externe, sont supprimées.

Renforcer les mesures de sécurité est logique, car nous stockons de plus en plus d'informations précieuses dans nos téléphones: des informations privées «à l'ancienne» aux données biométriques, telles que les empreintes digitales, les analyses faciales et les rétines. Bien sûr, Google et d'autres sont probablement les plus préoccupés par la protection de l'accès aux systèmes de paiement, aux clés DRM, etc.

Avant de terminer notre discussion sur la sécurité, parlons un peu de l'expérience utilisateur - c'est une autre excuse populaire pour restreindre ou supprimer complètement certaines fonctions. Si 1% des gens utilisent une fonction trop compliquée (ou même «dangereuse»), alors elle est souvent simplifiée ... et le 1% susmentionné reste avec un système qui ne prend plus en charge son cas d'utilisation. N'est-ce pas si mauvais? Mais Google est tenu de répéter ce processus assez souvent lors de la publication de nouvelles versions (afin que les employés puissent recevoir leurs bonus), chaque fois en liant les mains d'un autre 1% d'utilisateurs, et quel sera le résultat? Probablement uniquement la fonction de visualisation des publicités (évidemment, les publicités Google). Vous n'avez pas besoin d'appeler, non? En fin de compte, l'interlocuteur peut se révéler être un escroc, vous entraîner dans un schéma d'ingénierie sociale ou quelque chose comme ça. ...

Il est difficile de combiner une sécurité renforcée avec une bonne expérience utilisateur. Il semble que les notifications d'autorisation ne fournissent pas non plus. Il est probablement plus facile de supprimer complètement les autorisations que de donner aux utilisateurs le choix.

En fait, tout se résume au choix de l'utilisateur. Android permettait autrefois un petit sacrifice de sécurité en échange d'applications plus puissantes et innovantes qu'iOS. Auparavant, je pouvais exécuter 10 applications en arrière-plan et mettre la batterie en une demi-journée, mais maintenant, si je veux le faire, je devrai regarder 10 notifications actuelles. J'avais l'habitude de pouvoir échanger des fichiers entre des applications comme sur le bureau, mais, apparemment, c'est aussi une insulte à une bonne sécurité. Auparavant, je pouvais analyser les réseaux Wi-Fi toutes les minutes, mais dans Android 9, cela était même limité à quelques analyses par heure, tuant certains cas d'utilisation normaux, y compris mon projet de graduation. Heureusement, à l'université, nous pouvons simplement prétendre que la dernière version d'Android est la huitième.

Les cartes à puce, y compris les cartes SIM, ont été inventées pour conteneuriser la partie protégée des systèmes. Authentification, certification - toutes les fonctions de sécurité doivent y être effectuées afin qu'un grand système reste moins sécurisé et plus flexible. Mais à un moment donné au cours des dernières décennies, plusieurs entreprises ont décidé qu'il serait préférable (peut-être pour une «expérience utilisateur»?) De transférer d'importantes opérations de sécurité vers le processeur d'application, y compris des systèmes de paiement sans contact entiers.Des systèmes comme SafetyNet ont été développés . Et interdisons le lancement d'une application bancaire sur un téléphone rooté? Imaginez que les services bancaires par Internet sur le bureau refusent de fonctionner car il s'agit de l'information que je connais le mot de passe du compte administrateur ...

En fin de compte, en restreignant les applications normales dans son répertoire, Google encourage finalement le téléchargement direct et l'installation de l'APK. Ceci n'est pas souhaitable du point de vue de la sécurité, pas besoin d'expliquer pourquoi.

Nos téléphones sont définitivement devenus plus sûrs, mais une «sécurité» excessive gâche la vie des personnes qui en veulent plus du téléphone que sans s'arrêter pour regarder YouTube et vérifier leur flux sur le réseau social. Vous devez également vous rappeler que pour de nombreuses personnes, un smartphone est le seul ordinateur et ils ne peuvent pas dire: "Faites simplement cette tâche difficile sur le bureau." Que diriez-vous de ne pas stocker autant d'informations sensibles sur le téléphone afin que nous puissions revenir à notre flexibilité précédente avec les mêmes risques? Android, permettez-moi de me tirer une balle dans le pied, comme avant.

Le manque d'alternatives réelles


Je ne serais pas si inquiet de ce mouvement Android vers les masses (ou de la compréhension de Google de ce que le grand public est autorisé à faire) s'il y avait une alternative viable au système d'exploitation mobile. Mais nous ne l'avons pas. Il n'y a que iOS d'Apple, dont l'attrait dès le début était la devise «ça fonctionne»: une plate-forme sécurisée avec des fonctionnalités limitées, ce qui limite en même temps la possibilité d'erreurs. Je n'ai aucun doute que c'est une trouvaille pour la plupart des utilisateurs. Mais personnellement, une telle plateforme ne me convient pas. Comme je l'ai dit, donnez-moi la possibilité de me tirer une balle dans le pied si je le souhaite: donnez-moi 2 heures d'autonomie si je le souhaite, et laissez mes propres applications espionner mon emplacement si je le leur permet.

Les limites d'iOS étaient bonnes, car pendant de nombreuses années, nous avions Android qui nous permettait de faire de telles choses. Il se trouve que grâce à l'AOSP et au manque de concurrence, Android s'est avéré être la norme de facto pour chaque smartphone qui n'est pas Apple. Parmi les smartphones à bas prix, Android est en fait la seule option. Bien sûr, pour cette raison, la part de marché d'Android a augmenté. Depuis que "tout le monde" l'utilise, il y avait une tentation de copier le modèle iOS "ça marche juste" et d'imposer la sécurité aux personnes "sujettes à l'automutilation" - maintenant vous ne pouvez pas vous blesser, même si vous le souhaitez.

Les efforts des concurrents Android sont au mieux ridicules. Windows Phone / Windows Mobile a échoué en partie en raison d'une entrée faible et peut-être trop tardive sur le marché, couplée à une «vision» douteuse et à de mauvaises décisions de gestion de Microsoft. Bien que le système Microsoft soit vraiment bon, sinon il y avait tellement de fans de WP / WM, mais il est entré sur le marché si tard (et avec un avenir si incertain) qu'il ne pouvait pas attirer les développeurs, et sans applications haut de gamme, la plate-forme n'est pas nécessaire pour les gens, pour ainsi dire, excellente elle n'était pas d'un point de vue technique. De toute évidence, le problème est que la plupart des meilleures applications sont publiées par Google; elle a publié ces applications iOS principalement parce que la plate-forme iOS est venue plus tôt.

Si même un gros joueur aux poches profondes, comme Microsoft, ne peut imaginer une troisième plate-forme mobile, alors que dire des tentatives moins ambitieuses, comme Firefox OS. Ici, le résultat est tout à fait prévisible. Ils ont également un problème supplémentaire à trouver du fer à courir. Malheureusement, vous ne pouvez pas prendre et modifier le système d'exploitation sur votre téléphone, comme sur un ordinateur. En 2015, je me plaignais déjà du manque de standardisation du matériel des smartphones . Il est en fait intéressant de lire cet article lorsque Android 4.4 était la dernière version et de voir comment ma perception d'Android a changé.

Il convient également de noter qu'une alternative réussie à Android devrait certainement exécuter des applications Android, éventuellement via la couche de compatibilité. D'une certaine manière, Android a établi la norme pour les applications, tout comme les normes Web dictées par IE6 il y a 15 ans. Quelqu'un a-t-il dit antitrust ?

Dernières pensées


Ainsi, Google via Android définit la norme - et la mise en œuvre - des fonctionnalités des smartphones modernes, à moins qu'Apple n'introduise une innovation majeure qui doit être rapidement mise en œuvre dans Android. Maintenant, il semble qu'Apple ralentisse un peu avec l'innovation, alors Google a pris l'initiative, faisant d'Android plus comme iOS, en le transformant en un système d'exploitation doux, limité et adapté aux enfants qui lie les mains aux développeurs et aux utilisateurs expérimentés.

Google élimine certaines des indésirables et même quelques applications malveillantes du Play Store, améliorant l'automatisation, tout en étant encore plus accroupi et sourd que jamais. Il est difficile de distinguer une application normale d'une application malveillante sur la machine, et l'utilisateur n'est pas autorisé à résoudre un problème aussi important. Par conséquent, Google "interdit" simplement l'utilisation de certaines fonctions en dépréciant l'API et en interdisant ces fonctions dans le répertoire du programme, bloquant ainsi littéralement toutes les applications qui souhaitent ouvrir des fichiers arbitraires dans le référentiel de l'utilisateur, ainsi que des enregistreurs vocaux, des programmes d'automatisation, etc.

Android. , . , Android, Android, Android .

Source: https://habr.com/ru/post/fr446346/


All Articles