Sobes.tech
Middle

O que é a modularidade no contexto do desenvolvimento de aplicações Android?

sobes.tech IA

Resposta da IA

A modularidade múltipla é uma abordagem arquitetónica na qual a aplicação é dividida em módulos separados e logicamente relacionados. Cada módulo representa uma unidade de código independente (por exemplo, um módulo de biblioteca ou um módulo de aplicação), que pode ser compilada e testada de forma independente.

Vantagens da modularidade múltipla:

  • Aceleração da compilação: Ao fazer alterações apenas num módulo, apenas os módulos dependentes são recompilados, o que reduz significativamente o tempo de compilação do projeto.
  • Melhoria na organização do código: O código torna-se mais gerível e compreensível, pois está dividido em áreas de responsabilidade claramente definidas.
  • Aumento da reutilização: Funções comuns e componentes de UI podem ser destacados em módulos separados e utilizados em diferentes partes da aplicação ou até em outros projetos.
  • Facilitação dos testes: Os módulos podem ser testados isoladamente, o que simplifica a escrita e manutenção dos testes.
  • Suporte para desenvolvimento orientado a funcionalidades: Funcionalidades separadas (telas, funcionalidades) podem ser desenvolvidas como módulos independentes.
  • Melhoria na escalabilidade: Grandes equipas podem trabalhar em diferentes módulos em paralelo com mínimos conflitos.

Tipos de módulos em Android:

  • Módulo de aplicação (Application module): Ponto de entrada na aplicação, contendo o manifesto e os componentes raiz. Depende de outros módulos.
  • Módulo de biblioteca (Library module): Contém código e recursos que podem ser utilizados por outros módulos (por exemplo, componentes de UI, lógica de negócio comum, utilitários).
  • Módulo de funcionalidade dinâmica (Dynamic Feature module): Permite carregar partes específicas da funcionalidade da aplicação sob demanda. Usado para reduzir o tamanho do ficheiro de instalação.

Exemplo de estrutura de projeto com módulos:

my-android-app/
├── app/              // Módulo de aplicação
│   └── src/
│       └── main/
│           └── ...
├── core/             // Módulo de biblioteca principal (utilitários comuns)
│   └── src/
│       └── main/
│           └── ...
├── ui/               // Módulo de biblioteca UI (componentes UI personalizados)
│   └── src/
│       └── main/
│           └── ...
└── feature-login/    // Módulo de funcionalidade para login
    └── src/
        └── main/
            └── ...

No ficheiro settings.gradle.kts indicam-se os módulos incluídos:

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

No ficheiro build.gradle.kts do módulo indicam-se as dependências:

// app/build.gradle.kts
plugins {
    id("com.android.application")
    // ... outros plugins
}

android {
    // ...
}

dependencies {
    implementation(project(":core"))
    implementation(project(":ui"))
    implementation(project(":feature-login"))
    // ... outras dependências
}
// feature-login/build.gradle.kts
plugins {
    id("com.android.library")
    // ... outros plugins
}

android {
    // ...
}

dependencies {
    implementation(project(":core")) // Dependência do módulo core
    // ... outras dependências
}

A modularidade múltipla é uma abordagem recomendada para o desenvolvimento de aplicações Android grandes e médias.