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

She's Tech 2019 - Modularizando aplicações Android

She's Tech 2019 - Modularizando aplicações Android

Ana Paula da Silva

November 23, 2019
Tweet

More Decks by Ana Paula da Silva

Other Decks in Programming

Transcript

  1. 2 1 a 2 3 N O V E M

    B R O 2 0 1 9
  2. Agenda Por que modularizar? Como modularizar? Como integrar esses módulos

    Dificuldades que podemos encontrar com a modularização Dicas para descomplicar o processo de modularização
  3. 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
  4. Tipos de módulos Módulo de aplicação • apply plugin: 'com.android.application'

    • 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.
  5. Tipos de módulos Módulos abstração • apply plugin: 'com.android.library' ou

    '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.
  6. Tipos de módulos Módulos de FEATURE • apply plugin: 'com.android.library'

    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
  7. NAVIGATION • Controla o fluxo de navegação do app •

    Integra os módulos usando Deep Links • Dynamic Navigator (em desenvolvimento)
  8. 12 Manter a documentação bem atualizada Quando mal projetados pode

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

    Organize o arquivo settings.gradle + detalhes
  11. 18 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
  12. Referências Modularization - Jeroen Mols Modularizing Android Applications - Joe

    Birch Build a Modular Android App Architecture (Google I/O'19)