• Módulo principal da aplicação (entry point) • Único módulo de aplicações monolíticas, contém todo o código da aplicação. Módulos CORE • apply plugin: 'com.android.library' ou 'apply plugin: 'kotlin’ • Compartilha lógica de negócios, acesso a dados, cache entre outros módulos da aplicação.
'apply plugin: 'kotlin' • Abstrai lógicas de nosso aplicativo evitando que o código fique fortemente acoplado a uma implementação específica. Módulos de INSTANT APP • apply plugin: 'com.android.instantapp' • Responsável por buildar o Instant App quando necessário, é um módulo que na maioria das vezes estará vazio.
ou apply plugin: 'com.android.feature' ou apply plugin: 'com.android.dynamic-feature' • Separa a aplicação de acordo com suas funcionalidades • Mantém as funcionalidades desacopladas da aplicação • Aumenta a complexidade do projeto
Organize o arquivo settings.gradle + detalhes Restrinja a visibilidade das classes quando necessário Use implementation em vez de api Gerencie corretamente suas dependências