Sobes.tech
Middle

Čo je to modularita v kontexte vývoja Android aplikácií?

sobes.tech AI

Odpoveď od AI

Viacmodulárnosť je architektonický prístup, pri ktorom je aplikácia rozdelená na samostatné, logicky prepojené moduly. Každý modul predstavuje samostatnú jednotku kódu (napríklad knižničný modul alebo modul aplikácie), ktorý môže byť zostavený a otestovaný nezávisle.

Výhody viacmodulárnosti:

  • Rýchlejšia zostava: Pri zmenách iba v jednom module sa zostavujú iba závislé moduly, čo výrazne skracuje čas zostavovania projektu.
  • Zlepšenie organizácie kódu: Kód sa stáva lepšie spravovateľný a zrozumiteľný, pretože je rozdelený na jasne definované oblasti zodpovednosti.
  • Zvýšenie znovupoužiteľnosti: Spoločné funkcie a UI komponenty môžu byť vyčlenené do samostatných modulov a použité v rôznych častiach aplikácie alebo dokonca v iných projektoch.
  • Uľahčenie testovania: Moduly môžu byť testované izolovane, čo uľahčuje písanie a údržbu testov.
  • Podpora vývoja orientovaného na funkcie: Samostatné funkcie (obrazovky, funkcionalita) môžu byť vyvíjané ako samostatné moduly.
  • Zlepšenie škálovateľnosti: Veľké tímy môžu pracovať paralelne na rôznych moduloch s minimálnymi konfliktami.

Typy modulov v Android:

  • Modul aplikácie (Application module): Vstupný bod do aplikácie, obsahuje manifest a hlavné komponenty. Závisí od iných modulov.
  • Knižničný modul (Library module): Obsahuje kód a zdroje, ktoré môžu byť použité inými modulmi (napríklad UI komponenty, spoločná biznis logika, utility).
  • Dynamický modul funkcie (Dynamic Feature module): Umožňuje načítavať určité časti funkčnosti aplikácie na požiadanie. Používa sa na zníženie veľkosti inštalačného súboru.

Príklad štruktúry projektu s modulmi:

my-android-app/
├── app/              // Modul aplikácie
│   └── src/
│       └── main/
│           └── ...
├── core/             // Core knižničný modul (bežné utility)
│   └── src/
│       └── main/
│           └── ...
├── ui/               // UI knižničný modul (vlastné UI komponenty)
│   └── src/
│       └── main/
│           └── ...
└── feature-login/    // Funkčný modul pre prihlásenie
    └── src/
        └── main/
            └── ...

V súbore settings.gradle.kts sú uvedené zahrnuté moduly:

// settings.gradle.kts
rootProject.name = "MyAndroidApp"
include(":app")
include(":core")
include(":ui")
include(":feature-login")

V súbore build.gradle.kts modulu sú uvedené závislosti:

// app/build.gradle.kts
plugins {
    id("com.android.application")
    // ... ďalšie pluginy
}

android {
    // ...
}

dependencies {
    implementation(project(":core"))
    implementation(project(":ui"))
    implementation(project(":feature-login"))
    // ... ďalšie závislosti
}
// feature-login/build.gradle.kts
plugins {
    id("com.android.library")
    // ... ďalšie pluginy
}

android {
    // ...
}

dependencies {
    implementation(project(":core")) // Závislosť od modulu core
    // ... ďalšie závislosti
}

Viacmodulárnosť je odporúčaný prístup pre vývoj veľkých a stredných Android aplikácií.