Krieg ... Krieg ändert sich nie. Der Krieg um schönen und funktionierenden Code geht also weiter. Und für jede schwierige Aufgabe wird eine eigene Waffe geboren: Jemand macht es für sich selbst und jemand verwendet fertige Werkzeuge. Android-Entwicklung ist keine Ausnahme. Auf unserer
AppsConf 2018- Konferenz werden wir diskutieren, wie und was jetzt am interessantesten zu verwenden ist, wo Sie stolpern können und was interessant ist, ist das riesige Arsenal an Entwicklungstools, das Google endlich in Ordnung gebracht hat. Die Hauptthemen der Berichte können auf unserer Website eingesehen werden. Derzeit haben wir jedoch den Google-Entwicklerexperten Denis Neklyudov und Alexander Smirnov gebeten, über das neue Android Jetpack-Toolkit zu sprechen, das im Mai dieses Jahres eingeführt wurde.

Alexander Smirnov, Mitbegründer und CTO bei PapaJobs, Gründer der Android-Entwickler-Community MOSDROID, dem führenden Videoblog Android in Faces. |
Denis Neklyudov, der erste GDE in Russland, arbeitet in Singapur bei 90seconds.tv, dem zentralen Leiter des AndroidDev-Podcasts, Sprecher verschiedener Konferenzen und Autor mehrerer Entwicklungskurse. |
Android Jetpack wurde diesen Mai auf Google I / O eingeführt.
Was haben Sie von dieser Konferenz erwartet? Haben sich Ihre Erwartungen erfüllt?Alexander Smirnov : Ich habe viel weniger erwartet, als ich mir letztendlich vorgestellt habe. Es schien nicht notwendig zu sein, die Plattform aus geschäftlicher Sicht zu entwickeln. Im Mobilsegment erzielte Google in 87% des Marktes einen Erdrutschsieg mit positiven Trends. In den letzten Jahren war ML als Hauptarbeitsbereich sichtbar. Ich wartete auf Fortschritte beim Materialdesign, das Hinzufügen von ML-Tools für Entwickler und die Veröffentlichung von Constraint Layout 2.0. Aber wir haben einen großen Schritt gesehen, um die Dinge in Ordnung zu bringen und Entwickler zu unterstützen. Plötzlich zufrieden mit den neuen Elementen in AJP und dem Beginn des Kampfes um verbesserte Unterstützung. Hallo, Android X.
Denis Neklyudov : Ich
habe mich an die Hauptregel für Reisen zu Lebensmittelkonferenzen gehalten: Warten Sie nicht auf Ankündigungen, revolutionäre Veränderungen, Geschenke - nichts als alte Freunde zu treffen. Wenn sie nur nichts kaputt machen würden. Aber nein, sie haben Android X eingeführt, dessen Migration in großen Projekten nicht der angenehmste Prozess ist. Aber es gab viel Positives. Das Wertvollste an Google I / O ist die Kommunikation mit den Entwicklern des Frameworks und den Kollegen im Workshop.
Welche neuen Artikel wurden bereits in die Praxis umgesetzt?Denis Neklyudov : Von AJP haben wir nur die Migration auf Android X getestet. Ich habe eine bewährte Reihe von Lösungen im Projekt, ich habe keine Lust, neue Komponenten zu beschleunigen und einzuführen. Sie haben gerade Target SDK 28 unterstützt, die aktuelle Version von Android Pie überprüft und sich beruhigt. Wir warten darauf, dass die versprochenen Verbesserungen für Tests verfügbar sind. Jetpack jetzt - dies sind verschiedene kleine Bibliotheken, die an einem Ort zusammengefasst sind und manchmal das Leben von Entwicklern ein wenig einfacher und angenehmer machen. Die meisten neuen Produkte sind noch nicht für Release-Versionen von Anwendungen bereit.
Alexander Smirnov :
Von den vorgestellten Neuheiten habe ich alles versucht, aber in der Produktion haben wir die Anwendung nur auf das neue Material Design aktualisiert und Android KTX angewendet, das uns aufgrund seiner Einfachheit und Bequemlichkeit gefallen hat. Ich mag es, eine Menge Code in ein paar Zeilen zu reduzieren. Wir haben den Rest in die Pipeline geworfen und sind dieses Jahr weitergegangen.
Jetpack erledigt die Aufgaben erfolgreich und Sie werden es genießen, sie zu verwenden. Aber ja, einige Abschnitte befinden sich noch in Alpha, sodass in der Entwicklungsphase kleine Probleme auftreten können. Es ist in Ordnung. Ich würde nicht empfehlen, Produktionswerkzeuge im Alpha-Zustand zu ziehen, aber mit demselben Kotlin hat es mich nicht aufgehalten.
Für Android war die Frage der bequemen Navigation schon immer ein akutes Problem.
Wird sich mit AJP etwas ändern?Denis Neklyudov : In Android war die Navigation immer leistungsstark und vielfältig: Aktivität, Fragment, Sie müssen noch DeepLinks verarbeiten und die übergebenen Argumente überwachen. Sie können leicht in einer großen Karte von Bildschirmen verwirrt werden. Google versucht nur, dies mit der neuen Navigation zu lösen, die sogar in Android Studio mit einem eigenen Reaktor für die Bildschirmhierarchie integriert ist.
Ich verwende hausgemachte Lösungen, die den Anforderungen und der Gesamtarchitektur des Projekts entsprechen. Während die Navigation schwerwiegende Fehler aufweist und nicht für die Verwendung in veröffentlichten Anwendungen bereit ist.
Alexander Smirnov : Bei Jetpack hat Google einen ernsthaften Schritt nach vorne gemacht: Die Navigation ist erschienen, was die Architektur von Anwendungen zum Besseren verändern wird. In großen Anwendungen kann die Navigation so kompliziert werden, dass es unrealistisch ist, sich alle Übergangsoptionen zu merken. Und sie müssen noch programmiert und getestet werden. Es gab mehrere Alternativen, die versuchten, dies zu lösen: Cicerone, Flow, Conductor. Keiner von ihnen ist so funktional.
Zunächst ist der Navigationseditor zu beachten: Es ist praktisch, ein grafisches Übergangsdiagramm damit zu erstellen, und es ist schön, es mit der Maus zu steuern. Implementierte bequeme DeepLinks-Verarbeitung mit Unterstützung für das Abspielen des gesamten Übergangsbaums. Die Navigationskomponente unterteilt die Arbeit mit DeepLinks in zwei Fälle: Explizit und Implizit. Das erste können wir uns über ein bequemes DSL erstellen und durch eine bestimmte Aktion als PendingIntent aufrufen. Das zweite sind DeepLinks, die uns beispielsweise aus dem Browser bekannt sind. Sie werden auf unterschiedliche Weise erstellt und aufgerufen, aber sie werden mithilfe des Navigationsdiagramms und der vollständigen Unterstützung für das Erstellen des Stapels zum Öffnen des erforderlichen Abschnitts identisch verarbeitet. Die Verarbeitung von DeepLinks war noch nie so einfach.
Die Paging-Bibliothek wurde zu AJP hinzugefügt. Wie ändert sie die Arbeit mit RecyclerView?Denis Neklyudov : RecyclerView hatte schon immer einen Nachteil: Sie müssen viel Zeit mit einer Lösung verbringen, die das seitenweise Laden in beide Richtungen ermöglicht und sogar die Möglichkeit bietet, zu verschiedenen Teilen dieser endlosen Liste zu springen. In der Paging-Bibliothek stellte Google seine Lösung für dieses Problem vor.
Alexander Smirnov : Die Bibliothek wiederholt die Routine der meisten Android-Entwickler - sie arbeitet mit Listen. Um die Anzeige großer Datenmengen zu beschleunigen, teilen wir sie alle in Seiten auf und arbeiten mit ihnen. Mit der Paging-Bibliothek wird diese Art von Arbeit einfach, da die Implementierung sofort verfügbar ist. Darüber hinaus kann die Komponente Daten aus mehreren Quellen laden und mischen. Wir bekommen auch eine interessante Idee mit Platzhaltern, wenn Sie zum Zeitpunkt des zusätzlichen Datenladens schöne Stubs anstelle von ewigen Spinnern zeigen können. Zusätzlich wurde eine Kill-Funktion hinzugefügt, um mit Snapshots oder instabilen Daten zu arbeiten. Die Komponente selbst kann verstehen, was geändert wurde und welche Elemente in die Mitte der Liste und welche nach oben verschoben werden müssen.
Tatsächlich wurde diese Komponente für die Zusammenarbeit mit RecyclerView erstellt, aber die Paging-Bibliothek besteht aus zwei Hauptteilen: PagedList und PagedListAdapter. Mit PagedList können Sie mit diesen Teilen arbeiten und sie aus verschiedenen Quellen herunterladen.
Eines der neuen Produkte ist Workmanager. Wie verändert er seine Arbeit mit Hintergrundaufgaben?Alexander Smirnov : Es hilft, systematisch von allmächtigen Diensten zu einer praktischen API in Jetpack überzugehen: Sie können die Notwendigkeit hinzufügen, die Umgebungsbedingungen zu erfüllen, um eine Aufgabe zu starten und die Reihenfolge der Aufgaben und Ketten festzulegen. Sie können Daten an eine ausführbare Aufgabe übertragen und das Ergebnis daraus abrufen. Es hat drei große Vorteile: Sie benötigen Google Play nicht auf Ihrem Gerät, Sie können Aufgaben nur unter bestimmten Bedingungen ausführen und Sie können Aufgabenketten erstellen.
Keines der vorherigen Analoga war autark, daher gab es eine Bibliothek wie Android-Job von Evernote, in der alle Analoga gleichzeitig verwendet wurden. Nach dem Erscheinen des WorkManager verschwindet die Notwendigkeit für sie.
Denis Neklyudov : Google hat alle vorhandenen Lösungen für die Arbeit mit Hintergrundaufgaben so umfassend
abgedeckt . Da die zurückgestellte Aufgabe im Service einfach nicht abgeschlossen werden kann, stehen die Entwickler vor der Veröffentlichung von Android Marshmallow und der Einführung des Doze-Modus. Jetzt kann die Anwendung nicht mehr tun, was sie will. Und mit jeder Version solcher Einschränkungen immer mehr. Selbst mit Lollipop steht JobScheduler zur Verfügung, mit dem Hintergrundaufgaben unter bestimmten Bedingungen und mit Zustimmung des Systems gestartet werden können. Es weist jedoch Fehler in früheren Versionen auf und es ist unklar, wie in Android-Versionen damit gearbeitet werden soll, in denen es nicht vorhanden ist. Zu diesem Zweck wurde ein Wrapper in Form eines GCM-Netzwerkmanagers erstellt und erneut als Firebase Job Dispatcher neu geschrieben. Sie erwiesen sich jedoch als unvollkommen - das war die Geburtsstunde ihres modernen Ersatz-WorkManagers, der die Aufgabe übernimmt, Hintergrundaufgaben auf jeder Android-Version ohne Fehler auszuführen.
AJP hat eine neue Funktion hinzugefügt - Slices. Was ist interessant an ihr?Alexander Smirnov : Zunächst sollten Slices Ihrem Produkt und Vermarkter gezeigt werden. Sie ermöglichen es dem Benutzer, Ihre Anwendung häufiger zu sehen und den erforderlichen Teil schneller zu verwenden: Gehen Sie direkt zum gewünschten Abschnitt und wechseln Sie die erforderliche Funktion. Mit Slices können Sie auch an Ihrer Anwendung unter den Suchergebnissen in der Google-Suche teilnehmen und können sich künftig auch in den Google-Assistenten integrieren.
In Slices können Sie Funktionen anzeigen, die sich auf den Typ Ihrer Anwendung und deren Funktionen beziehen. Es können drei Gruppen unterschieden werden: Navigation, Aufgabenausführung und Rückkehr zu Daten. Im Allgemeinen erhalten Benutzer durch Slices-Benutzer eine einfachere und schnellere Interaktion, Entwickler erhalten mehr Datenverkehr und die Möglichkeit, den Benutzer zur Anwendung zurückzukehren.
Denis Neklyudov :
Geben Sie zu, Sie haben lange Zeit nicht die Möglichkeit gehabt, Informationen von Anwendungen in Anwendungen mit interaktiven Elementen direkt von der Suche zu erhalten. Slices lösen genau dieses Problem, sodass die Anwendung die Benutzeroberfläche und die damit verbundenen Aktionen deklarieren kann, die in Anwendungen von Drittanbietern, einschließlich der Suche, integriert werden. Ich freue mich sehr darauf, wenn die Nachrichten auf Google Assistant auf dem Smartphone von Feedly, Fotos aus der Vergangenheit von Timehop, meine Flüge von App in the Air, die Route zur Arbeit „Y. Navigator“ usw. eingebettet werden.
Für Anwendungsinhaber ist dies eine großartige Gelegenheit, die Häufigkeit der Nutzung ihrer Dienste zu erhöhen. Außerdem wird es für den Benutzer bequemer, die Tracks in Spotify zu wechseln, ohne den neuen Rennsimulator zu verlassen.
Und was sind die Einschränkungen?Alexander Smirnov : Slices sind immer noch stark von Vorlagen geprägt: Eine Reihe von Anwendungen sind in andere eingebettet, und der Benutzer muss verstehen, dass der Interaktionsmechanismus unterschiedlich sein wird. Für Vielseitigkeit muss man immer bezahlen. Wenn Sie sich an Widgets erinnern, waren diese ebenfalls sehr begrenzt. Die Erweiterung des Funktionalen wird natürlich sein, aber ich denke nicht, dass davon etwas Großes erwartet werden sollte.
Denis Neklyudov : Ich stimme zu, jetzt ist die Slices-API auf einen bestimmten Satz möglicher Vorlagen beschränkt, die in eine Drittanbieteranwendung eingebettet werden können, aber neue Vorlagen werden auch mit neuen Versionen angezeigt. Die Entwickler haben benutzerdefinierte Schnittstellen ausdrücklich gesperrt, um steuern zu können, wie Slices in der eingebetteten Anwendung aussehen und damit sie alle konsistent sind.
Google hat AJP eine KTX-Bibliothek hinzugefügt. Was sind deine Eindrücke von ihr?Alexander Smirnov : Ein großartiges Werkzeug, genau das hat uns sehr lange gefehlt. KTX ist eine Reihe von Erweiterungen für eine angenehmere Verwendung der Android-API bei alltäglichen Aufgaben.
Ich empfehle dringend, es auf alle Android-Entwickler umzustellen, um die Produktivität zu steigern. Es gibt Komfort, Geschwindigkeit und gute Laune bei der Entwicklung. Mit KTX können Sie sogar die Boilerplate zusammenklappen und ordentlichen, gut lesbaren Code erhalten.
Sie müssen jedoch die von KTX bereitgestellten Erweiterungen sorgfältig studieren und sich den Quellcode dieser Erweiterungen ansehen, um zu verstehen, was unter der Haube geschieht. Und da es keine Fallstricke mehr gibt, können Sie sicher in den Kampf ziehen.
Denis Neklyudov : AJP-Entwickler haben die richtige Entscheidung getroffen: Das Framework sollte für Kotlin freundlicher sein. So entstand das Projekt mit einer Reihe statischer Funktionen, die die Syntax des Frameworks erweiterten. Kotlin verfügt über viele praktische Sprachfunktionen, und mit nur Erweiterungsfunktionen können Sie auf bequeme Weise auf die Framework-Klassen zugreifen. Beispielsweise ist view.isVisible eine kurze Alternative für view.getVisibility () == View.Visible.
Es gibt viele verschiedene Funktionen, es ist besser, sich
selbst davon zu überzeugen . Natürlich kann man ohne sie leben, genauso wie ohne Kotlin. Aber es ist angenehmer.
Google fördert zunehmend Kotlin. Wie fühlst du dich dabei?
Was sind seine Aussichten?Alexander Smirnov : Ich habe eine sehr positive Einstellung zu Kotlin und seit Januar 2016 verwende ich es als Hauptentwicklungssprache für Android. Während dieser Zeit war er an der Migration von drei Unternehmen von Java nach Kotlin beteiligt. Java entwickelt sich leider ziemlich langsam und Kotlin für die mobile Entwicklung ist ein Hauch frischer Luft.
Der Moment, in dem Kotlin zur Hauptentwicklungssprache für Android wird, ist eine Frage der Zeit. Es erscheinen bereits Android-Entwickler, in denen Kotlin die erste Entwicklungssprache ist und Java etwas Unbekanntes ist. Wir haben eine angenehme Zukunft mit Kotlin, zumindest bis Google beschließt, ein neues Betriebssystem zu entwickeln, sozusagen ein verbessertes Android. Aber dies ist eine Frage der fernen Zukunft, die keine Tatsache dessen ist, was kommen wird.
Denis Neklyudov : Ich kann nicht sagen, dass Google Kotlin aktiv bewirbt, vielmehr werden einige Projekte im Zusammenhang mit dem Framework selbst Kotlin-freundlich. Dies bedeutet keineswegs, dass ein Java-Entwickler für Android im Jahr 2018 eine Art Abtrünniger oder Vertreter einer Minderheit ist. Aber die Tatsache, dass Kotlin immer sicherer und schneller wird, wird zur Standardsprache für Entwickler, und das sind gute Nachrichten.
Wenn Sie von Flutter hören, einem plattformübergreifenden Framework für die mobilen Anwendungen von Google, wird Kotlin Native sofort wiedergegeben, das sowohl für Android als auch für iOS kompiliert werden kann. Viele warten darauf, dass es die Sprache für alles wird: Android, iOS, Web, Embeded ... JetBrains Pläne sind napoleonisch. Wir beobachten Fehlerberichte, Betatests und genießen die angenehme Sprache, in die wir unsere Projekte mit minimalen Schmerzen migrieren konnten.
Seit der Veröffentlichung von Android AJP sind mehr als drei Monate vergangen. Wie hat er sich gezeigt?Alexander Smirnov : Mit AJP wollte Google Android-Entwicklern helfen, qualitativ hochwertige Anwendungen noch schneller und ohne zusätzliche Lösungen im Zoo zu erstellen. Und als Bonus haben sie Anfängern den Einstieg in die Android-Entwicklung erleichtert. Ich denke, Jetpack hat die Aufgabe gemeistert.
Das Ergebnis war ein cooles Set, das die Aufgaben der meisten Entwickler löst. Aber wir können sicher in ungefähr 6-12 Monaten sagen, wann wir zur Veröffentlichung der meisten Innovationen kommen. Bisher hat dies viele auf ihrem Weg zur Verwendung von AJP in der Produktion gestoppt.
Denis Neklyudov : Google hat AJP nicht von Grund auf neu erstellt, sondern viele nützliche Dinge zusammengestellt, die nicht Teil des Frameworks selbst sind und von den Entwicklern in Anwendungen
gepackt werden . Es ist eine gute Idee, sie alle unter einem modischen, lebendigen Namen zu kombinieren. Es ist gut für die Entwickler, dass es jetzt eine einzige
Ressource gibt, in der Sie eine offizielle Lösung für viele Probleme finden können. Zumindest ist es praktisch.
Natürlich ist nicht alles, was in diesem Set enthalten ist, für den Einsatz in ernsthaften Anwendungen bereit. Etwas befindet sich noch in der Phase der aktiven Entwicklung und des Debuggens. Aus dem Framework selbst ergibt sich ein anhaltendes Gefühl der Beta-Version, ich werde wirklich keinen Druck auf den Patienten ausüben und die IDE diskutieren. Aber wir sind an Android gewöhnt.
In dieser Liste von Bibliotheken und Lösungen findet jeder etwas Nützliches für sich. Und für Anfänger ist dies eine absolut obligatorische Ressource zum Kennenlernen, damit sie nicht auf einen bekannten Rechen treten, sondern zunächst mehr oder weniger offizielle Wege zur Lösung ihrer Probleme ausprobieren.
Was sind die Aussichten für die Entwicklung von AJP? Was könnte nächstes Jahr neu sein?Alexander Smirnov : Jetzt haben wir viele neue Entwicklungen, daher müssen sie zunächst abgeschlossen und stabilisiert werden. Dann würde ich die systematische Entwicklung jeder der Komponenten und Werkzeuge erwarten, vielleicht eine kleine Ergänzung von etwas Neuem. Jetpack war ein Schritt nach vorne, daher erwarte ich ab dem nächsten Jahr systematische Verbesserungen, aber nach einem weiteren Jahr kann es sehr interessant sein. Es lohnt sich auf jeden Fall, auf das nächste Jahr zu warten, um eine dichtere und bequemere Integration in Android Studio zu erreichen.
Denis Neklyudov : AJP wird mit jeder neuen gelösten Aufgabe, die öffentlich zugänglich gemacht wurde, erweitert. Mit jeder Android-Version wird das Jetpack-Framework auch in Form von AppCompat und Material Components entwickelt. Was in naher Zukunft erscheinen wird, ist schwer zu sagen. Ich warte darauf, dass Stickstoff hinzugefügt wird - ein Paket von Dienstprogrammen zum Testen von Anwendungen in großem Maßstab.
Weltweit erweitert Google ständig die Funktionen des Browsers. Was kann dies in Zukunft bewirken?Denis Neklyudov : Ich wiederhole ständig, dass es nicht notwendig ist, einige Schritte von Google als etwas Globales und Zentralisiertes wahrzunehmen. Wenn das Chrome-Team über genügend Ressourcen verfügt, um AMP, PWA und jetzt auch WebAssembly zu entwickeln, bedeutet dies nicht, dass es eine Verschwörung gibt, alle bis 202 ins Web zu übertragen. Wie bei der Entwicklung von Flutter bedeutet dies nicht, dass wir alle dieses Framework verwenden werden, und dann wird Android zum Sterben verurteilt sein, da zuerst ChromeOS und dann Fuchsia alle Benutzergeräte übernehmen werden. Diesen Sommer sprach Jake Wharton auf der Droidcon Berlin darüber, wie die Grenze zwischen dem Web und nativen Apps verschwimmt. Aus dem Bericht kann abgeleitet werden, dass es in der aktuellen Situation erforderlich ist, alle Plattformen separat zu unterstützen und zu versuchen, den Code zwischen ihnen wiederzuverwenden. Wenn Sie jedoch der Meinung sind, dass das Internet auf der ganzen Welt sehr schnell, stabil und billig sein kann, haben Webanwendungen möglicherweise die Chance, zu dominieren. Aber bisher wird es kaum geglaubt.
Alexander Smirnov : Der Übergang von nativen Anwendungen zu progressiven Web-Apps ist der Traum von Millionen von Webentwicklern, Produktmanagern und einer Vielzahl anderer Menschen. Durch die Wahl einer PWA-Anwendung anstelle eines Mobiltelefons vereinfacht das Unternehmen die Entwicklung, Verwendung, Aktualisierung und Gewinnung von Benutzern. PWA ist eine gute Lösung für ein großes Segment einfacher mobiler Anwendungen, und wir werden die native Entwicklung nicht sehr bald vollständig aufgeben können.
Nun, wer möchte die Nachrichten aus der Welt der Android-Entwicklung live hören, viele weitere interessante Dinge über die neuesten heimtückischen Pläne der Google-Enklave erfahren, direkt mit Experten chatten, wir warten auf unsere
AppsConf 2018- Konferenz.
Für diejenigen, die lieber alles zu Hause studieren möchten, haben wir einen YouTube-Kanal, auf dem AppsConf-Videos hochgeladen werden (einige Monate nach der Konferenz).
Und die Ankündigungen aller Veranstaltungen und nützlichen Materialien, einschließlich zukünftiger Konferenzen, Ankündigungen der besten Berichte, Einladungen zu Besprechungen, entschlüsselter Berichte und nützlicher Artikel, veröffentlichen wir auf unserer Mailingliste .