Ce qui a été dit sur Google I / O 2019: Android 10, AR-applications et bien plus encore

Dans cet article, je parlerai de mes impressions sur la conférence Google I / O 2019, que mes collègues et moi avons visités l'autre jour (et même «illuminé» avec notre application dans l'une des présentations). Cela vous aidera à vous faire une idée de l'atmosphère et vous encouragera peut-être à regarder quelques rapports publiés sur la chaîne Google Developers .


Développeurs Badoo sur Google I / O 2019

Jour 0. Avant-propos


Pour vous rendre à la conférence, vous devez gagner à la loterie, qui commence en février sur le site Web de Google I / O (en général, cela devient connu des nouvelles). Mais la victoire ne prévoit pas de ticket, mais permet seulement de l'échanger contre 1 150 dollars. Il existe d'autres programmes qui vous permettent d'obtenir un billet à un prix très avantageux ou gratuitement, par exemple Code Jam . Les étudiants et les employés des universités peuvent acheter un billet beaucoup moins cher - pour 375 $.

Avant la conférence, les sociétés informatiques avaient organisé des fêtes pour les participants. Je les ai découvertes grâce à un chat sur Telegram, qui a réuni plus de 150 utilisateurs russophones. En règle générale, vous pouvez accéder à ces chats sur invitation de communautés Android spécialisées dans Telegram. Ces parties sont une bonne occasion de rencontrer d'autres participants à la conférence dans un cadre informel. Par exemple, nous avons rencontré l'organisateur Mobius et une équipe de développeurs qui fabriquent l'application pour l'Air Traveller App in the Air.

La conférence s'est tenue sous le slogan «Pas de parking». Google a organisé des navettes gratuites vers et depuis les hôtels les plus populaires de la région, et a également attribué des codes promotionnels pour le service de taxi Lyft (concurrent américain d'Uber).

Il y avait cinq développeurs de Badoo. Allons tous ceux qui ont gagné la possibilité d'acheter un billet. Les rapports ont été divisés en six à dix volets, et souvent nous nous sommes séparés pour couvrir des sujets plus intéressants.

Jour 1


Le premier jour de la conférence est ouvert par les soi-disant keynotes - présentations générales. Le premier est pour tout le monde, le second est pour les développeurs.


Avant le discours, man-DJ et AI-DJ travaillent ensemble

Dernières nouvelles


Lors de la première keynote, les présentations ont parlé de différents projets Google. Voici quelques nouvelles:

  • la société continue de développer Google Duplex - un robot assistant qui peut appeler et réserver du temps à la table du coiffeur / restaurant;
  • Google Lens peut analyser les chèques et partager le montant de la facture avec le montant du pourboire (une tâche populaire aux États-Unis);
  • Google Assistant fonctionnera hors ligne et diminuera considérablement de taille, et les messages audio dans les messageries instantanées et les appels peuvent être vus comme du texte à l'écran à l'aide de Live Relay.

Dans Android 10 apparaîtra:

  • plus de contrôle parental;
  • thème sombre;
  • meilleure prise en charge des dispositifs de pliage;
  • nouveaux gestes de navigation;
  • partage amélioré;
  • Nouveau regroupement des notifications par priorité.

Lors d'une présentation aux développeurs, ils ont annoncé que Kotlin est désormais le principal langage de programmation pour le développement Android. Google a présenté une nouvelle bibliothèque pour la caméra Camera X, la nouvelle UI Jetpack Compose déclarative (apparemment, elle est encore assez grossière, mais très prometteuse), de nouvelles fonctionnalités pour mettre à jour l'application: le développeur pourra demander lui-même la mise à jour dans l'interface de l'application.


Les sous-titres sont générés en temps réel lors de chaque rapport.

Conseils de pliage de Google


Récemment, seules les personnes paresseuses ne parlent pas de dispositifs de pliage. Bien qu'ils occupent désormais une maigre part de marché, leurs applications devraient en quelque sorte fonctionner.

Les représentants de Google ont assuré que si vous suivez les meilleures pratiques, par exemple, gérez correctement le retournement d'écran, alors tout fonctionnera hors de la boîte. Pour prendre en charge les appareils pliants, le même mécanisme est utilisé que pour les fenêtres multiples sur les tablettes et Chrome OS. En plus de l'androïde: maxAspectRatio déjà existant, android: minAspectRatio apparaîtra pour ajouter des restrictions sur les proportions des parties prises en charge dans l'application. Google affirme que 2 pouces (5,08 cm) sera la largeur d'écran minimale des appareils Android à partir d'Android Q.

