Home / Android-Entwicklung / Das Android Arsenal – Architektur

Das Android Arsenal – Architektur

Eine App, die es schon gab, bevor es Android gab!

Über

Norris ist ein Schaufenster für modernen und gut ausgearbeiteten Android-Code.

Hier finden Sie eine Codebasis, die von Tests in allen semantischen Ebenen (Einheiten) unterstützt wird , Integration, Akzeptanz) sowie ein Architekturdesign, das Disziplin über Staat fördert und Kotlin Coroutines als Grundlage für eine pragmatische unidirektionale Datenflussimplementierung verwendet.

Projektübersicht

Dieses Projekt nutzt api.chucknorris.io als ferne Datenquelle für Implementieren der folgenden Anwendungsfälle

  • Der Benutzer kann nach Chuck Norris-Fakten suchen und diese teilen.
  • Verwandte Kategorien werden in der Anwendung abgerufen und zwischengespeichert.
  • Die Anwendung bietet Vorschläge für Abfragen auf der Grundlage der von bereitgestellten Kategorienamen und Suchbegriffe auch Benutzer

Der Code ist mehrmodulig aufgebaut, wobei die Semantik von Clean Architecure geleitet wird. Dies bedeutet, dass High-Level-Module (wie Facts oder Search ) nichts über Low-Level-Module (wie Networking oder Persistance wissen ]).

Das Modul domain definiert die Kernprotokolle, die durch Details auf niedriger Ebene implementiert werden sollen, während sie in Richtlinien auf hoher Ebene wie FetchFacts

zusammengefasst werden. Eine allgemeine Darstellung der Modulstruktur lautet wie folgt . Jenseits der Domäne gibt es Module, die von allen Funktionen wie Navigator Shared Assets und anderen gemeinsam genutzt werden.

In diesem Projekt wird ein Benutzerdefinierte Implementierung eines unidirektionalen Datenflusses, um die Verantwortlichkeiten von Abstraktionen auf der Benutzeroberflächenebene zu organisieren. Über die Semantik der definierten Protokolle hinaus nutzen wir eine benutzerdefinierte StateMachine die Zustände verarbeitet und über einen ConflatedBroadcastChannel an Verbraucher sendet um die Emission und den Verbrauch von Staaten zu entkoppeln; Auf diese Weise haben wir auch einen Begriff von StateContainer der sowohl das emissionScope als auch die Flow -Implementierung für Emissionen bereitstellt.

Möglicherweise möchten Sie Überprüfen Sie die ConfigChangesAwareStateContainer-Abstraktion, die das ViewModel von Jetpack nutzt, um die Referenz des oben genannten ConflatedChannel beizubehalten und den richtigen Emissionsbereich für Status bereitzustellen. Eine uneingeschränkte Implementierung wird auch zu Testzwecken definiert.

Auf diese Weise leitet sich keines der ViewModels dieses Projekts von AAC ViewModel ab, sondern stellt AAC ViewModel die -UI sicher Beständigkeit des Status bei Änderungen der Gerätekonfiguration.

Last but not least ermöglicht die Wahl des Flow über den zusammengeführten Kanal, den reaktiven Weg für Benutzeroberflächen ohne LiveDaten zu verfolgen. Einfach und schön.

Dieses Projekt hat noch einige Aufgaben. Folgen Sie dem Projektvorstand, um mehr über die aktuellen Entwicklungen zu erfahren. Sie werden einige Projektentscheidungen erläutern und einige Details der Implementierung dieses Ansatzes für den unidirektionalen Datenfluss erläutern, insbesondere mit Informationen zu Coroutinen und Kanälen.

In Kürze bei ubiratansoares.dev

Bauen und Laufen

Wenn Sie eine einfache Ausführung wünschen, verwenden Sie einfach das Begleitskript


 ./ emulate-ci-build.sh

Es werden

  • statische Analysatoren (Ktlint und Detekt) ausgeführt.
  • Alle Komponententests ausgeführt und alle JaCoCo-Berichte generiert.
  • Debug-APK zusammenstellen.

Zum Ausführen von Akzeptanztests.


 ./ gradlew connectedCheck

Credits

  • Mathias Schilling, für die Chuck Norris-Fakten REST api
  • Material Design Icons für die Fehlerzustände images
  • Jetbrains für die erstaunliche Entwicklererfahrung um Kotlin und Coroutines
  • Jemand im Web für die Norris clipart ❤️ (Ich gebe gerne Ihren Namen an, bitte um Ping!)

Author

Codiert von Ubiratan Soares (folge mir auf Twitter ) [19659005] Lizenz





















 Die MIT-Lizenz (MIT)

Copyright (c) 2019 Dotanuki Labs

Die Erlaubnis wird hiermit kostenlos jeder Person erteilt, die eine Kopie von erhalten hat
Diese Software und die dazugehörigen Dokumentationsdateien (die "Software") sind zu behandeln
die Software ohne Einschränkung, einschließlich ohne Einschränkung der Rechte an
Verwenden, Kopieren, Ändern, Zusammenführen, Veröffentlichen, Verteilen, Unterlizenzieren und / oder Verkaufen von Kopien von
die Software und Personen, denen die Software zur Verfügung gestellt wird, zu gestatten, dies zu tun,
unter folgenden Bedingungen:

Der obige Copyright-Hinweis und dieser Erlaubnishinweis sind in allen enthalten
Kopien oder wesentliche Teile der Software.

DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE GEWÄHRLEISTUNG, AUSDRÜCKLICH ODER
STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT UND FITNESS
FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. DIE AUTOREN ODER
COPYRIGHT-INHABER HAFTEN FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER SONSTIGE HAFTUNGEN
BEI VERTRAGSVERHÄLTNISSEN, SCHNELLEN ODER ANDEREN VERHÄLTNISSEN, DIE AUS ODER IN
VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN VERHANDLUNGEN IN DER SOFTWARE.

.

About AndroidWeltEditor

Check Also

New Android App Bundle and target API level requirements in 2021

Posted by Hoi Lam, Developer Relations Engineer, Android Platform In 2021, we are continuing with …

Leave a Reply

Your email address will not be published. Required fields are marked *