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

Modularizando Aplicações Android

Modularizando Aplicações Android

Avatar for Selem Afonso

Selem Afonso

July 06, 2019

Other Decks in Programming

Transcript

  1. QUEM SOMOS 2 Desenvolvedora Android @ ThoughtWorks ANA SILVA Desenvolvedor

    Android @ ThoughtWorks SELEM AFONSO ©ThoughtWorks 2019
  2. 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 ©ThoughtWorks 2019
  3. POR QUE MODULARIZAR? Como a modularização pode ajudar no meu

    projeto REUSO DE CÓDIGO TEMPO DE BUILD CRESCIMENTO DO PROJETO / EQUIPE ©ThoughtWorks 2019 AUTOMAÇÃO MAIS SIMPLES ESPAÇO PARA INOVAÇÃO REVISÕES MAIS EFICIENTES
  4. 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' ©ThoughtWorks 2019
  5. MÓDULOS CORE Compartilha lógica de negócios, acesso a dados, cache

    entre outros módulos da aplicação. ©ThoughtWorks 2019 apply plugin: 'com.android.library' apply plugin: 'kotlin'
  6. 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. ©ThoughtWorks 2019 apply plugin: 'com.android.library' apply plugin: 'kotlin'
  7. MÓDULO DE FUNCIONALIDADES Contém funcionalidades específicas desacopladas da aplicação. Depende

    do tipo de aplicação que estamos construindo. ©ThoughtWorks 2019
  8. ©ThoughtWorks 2019 Commercial in Confidence Standard Application Instant Support Application

    Dynamic Support Application apply plugin: 'com.android.library' apply plugin: ‘com.android.feature’ apply plugin: 'com.android.dynamic-feature'
  9. 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 ©ThoughtWorks 2019 apply plugin: 'com.android.instantapp'
  10. 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
  11. 16 Manter a documentação bem atualizada Quando mal projetados pode

    virar um copia e cola. Compartilhar conteúdo entre módulos
  12. 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 } } } } }
  13. 20 Configure seus módulos usando tasks do gradle + detalhes

    Organize o arquivo settings.gradle + detalhes
  14. 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
  15. REFERÊNCIAS Um pouco mais sobre modularização 23 ©ThoughtWorks 2019 Commercial

    in Confidence Modularization - Jeroen Mols Modularizing Android Applications - Joe Birch Build a Modular Android App Architecture (Google I/O'19)
  16. QUER APRENDER ANDROID? 24 ©ThoughtWorks 2019 Commercial in Confidence Desenvolvimento

    Android, do File - New Project a Play Store Desenvolvimento Android, do File -New Project a Play Store — Parte 1
  17. Remix Icons 26 Icons created by Jimmy Cheung are available

    at https://remixicon.com/ Change the fill colour using “format options”. More icons available in PPT icon library or noun project.