Quelques éléments à vérifier si vous implémentez la prise en charge des appareils de pliage dans votre application lors du pliage et du déroulement de l'appareil:

  • l'application doit restaurer le même état;
  • la position de défilement doit être maintenue;
  • le focus du clavier doit rester le même.

Si vous ne souhaitez pas que l'activité soit redimensionnée, l'indicateur android: resizeableActivity = false peut ne pas toujours aider, car le système peut toujours redimensionner l'activité ou la mettre en mode de compatibilité:



Mode de compatibilité

Il semble qu'il y ait maintenant très peu d'utilisateurs avec des appareils pliants, mais le coût de ces gadgets est assez élevé et il est absolument nécessaire de vérifier le fonctionnement de l'application sur eux.

Sur les avantages et les inconvénients de la multi-modularité


Lors de la conférence, une grande attention a été accordée à la modularité. Les principaux avantages de la multimodularité:

  • les tests ne peuvent être exécutés que pour les modules qui sont en quelque sorte affectés par les changements dans la branche actuelle;
  • Vous pouvez isoler les tests de diverses fonctions de l'application; par exemple, à Badoo, nous avons une application de galerie qui contient tous les éléments de l'interface utilisateur; pendant leur développement, vous pouvez créer cette application assez rapidement, car elle a un nombre limité de dépendances (mes collègues en ont parlé dans un rapport sur MBLT DEV );
  • la possibilité d'ajouter des fonctionnalités dynamiques: selon le locuteur, 80% des utilisateurs utilisent 20% des fonctions de l'application, de sorte que la plupart des fonctions peuvent être déplacées vers le module dynamique et téléchargées ultérieurement; les bons candidats sont, par exemple, les fonctionnalités pour les utilisateurs experts, les fonctionnalités pour lesquelles vous devez payer, l'écran À propos de l'application; Dans le même temps, l'intégration ne doit pas devenir une fonction dynamique, car elle sera présentée à tous les utilisateurs de l'application.

De plus, la multi-modularité évolue bien pour un grand nombre de développeurs, ce qui est un avantage significatif pour les équipes importantes et à croissance rapide.
La multimodularité pose également des problèmes. Par exemple, il n'est pas clair comment créer une base de données. Il existe trois approches:

  • créer une base de données pour toute l'application;
  • créer une base de données pour chaque module;
  • créer une base de données pour plusieurs modules pouvant être connectés logiquement.

Toutes les approches ont leurs inconvénients, mais les gars de Google promettent un bel avenir avec Room, où ils veulent maintenir l'isolement des modules et prendre en charge les requêtes inter-modules, ainsi que les modules avec des fonctions dynamiques. Malheureusement, ce n'est pas encore disponible.

Nous avons plus de 170 modules dans l'application Badoo, nous n'utilisons pas encore la fonctionnalité dynamique, mais nous obtenons d'autres avantages et inconvénients du multi-module.

2e jour


Le deuxième jour de la conférence a été le plus mouvementé. Le premier rapport a commencé à 8h30 et le dernier s'est terminé à 20h00. Au total, 90 rapports ont été soumis.


Ce public est complètement rempli de gens en une dizaine de minutes.

Nouvelle interface utilisateur déclarative


Android a déjà dix ans, l'interface utilisateur actuelle est moralement obsolète. L'ancienne interface utilisateur est difficile à maintenir. Par exemple, la classe View a 29 188 lignes de code, y compris les commentaires, la version AppCompat a envahi de nombreux hacks pour différentes versions d'Android. Après avoir regardé cette image, les développeurs de Google ont décidé de créer un cadre d'interface utilisateur qui accompagnera l'application et deviendra complètement indépendant d'Android. Le nom de travail du framework est Jetpack Compose.

Flutter, React, Litho et Vue.js ont servi d'inspiration pour les développeurs, donc le nouveau cadre semblera familier à beaucoup. L'idée principale est de s'assurer que l'interface utilisateur répond aux changements dans le modèle, alors qu'il n'y a pas de logique dans l'interface utilisateur.

