38 pontos por xguru 2025-03-12 | 7 comentários | Compartilhar no WhatsApp

Introdução ao ambiente atual de desenvolvimento de apps Android

  • Build: gradle
  • Configuração de build: convention plugin
  • Gerenciamento de dependências: version catalog
  • Adoção de build cache
  • Análise de desempenho de build: build-scan
  • Estrutura de módulos: separação por feature
  • Rede - retrofit
  • Mapeamento de JSON - kotlinx serialization
  • Armazenamento persistente de dados - jetpack datastore, room
  • DI - koin
  • Carregador de imagens - coil
  • UI - compose
  • Comunicação entre View e ViewModel - flow
  • Controle de qualidade de código - ktlint , konsist
  • Testes unitários - junit 4

7 comentários

 
kipsong133 2025-03-13

Ótimo texto, obrigado.

 
ganadist 2025-03-12

Como alguém que, de alguma forma, acabou se estabelecendo como engenheiro de build de apps Android, deixo minha opinião...

> Build: gradle

Mesmo sendo muito grande ou complexo, é preciso usar gradle... (olhando para o horizonte)
Como os projetos abaixo estão em andamento para melhorar o desempenho de build do gradle em projetos muito grandes ou complexos, se você já usa gradle em um projeto grande, é bom se preparar para a migração com antecedência.

> Estrutura de módulos: separação por feature

Pessoalmente, não vejo motivo para expor as camadas de arquitetura no sistema de build.
No caso do app que eu mantenho, fazemos com que feature-api / feature-impl fiquem expostos no sistema de build como módulos.

  • feature-app :
    • modelo de dados, ou interfaces integradas com outros módulos
  • feature-impl:
    • implementação real da feature

Com essa estrutura, alterações no código de feature-impl não afetam outros módulos que referenciam feature-api (isolamento de dependências), o que ajuda bastante no incremental build e no aumento da taxa de acerto do build cache.

> Teste unitário - junit 4

Acho que a decisão do Google teve um papel importante nisso.

 
ganadist 2025-03-12

No entanto, para adotar tecnologias mais recentes (?), o JUnit4 frequentemente acaba atrapalhando, então pessoalmente tenho um pequeno desejo de que houvesse uma migração para o JUnit5.
https://docs.gradle.com/develocity/test-distribution/

Usando o junit-vintage-engine, é possível executar testes em JUnit4 no JUnit5 sem grandes alterações, mas o overhead é considerável. (fica cerca de 20% mais lento)

 
kingori 2025-03-12

Que honra para a família Huh, haha.

 
gera1d 2025-03-14

Sou o Wilson!

 
brainer 2025-03-12

Hum... como observação paralela, nos últimos anos tem sido observado um fenômeno curioso: a maioria das startups vai de Flutter, enquanto grandes empresas como META e OpenAI vão de nativo..

 
tsboard 2025-03-12

Eu estava justamente pensando em criar um app Android este ano, então isso foi uma orientação bem útil. haha