38 Punkte von xguru 2025-03-12 | 7 Kommentare | Auf WhatsApp teilen

Einführung in die aktuelle Entwicklungsumgebung für Android-Apps

  • Build: gradle
  • Build-Konfiguration: convention plugin
  • Abhängigkeitsverwaltung: version catalog
  • Einführung von build cache
  • Analyse der Build-Performance: build-scan
  • Modulstruktur: Trennung nach Features
  • Networking - retrofit
  • JSON-Mapping - kotlinx serialization
  • Persistente Datenspeicherung - jetpack datastore, room
  • DI - koin
  • Image Loader - coil
  • UI - compose
  • Kommunikation zwischen View und ViewModel - flow
  • Code-Qualitätsmanagement - ktlint , konsist
  • Unit-Tests - junit 4

7 Kommentare

 
kipsong133 2025-03-13

Vielen Dank für den guten Beitrag.

 
ganadist 2025-03-12

Als jemand, der irgendwie als Build Engineer für Android-Apps gelandet ist, würde ich dazu Folgendes anmerken..

Build: gradle

Auch wenn es sehr groß oder komplex ist, sollte man gradle verwenden... (blickt in die Ferne)
Für sehr große oder komplexe Projekte laufen derzeit die folgenden Projekte, um die Build-Performance von gradle zu verbessern. Wenn ihr gradle in einem großen Projekt nutzt, ist es sinnvoll, frühzeitig die Migration vorzubereiten.

Modulaufbau: Trennung nach Feature

Ich persönlich finde nicht, dass es einen zwingenden Grund gibt, Architektur-Layer im Build-System offenzulegen.
Bei der App, die ich betreue, legen wir feature-api / feature-impl als Module im Build-System offen.

  • feature-app :
    • Datenmodelle oder Interfaces, die mit anderen Modulen verknüpft sind
  • feature-impl:
    • die tatsächliche Implementierung des Features

Mit diesem Aufbau wirken sich Code-Änderungen in feature-impl nicht auf andere Module aus, die feature-api referenzieren (Abhängigkeitsisolierung). Das hilft erheblich bei incremental builds und einer höheren build cache hit rate.

Unit-Tests - junit 4

Ich denke, dass hier Googles Entscheidung eine große Rolle gespielt hat.

 
ganadist 2025-03-12

Wenn man allerdings die neuesten Technologien (?) einführen will, wird man nicht selten von JUnit4 ausgebremst, daher habe ich persönlich den kleinen Wunsch, dass auf JUnit5 migriert wird.
https://docs.gradle.com/develocity/test-distribution/

Mit junit-vintage-engine lassen sich JUnit4-Tests zwar auch ohne große Änderungen unter JUnit5 ausführen, der Overhead ist jedoch ziemlich hoch. (ungefähr 20 % langsamer)

 
kingori 2025-03-12

Oh, was für eine Ehre für die Familie Huh.

 
gera1d 2025-03-14

Ich bin Wilson!

 
brainer 2025-03-12

Hm … als Randbemerkung lässt sich beobachten, dass in den letzten Jahren die meisten Startups auf Flutter setzen, während große Unternehmen wie META und OpenAI nativ entwickeln – ein merkwürdiges Phänomen …

 
tsboard 2025-03-12

Ich wollte dieses Jahr ohnehin einmal versuchen, eine Android-App zu entwickeln, daher war das eine hilfreiche Orientierung. Haha