La hiérarchie des vues est représentée comme des fonctions marquées de l'annotation @Composable. Le framework utilise le plug-in du compilateur pour intercepter les appels aux fonctions composables.
L'équipe Google promet de prendre en charge le nouveau cadre dans les anciennes hiérarchies de vues (en utilisant les annotations @GenerateView), ainsi que de prévisualiser directement dans Android Studio et de prendre en charge les animations.
Jetpack Compose est encore assez brut et n'est pas prêt à être utilisé dans des applications du monde réel, mais il vaut la peine d'étudier les principes de son travail maintenant pour comprendre où va le développement Android.

Conception d'applications de réalité augmentée


Google a préparé des conseils pour la conception d'applications AR.

  • Tous les éléments d'interface doivent être sur la scène AR et non sur l'appareil, car les utilisateurs ne font pas attention à l'appareil lorsqu'ils sont passionnés par l'AR.
  • Évitez les moments où l'utilisateur doit prendre du recul, car cela pourrait entraîner des blessures.
  • Si l'expérience AR est construite dans la ville, n'oubliez pas ses dangers. Par exemple, vous devez avertir l'utilisateur de l'approche des passages pour piétons et lui demander d'abaisser l'appareil.
  • Sur la scène AR, les objets doivent interagir avec la lumière réelle, c'est-à-dire que les ombres doivent changer lorsque la lumière change. ARCore fournit des données d'éclairage pour permettre de mettre en évidence des objets virtuels.
  • Les objets en RA doivent posséder les propriétés qu'ils possèdent en réalité. Par exemple, la balle doit rebondir sur le sol.
  • Lorsque l'utilisateur déplace l'objet loin, il est nécessaire d'augmenter la zone tactile de l'objet afin qu'il reste possible de le contrôler de manière pratique.
  • Le développeur doit expliquer clairement à l'utilisateur que l'application AR nécessite un accès à la caméra de l'appareil pour fonctionner.

Vous trouverez plus d'informations sur la conception des éléments AR dans l'application dans la vidéo de la conférence .

Meilleures pratiques pour l'utilisation de texte lors du développement d'applications Android


