Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modularizando Aplicações Android

Modularizando Aplicações Android

Encontrar a arquitetura mais adequada para os problemas que enfrentamos como desenvolvedores Android ainda parece ser uma tarefa complicada. Essa palestra busca apresentar práticas recomendadas pelo Google e padrões que podemos aplicar em diferentes situações para garantir que estamos construindo uma arquitetura Android sólida, robusta e extensível.

Ana Paula da Silva

October 19, 2019
Tweet

More Decks by Ana Paula da Silva

Other Decks in Programming

Transcript

  1. AGENDA 3 Por que modularizar? Tipos de módulos Como integrar

    esses módulos Dificuldades que podemos encontrar com a modularização Dicas para descomplicar o processo de modularização
  2. POR QUE MODULARIZAR? Como a modularização pode ajudar no meu

    projeto REUSO DE CÓDIGO TEMPO DE BUILD CRESCIMENTO DO PROJETO / EQUIPE AUTOMAÇÃO MAIS SIMPLES ESPAÇO PARA INOVAÇÃO REVISÕES MAIS EFICIENTES
  3. MÓDULO DE APLICAÇÃO Módulo principal da aplicação. Único módulo de

    aplicações monolíticas, contém todo o código da aplicação. Em aplicações modularizadas irá operar de acordo com o tipo do projeto. apply plugin: 'com.android.application'
  4. MÓDULOS CORE Compartilha lógica de negócios, acesso a dados, cache

    entre outros módulos da aplicação. apply plugin: 'com.android.library' apply plugin: 'kotlin'
  5. MÓDULOS DE ABSTRAÇÃO A idéia deste módulo é para abstrair

    lógicas de nosso aplicativo. Assim nosso código não ficará fortemente acoplado a uma implementação específica. apply plugin: 'com.android.library' apply plugin: 'kotlin'
  6. Standard Application Instant Support Application Dynamic Support Application apply plugin:

    'com.android.library' apply plugin: ‘com.android.feature’ apply plugin: 'com.android.dynamic-feature'
  7. MÓDULO DE INSTANT APP É um módulo que na maioria

    das vezes estará vazio. É responsável por buildar o Instant App quando necessário. CLICK TO ADD SUBHEADING apply plugin: 'com.android.instantapp'
  8. 14 A integração dos módulos é facilmente gerenciada com o

    Navigation Component. Cada módulo deve ter seu próprio gráfico de navegação. O módulo principal deve ter o seu gráfico de navegação que inclui os demais gráficos para permitir que o app direcione o usuário para a funcionalidade correta. Para navegar de um módulo para outro podemos criar deep links para o destino desejado. NAVEGANDO ENTRE MÓDULOS
  9. 16 Manter a documentação bem atualizada Quando mal projetados pode

    virar um copia e cola. Compartilhar conteúdo entre módulos
  10. subprojects { afterEvaluate { project -> if (project.hasProperty('android')) { android

    { buildToolsVersion Config .buildTools compileSdkVersion Config .compileSdk defaultConfig { minSdkVersion Config .minSdk targetSdkVersion Config .targetSdk testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } compileOptions { sourceCompatibility Config .javaVersion targetCompatibility Config .javaVersion } } } } }
  11. 20 Configure seus módulos usando tasks do gradle + detalhes

    Organize o arquivo settings.gradle + detalhes
  12. 22 Configure seus módulos usando tasks do gradle + detalhes

    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
  13. REFERÊNCIAS Um pouco mais sobre modularização 23 Modularization - Jeroen

    Mols Modularizing Android Applications - Joe Birch Build a Modular Android App Architecture (Google I/O'19)