In diesem Artikel werde ich über meine Eindrücke von der Google I / O 2019-Konferenz berichten, die meine Kollegen und ich neulich besucht haben (und in einer der Präsentationen sogar mit unserer Bewerbung „beleuchtet“ haben). Dies hilft Ihnen dabei, ein Gefühl für die Atmosphäre zu bekommen, und ermutigt Sie möglicherweise, einige Berichte anzusehen, die auf
dem Google Developers-Kanal veröffentlicht wurden .
Badoo-Entwickler auf Google I / O 2019Tag 0. Vorwort
Um zur Konferenz zu gelangen, müssen Sie die Lotterie gewinnen, die im Februar
auf der Google I / O-Website beginnt (normalerweise wird dies aus den Nachrichten bekannt). Der Sieg sieht jedoch kein Ticket vor, sondern bietet nur die Möglichkeit, es für 1.150 Dollar zu kaufen. Es gibt andere Programme, mit denen Sie ein Ticket mit einem großen Rabatt oder kostenlos erhalten können, z. B.
Code Jam . Studenten und Universitätsangestellte können ein Ticket viel billiger kaufen - für 375 US-Dollar.
Vor der Konferenz hatten IT-Unternehmen Partys für die Teilnehmer. Ich habe davon in einem Chat über Telegramm erfahren, in dem mehr als 150 russischsprachige Benutzer zusammenkamen. In der Regel können Sie auf Einladung spezialisierter Android-Communitys in Telegram an diesen Chats teilnehmen. Solche Partys sind eine gute Gelegenheit, andere Konferenzteilnehmer in einem informellen Rahmen zu treffen. Zum Beispiel haben wir den Veranstalter Mobius und ein Entwicklerteam getroffen, die die App für die Flugreisende App in the Air erstellen.
Die Konferenz fand unter dem Motto „Kein Parken“ statt. Google organisierte kostenlose Shuttlebusse zu und von den beliebtesten Hotels in der Region sowie Promotion-Codes für den Lyft-Taxiservice (Ubers US-Rivale).
Es gab fünf Entwickler von Badoo. Lassen Sie uns alle gehen, die die Gelegenheit gewonnen haben, ein Ticket zu kaufen. Die Berichte gingen in sechs bis zehn Streams, und oft teilten wir uns auf, um interessantere Themen zu behandeln.
Tag 1
Der erste Tag der Konferenz wird durch die sogenannten Keynotes - allgemeine Präsentationen - eröffnet. Das erste ist für alle, das zweite für Entwickler.
Vor der Keynote arbeiten Man-DJ und AI-DJ zusammenAktuelle Nachrichten
Bei der ersten Keynote wurde in Präsentationen über verschiedene Google-Projekte gesprochen. Hier sind einige Neuigkeiten:
- Das Unternehmen entwickelt Google Duplex weiter - einen Roboterassistenten, der am Friseur- / Restauranttisch anrufen und Zeit buchen kann.
- Google Lens kann Schecks analysieren und den Rechnungsbetrag mit dem Trinkgeldbetrag teilen (eine beliebte Aufgabe in den USA).
- Google Assistant funktioniert offline und nimmt erheblich ab. Audio-Nachrichten in Instant Messenger und Anrufen können mithilfe von Live Relay als Text auf dem Bildschirm angezeigt werden.
In Android 10 erscheint:
- mehr elterliche Kontrolle;
- dunkles Thema;
- verbesserte Unterstützung für Faltvorrichtungen;
- neue Navigationsgesten;
- verbessertes Teilen;
- Neue Gruppierung von Benachrichtigungen nach Priorität.
Bei einer Präsentation vor Entwicklern gaben sie bekannt, dass Kotlin nun die Hauptprogrammiersprache für die Android-Entwicklung ist. Google hat eine neue Bibliothek für die Camera X-Kamera eingeführt, das neue deklarative UI Jetpack Compose (anscheinend ist es immer noch recht grob, aber sehr vielversprechend), neue Funktionen zum Aktualisieren der Anwendung: Der Entwickler kann das Update selbst über die Anwendungsoberfläche anfordern.
Untertitel werden in jedem Bericht in Echtzeit generiert.Google Falttipps
In letzter Zeit sprechen nur faule Leute nicht über Faltvorrichtungen. Obwohl sie jetzt einen mageren Marktanteil einnehmen, sollten Anwendungen auf ihnen
irgendwie funktionieren.
Vertreter von Google versicherten, dass alles sofort funktioniert, wenn Sie die Best Practices befolgen, z. B. den Bildschirmwechsel korrekt handhaben. Zur Unterstützung von Faltgeräten wird der gleiche Mechanismus verwendet wie für Multi-Windows auf Tablets und Chrome OS. Zusätzlich zu dem bereits vorhandenen android: maxAspectRatio scheint android: minAspectRatio Einschränkungen für die Seitenverhältnisse der unterstützten Parteien in der Anwendung hinzuzufügen. Google behauptet, dass 2 Zoll (5,08 cm) die minimale Bildschirmbreite von Android-Geräten ab Android Q sein wird.
Einige Dinge, die Sie überprüfen sollten, ob Sie beim Biegen und Abrollen des Geräts Unterstützung für Faltgeräte in Ihrer Anwendung implementieren:
- Die Anwendung sollte denselben Status wiederherstellen.
- Die Bildlaufposition sollte beibehalten werden.
- Der Tastaturfokus sollte gleich bleiben.
Wenn Sie nicht möchten, dass die Größe der Aktivität geändert wird, hilft das Flag android: resizeableActivity = false möglicherweise nicht immer, da das System die Größe der Aktivität weiterhin ändern oder sie in den Kompatibilitätsmodus versetzen kann:
KompatibilitätsmodusEs scheint, dass es derzeit nur sehr wenige Benutzer mit Faltgeräten gibt, aber die Kosten für solche Geräte sind ziemlich hoch und es ist definitiv notwendig zu überprüfen, wie die Anwendung auf ihnen funktioniert.
Über die Vor- und Nachteile der Multimodularität
Bei der Konferenz wurde viel Wert auf Modularität gelegt. Die Hauptvorteile der Multimodularität:
- Tests können nur für Module ausgeführt werden, die von Änderungen im aktuellen Zweig betroffen sind.
- Sie können das Testen verschiedener Funktionen der Anwendung isolieren. In Badoo gibt es beispielsweise eine Galerieanwendung, die alle UI-Elemente enthält. Wenn Sie sie entwickeln, können Sie diese Anwendung schnell genug erstellen, da sie nur eine begrenzte Anzahl von Abhängigkeiten aufweist (meine Kollegen haben in einem Bericht über MBLT DEV darüber gesprochen ).
- die Möglichkeit, dynamische Funktionen hinzuzufügen: Laut Sprecher verwenden 80% der Benutzer 20% der Funktionen der Anwendung, sodass die meisten Funktionen in das dynamische Modul verschoben und später heruntergeladen werden können. Gute Kandidaten sind beispielsweise Funktionen für erfahrene Benutzer, Funktionen, für die Sie bezahlen müssen, der Bildschirm "Über die App". Gleichzeitig sollte Onboarding nicht zu einer dynamischen Funktion gemacht werden, da es allen Benutzern der Anwendung angezeigt wird.
Außerdem lässt sich die Multimodularität für eine große Anzahl von Entwicklern gut skalieren, was für große und schnell wachsende Teams ein erheblicher Vorteil ist.
Multimodularität hat auch Probleme. Beispielsweise ist nicht klar, wie eine Datenbank erstellt werden soll. Es gibt drei Ansätze:
- Erstellen Sie eine Datenbank für die gesamte Anwendung.
- Erstellen Sie eine Datenbank für jedes Modul.
- Erstellen Sie eine Datenbank für mehrere Module, die logisch verbunden werden können.
Alle Ansätze haben ihre Nachteile, aber die Jungs von Google versprechen mit Room eine glänzende Zukunft, in der sie die Modulisolation beibehalten und modulübergreifende Abfragen sowie Module mit dynamischen Funktionen unterstützen möchten. Dies ist leider noch nicht verfügbar.
Wir haben mehr als 170 Module in der Badoo-Anwendung, wir verwenden die dynamische Funktion noch nicht, aber wir haben andere Vor-
und Nachteile von Multi-Modulen.
Tag 2
Der zweite Tag der Konferenz war der ereignisreichste. Der erste Bericht begann um 8:30 Uhr und der letzte endete um 20:00 Uhr. Insgesamt wurden 90 Berichte eingereicht.
Dieses Publikum ist in etwa zehn Minuten vollständig mit Menschen gefüllt.Neue deklarative Benutzeroberfläche
Android ist bereits zehn Jahre alt, die aktuelle Benutzeroberfläche ist moralisch veraltet. Die alte Benutzeroberfläche ist schwer zu pflegen. Zum Beispiel hat die View-Klasse 29.188 Codezeilen, einschließlich Kommentare, die AppCompat-Version ist mit vielen Hacks für verschiedene Android-Versionen überwachsen. Nach dem Betrachten dieses Bildes haben die Google-Entwickler beschlossen, ein UI-Framework zu erstellen, das mit der Anwendung geliefert wird und sich vollständig von Android löst. Der Arbeitsname des Frameworks lautet Jetpack Compose.
Flutter, React, Litho und Vue.js dienten als Inspiration für Entwickler, sodass das neue Framework vielen bekannt vorkommt. Die Hauptidee besteht darin, sicherzustellen, dass die Benutzeroberfläche auf Änderungen im Modell reagiert, während die Benutzeroberfläche keine Logik enthält.
Die Ansichtshierarchie wird als Funktionen dargestellt, die mit der Annotation @Composable gekennzeichnet sind. Das Framework verwendet das Compiler-Plugin, um Aufrufe von zusammensetzbaren Funktionen abzufangen.
Das Google-Team verspricht, das neue Framework in den alten Ansichtshierarchien (mithilfe von @ GenerateView-Anmerkungen) sowie eine Vorschau direkt in Android Studio und die Unterstützung von Animationen zu unterstützen.
Jetpack Compose ist noch ziemlich roh und nicht für den Einsatz in realen Anwendungen bereit. Es lohnt sich jedoch, die Prinzipien seiner Arbeit zu studieren, um zu verstehen, wohin die Android-Entwicklung führt.
Entwerfen von Augmented Reality-Anwendungen
Google hat Tipps zum Entwerfen von AR-Anwendungen vorbereitet.
- Alle Elemente der Benutzeroberfläche sollten sich in der AR-Szene und nicht auf dem Gerät befinden, da Benutzer das Gerät nicht beachten, wenn sie sich für AR begeistern.
- Vermeiden Sie Momente, in denen der Benutzer zurücktreten muss, da dies zu Verletzungen führen kann.
- Wenn das AR-Erlebnis in der Stadt aufgebaut ist, vergessen Sie nicht die Gefahren. Sie sollten den Benutzer beispielsweise davor warnen, sich Fußgängerüberwegen zu nähern, und ihn bitten, das Gerät abzusenken.
- In der AR-Szene müssen Objekte mit echtem Licht interagieren, dh die Schatten müssen sich ändern, wenn sich das Licht ändert. ARCore bietet Beleuchtungsdaten, mit denen virtuelle Objekte hervorgehoben werden können.
- Objekte in AR müssen die Eigenschaften besitzen, die sie in der Realität besitzen. Zum Beispiel sollte der Ball vom Boden abprallen.
- Wenn der Benutzer das Objekt weit bewegt, muss die Berührungszone des Objekts vergrößert werden, damit es weiterhin bequem gesteuert werden kann.
- Der Entwickler muss dem Benutzer klar erklären, dass die AR-Anwendung Zugriff auf die Kamera des Geräts benötigt, um arbeiten zu können.
Weitere Informationen zum Entwerfen von AR-Elementen in der Anwendung finden Sie im
Video der Konferenz .
Best Practices für die Verwendung von Text bei der Entwicklung von Android-Anwendungen
In diesem Bericht werden bewährte Methoden für die Arbeit mit Text und einige Änderungen in der neuen Version von Android erläutert.
- Android Q deaktiviert standardmäßig die Silbentrennung.
- Mit PrecomputedTextCompat können Sie die Größe des Texts vor dem Rendern berechnen. Es ist zu beachten, dass das Ändern der Schriftart und anderer Parameter der Textansicht nach dem Übergeben von Parametern an PrecomputedTextCompat nicht möglich ist.
- Stile, die für den Text gelten (von der höchsten zur niedrigsten Priorität):
- Span
- Ansicht (z. B. definiert durch Attribute in XML),
- Stil
- Standardstil
- Thema
- Textdarstellung.
- Unter Android können Fallbacks für Schriftarten mit Typeface.CustomFallbackBuilder festgelegt werden. Wenn beispielsweise eine Schriftart der Anwendung in einer der Sprachen nicht unterstützt wird, können Sie alternativ eine andere angeben und auch Schriftarten für Emoji festlegen. Unsere Anwendung wurde in mehr als 40 Sprachen übersetzt. Daher ist es wichtig zu verstehen, wie sie aussehen wird, wenn die Hauptschriftart in einer von ihnen nicht unterstützt wird.
- Verwenden Sie android: imeOptions = "flagNoPersonalizedLearning" in EditText, um das Speichern eingegebener Wörter zu verhindern (z. B. bei der Eingabe eines Aktionscodes).
- Wenn Sie in einer Anwendung zwei Sprachen verwenden müssen, können Sie mit setImeHintLocales der Tastatur signalisieren, dass Sie eine andere Sprache benötigen. Dies kann für Wörterbuchanwendungen oder Schulungsdienste nützlich sein.
Und noch eine kleine Neuigkeit. In der Präsentation von
GIFs und mehr: Integration der Ausdruckssuche in Ihre App präsentierte Google die API für die Arbeit mit GIFs -
Tenor , eine Alternative zum seit langem bekannten Giphy. Wir waren einer der ersten, die es in unserer Badoo-Anwendung verwendet haben, und haben daher die Folie des Sprechers als Anwendungsbeispiel verwendet. Eine Kleinigkeit, aber schön!
Unsere Bewerbung wurde in der Präsentation von Tenor „beleuchtet“Das Konzert
Am Ende des zweiten Tages veranstaltete Google ein Konzert, bei dem The Flaming Lips auftrat. Um ehrlich zu sein, hatte ich noch nie von ihr gehört, aber anscheinend ist sie in den USA sehr beliebt. Ein
kleines Fragment der Rede ist im Internet verfügbar.
Vor dem KonzertTag 3
Der dritte Tag war kurz. Um 16:30 Uhr wurden alle Berichte eingereicht, und mit dem Ende der Berichte endete die Konferenz. Meistens habe ich an diesem Tag mit anderen Teilnehmern gesprochen, aber ich werde Ihnen einige Berichte erzählen, die es wert sind, beachtet zu werden.
Es gibt Kommunikationsbereiche auf der Konferenz, in denen die Verwendung von Geräten nicht empfohlen wirdPrinzipien der Animation
In seinem Bericht sprach
Nik Butcher darüber, wie Animationen im Zeitalter der Reaktivität implementiert werden können, um die Benutzererfahrung zu verbessern. Das Problem ist, dass in einer reaktiven Anwendung Ansichtsobjekte keinen Status haben und Animationen im Gegenteil einen Status haben.
Gute Animationen müssen drei Kriterien erfüllen:
- Neustart (Wiedereintritt): Die Animation kann abgebrochen und erneut gestartet werden.
- Kontinuität: Die Animation sollte nicht von einem Zustand in einen anderen springen.
- Glätte: Die Animation sollte die Geschwindigkeit / Bewegungsrichtung allmählich ändern.
So erreichen Sie das:
- Legen Sie beim Starten der Animation nur den Endwert fest (wo er enden soll). Bei einem bestimmten Anfangswert kann die Animation von einem Zustand in einen anderen springen. Dies kann passieren, wenn sie durch Drücken einer Taste beginnt und der Benutzer mehrmals darauf klickt.
- Brechen Sie die alte Animation ab, bevor Sie eine neue starten (manchmal ist sie bereits im Android SDK implementiert. Beispielsweise bricht ViewPropertyAnimator, der von View # animate abgerufen wurde, die vorherige Animation für die animierte Eigenschaft ab).
- Verwenden Sie die Frühlingsanimation . Solche Animationen bewegen sich unter Berücksichtigung der Gesetze der Physik, was bedeutet, dass Glätte und Kontinuität leichter erreicht werden, dh wenn sich ein Objekt von Punkt A nach Punkt B bewegt und ein Befehl zum Bewegen zu Punkt C eintrifft, ändert das Objekt bei Verwendung der Federanimation sanft die Bewegungsrichtung.
- Verwenden Sie <Animated-Selector> , um Drawable eine Animation hinzuzufügen. Um Übergänge zwischen allen möglichen Zuständen zu vermeiden, können Sie einen Zwischenzustand (z. B. einen Startzustand) eingeben und diesen durchlaufen.
Es ist jedoch besser, einmal zu sehen als hundert Mal
zu hören, um zu lesen. Hier ist ein
Video mit einem Bericht.
Leistungstests
Die Bibliothek zum Messen der Anwendungsleistung befindet sich jetzt als Teil von Jetpack im Alpha-Status. Es ermöglicht Ihnen Messungen der Codeleistung und vermeidet viele Messfehler. Außerdem ist eine Integration mit Android Studio möglich.
Dinge, die Sie beim Schreiben und Ausführen von Leistungstests mit der
Jetpack Benchmark Library beachten sollten :
- Es ist unzuverlässig, Messungen auf dem Emulator zu erfassen. Eine Warnung beim Start informiert Sie darüber.
- ProGuard / R8 muss eingeschaltet sein, um die Leistung korrekt messen zu können.
- Das Gerät muss über eine ausreichende Batterieladung verfügen, damit eine geringe Ladung die Messergebnisse nicht beeinträchtigt.
- Das Modul, in das die Leistungstests geschrieben werden, muss den Parameter "debuggable = false" haben.
- Vergleichen Sie die Messergebnisse nicht mit verschiedenen Geräten, sie können stark variieren.
Fazit
Badoo Team und Google DeveloperGoogle I / O ist auf jeden Fall einen Besuch wert. In einer solchen Atmosphäre können Sie bei einer Tasse Tee viele interessante Geschichten hören und interessante technische Lösungen kennenlernen. Zum Beispiel darüber, wie die Jungs von VKontakte auf ein dunkles Thema gekommen sind und es auf Benutzer übertragen haben, die gefragt haben: „Wo ist das dunkle Thema?“, Wie auf der anderen Seite der Erde Entwickler von Tinder gegen Spam und Pornoinhalte kämpfen und wie die App im Air-Team implementiert wurde automatische Registrierung für Flugreisen. Sie können auch Google-Vertreter beim Erstellen der von uns verwendeten Tools abfangen und Fragen stellen.
Im Allgemeinen besteht eine Konferenz dieser Ebene nicht nur aus einer Reihe von Berichten, sondern auch aus vielen interessanten Personen, mit denen Sie Erfahrungen austauschen können.