Ce rapport décrit les meilleures pratiques pour travailler avec du texte et quelques changements dans la nouvelle version d'Android.

  • Android Q désactivera la césure par défaut.
  • PrecomputedTextCompat vous aide à calculer la taille du texte avant le rendu. Il convient de noter que la modification de la police et d'autres paramètres de TextView après le passage des paramètres à PrecomputedTextCompat sera impossible.
  • Styles qui s'appliquent au texte (de la priorité la plus élevée à la priorité la plus basse):
    • Span
    • Vue (par exemple, définie par des attributs en XML),
    • Le style
    • Style par défaut
    • Thème
    • Apparence du texte.

  • Sur Android, il sera possible de définir des remplacements pour les polices à l'aide de Typeface.CustomFallbackBuilder. Par exemple, si certaines polices de l'application ne sont pas prises en charge dans l'une des langues, vous pouvez en spécifier une autre comme alternative, vous pouvez également définir des polices pour les emoji. Notre application a été traduite dans plus de 40 langues, il est donc important pour nous de comprendre à quoi elle ressemblera si la police principale n'est pas prise en charge dans l'une d'entre elles.
  • Utilisez android: imeOptions = "flagNoPersonalizedLearning" dans EditText pour empêcher la mémorisation des mots saisis (par exemple, lors de la saisie d'un code promotionnel).
  • Si vous devez utiliser deux langues dans une application, vous pouvez utiliser setImeHintLocales pour signaler au clavier que vous avez besoin d'une langue différente. Cela peut être utile pour les applications de dictionnaire ou les services de formation.

Et encore une petite nouvelle. Dans la présentation de GIF et plus encore: intégrer la recherche d'expressions dans votre application, Google a présenté son API pour travailler avec les GIF - Tenor , une alternative au Giphy connu depuis longtemps. Nous avons été l'un des premiers à l'utiliser dans notre application Badoo, nous sommes donc arrivés à la diapositive du haut-parleur comme exemple d'utilisation. Une bagatelle, mais sympa!


Notre application «éclairée» dans la présentation de Tenor

Le concert


À la fin de la deuxième journée, Google a organisé un concert au cours duquel The Flaming Lips s'est produit. Pour être honnête, je n'avais jamais entendu parler d'elle auparavant, mais, apparemment, elle est très populaire aux États-Unis. Un petit fragment du discours est disponible sur Internet.


Avant le concert

3e jour


Le troisième jour a été court. À 16 h 30, tous les rapports ont été soumis et à la fin des rapports, la conférence a pris fin. La plupart du temps ce jour-là, j'ai parlé avec d'autres participants, mais je vais vous parler de quelques rapports qui méritent une attention particulière.


Il y a des zones de communication à la conférence où il n'est pas recommandé d'utiliser de l'équipement

Principes d'animation


Dans son rapport, Nik Butcher a expliqué comment implémenter des animations à l'ère de la réactivité pour améliorer l'expérience utilisateur. Le problème est que dans une application réactive, les objets View n'ont pas d'état, et les animations, au contraire, ont un état.

Les bonnes animations doivent répondre à trois critères:

  • possibilité de redémarrage (réentrante): l'animation peut être annulée et redémarrée;
  • continuité: l'animation ne doit pas sauter d'un état à un autre;
  • douceur: l'animation devrait changer la vitesse / direction du mouvement progressivement.

Comment y parvenir:
  • lors du démarrage de l'animation, définissez uniquement la valeur finale (là où elle doit se terminer); à une valeur initiale donnée, l'animation peut passer d'un état à un autre, cela peut arriver si elle démarre en appuyant sur un bouton et que l'utilisateur clique dessus plusieurs fois;
  • annuler l'ancienne animation avant de commencer une nouvelle (parfois elle est déjà implémentée dans le SDK Android; par exemple, ViewPropertyAnimator, obtenu à partir de View # animate, annule l'animation précédente pour la propriété animée);
  • utiliser Spring Animation ; de telles animations se déplacent en tenant compte des lois de la physique, ce qui signifie que la fluidité et la continuité sont atteintes plus facilement, c'est-à-dire que si un objet se déplace du point A au point B et qu'une commande arrive pour se déplacer vers le point C, alors dans le cas de l'utilisation de Spring Animation, l'objet changera en douceur la direction du mouvement;
  • utilisez <animated-selector> pour ajouter une animation à Drawable; Pour éviter les transitions entre tous les états possibles, vous pouvez entrer un état intermédiaire (par exemple, un état de démarrage) et le parcourir.

Mais il vaut mieux voir une fois qu'entendre cent fois pour lire, alors voici une vidéo avec un rapport.

Test de performance


La bibliothèque de mesure des performances des applications est désormais en état alpha dans le cadre de Jetpack. Il vous permet de prendre des mesures des performances du code et évite beaucoup d'erreurs de mesure, il existe également une intégration avec Android Studio.

Points à retenir lors de l'écriture et de l'exécution de tests de performances à l'aide de la bibliothèque Jetpack Benchmark :

  • il n'est pas fiable de collecter des mesures sur l'émulateur, un avertissement au démarrage vous en informera avec bonté;
  • ProGuard / R8 doit être allumé pour mesurer correctement les performances;
  • l'appareil doit avoir un niveau de charge de batterie suffisant pour qu'un faible niveau de charge n'affecte pas les résultats de mesure;
  • le module dans lequel les tests de performance sont écrits doit être avec le paramètre "debuggable = false";
  • ne comparez pas les résultats de mesure sur différents appareils, ils peuvent varier considérablement.


Conclusion



Équipe Badoo et développeur Google

Google I / O mérite certainement une visite. Dans une telle atmosphère, autour d'une tasse de thé, vous pouvez entendre de nombreuses histoires intéressantes et découvrir des solutions d'ingénierie intéressantes. Par exemple, comment les gars de VKontakte ont proposé un thème sombre et l'ont proposé aux utilisateurs qui ont demandé: "Où est le thème sombre?", Comment de l'autre côté de la Terre les développeurs de Tinder luttent contre le spam et le contenu pornographique et comment l'équipe de l'application dans l'air a-t-elle mis en œuvre enregistrement automatique pour les voyages en avion. Vous pouvez également voir des représentants de Google créer les outils que nous utilisons et poser des questions.

En général, une conférence de ce niveau n'est pas seulement un tas de rapports, mais aussi de nombreuses personnes intéressantes avec lesquelles vous pouvez échanger des expériences.

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


All Articles