alex soares - amazon s3 · por onde começar? ⇢ arquitetura ⇢ separar as funcionalidades do app...

99

Upload: others

Post on 03-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢
Page 2: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Alex Soares Desenvolvedor [email protected]

/alex-soares-siqueira /AlexSoaresDeSiqueira

Page 3: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização? Porque devemos pensar nisso?

Page 4: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Desafios Do monólito para múltiplos modulos.

Page 5: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

https://imgflip.com/i/3hkon6

Page 6: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Código legado

Page 7: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Benéficos Da modularização

Page 8: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Escalabilidade

Page 9: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Manutenção

Page 10: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Build Rápido

Page 11: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Testes

Page 12: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic Delivery

Page 13: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Novas tecnologias

Page 14: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Entendendo a modularização

Page 15: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

O que é um módulo?

Page 16: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Microserviços

Page 17: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Android

Page 18: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Library

Page 19: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um módulo

Page 20: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um modulo

Page 21: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um modulo

⇢ plugin: android.library

Page 22: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um modulo

⇢ plugin: android.library

⇢ plugin: android.dynamic-feature

Page 23: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um modulo

⇢ plugin: android.library

⇢ plugin: android.dynamic-feature

⇢ plugin: java-library

Page 24: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um modulo

⇢ plugin: android.library

⇢ plugin: android.dynamic-feature

⇢ plugin: java-library

⇢ Crie classes e metodos como Internal

Page 25: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um modulo

⇢ plugin: android.library

⇢ plugin: android.dynamic-feature

⇢ plugin: java-library

⇢ Crie classes e metodos como Internal

⇢ Crie um README.md para cada modulo da sua aplicação

Page 26: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Criando um modulo

⇢ plugin: android.library

⇢ plugin: android.dynamic-feature

⇢ plugin: java-library

⇢ Crie classes e metodos como Internal

⇢ Crie um README.md para cada modulo da sua aplicação

⇢ Utilize bem api, implementation, compileOnly

Page 27: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por Feature

Page 28: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por feature

Page 29: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por feature

⇢ plugin: android.library / android.dynamic-feature

Page 30: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por feature

⇢ plugin: android.library / android.dynamic-feature

⇢ Fácil manutenção

Page 31: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por feature

⇢ plugin: android.library / android.dynamic-feature

⇢ Fácil manutenção

⇢ Facilidade para testes A/B

Page 32: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por feature

⇢ plugin: android.library / android.dynamic-feature

⇢ Fácil manutenção

⇢ Facilidade para testes A/B

⇢ Visão clara das features existentes no produto

Page 33: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por Layer

Page 34: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por layer

Page 35: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por layer

⇢ plugin: android.library / java-library

Page 36: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por layer

⇢ plugin: android.library / java-library

⇢ Melhor isolação de código

Page 37: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Modularização por layer

⇢ plugin: android.library / java-library

⇢ Melhor isolação de código

⇢ Facilidade na hora de trocar uma biblioteca

Page 38: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic feature modules

Page 39: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic feature modules

Page 40: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic feature modules

⇢ plugin: android.dynamic-feature

Page 41: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic feature modules

⇢ plugin: android.dynamic-feature

⇢ Pode ser um Instant App

Page 42: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic feature modules

⇢ plugin: android.dynamic-feature

⇢ Pode ser um Instant App

⇢ Instalação Por demanda

Page 43: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic feature modules

⇢ plugin: android.dynamic-feature

⇢ Pode ser um Instant App

⇢ Instalação Por demanda

⇢ Tempo, custo e Espaço

Page 44: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

App module

Page 45: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

App module

Page 46: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

App module

⇢ Realiza o start da aplicação

Page 47: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

App module

⇢ Realiza o start da aplicação

⇢ Navega para a primeira feature do app

Page 48: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

App module

⇢ Realiza o start da aplicação

⇢ Navega para a primeira feature do app

⇢ Realiza as configurações básicas, exemplo: startKoin, Timber …

Page 49: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Core module

Page 50: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Core module

Page 51: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Core module

⇢ Possui códigos que serão compartilhados entre os feature-modules

Page 52: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Core module

⇢ Possui códigos que serão compartilhados entre os feature-modules

⇢ Pode ser um centralizador de outros módulos

Page 53: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Core module

⇢ Possui códigos que serão compartilhados entre os feature-modules

⇢ Pode ser um centralizador de outros módulos

⇢ Fornece abstrações para outros módulos

Page 54: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação Entre feature modules

Page 55: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

Page 56: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Isola e cuida da navegação entre feature-modules

Page 57: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Isola e cuida da navegação entre feature-modules

⇢ Não conhece os feature-modules diretamente

Page 58: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Isola e cuida da navegação entre feature-modules

⇢ Não conhece os feature-modules diretamente

⇢ Os feature-modules que possuem dependência do modulo de navegação

Page 59: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

Page 60: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

• Navega entre activities

Page 61: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

• Navega entre activities

• Conhece apenas o action name para tornar a navegação possível

Page 62: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

• Navega entre activities

• Conhece apenas o action name para tornar a navegação possível

• Digitar o action name errado vai gerar um erro em tempo de execução.

Page 63: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

Page 64: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

• Navega entre activities e fragments

Page 65: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

• Navega entre activities e fragments

• Utiliza a facilidade de navegação que a biblioteca oferece

Page 66: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

• Navega entre activities e fragments

• Utiliza a facilidade de navegação que a biblioteca oferece

• O modulo de navigation conhece os feature-modules

Page 67: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

Page 68: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

• O Modulo de navegação fornecesse um contrato para navegação

Page 69: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

• O Modulo de navegação fornecesse um contrato para navegação

• As feature-modules implementam esse contrato e criam a

implementação de navegação

Page 70: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

• O Modulo de navegação fornecesse um contrato para navegação

• As feature-modules implementam esse contrato e criam a

implementação de navegação

• Não funcionaria com dynamic-features

Page 71: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

• O Modulo de navegação fornecesse um contrato para navegação

• As feature-modules implementam esse contrato e criam a

implementação de navegação

• Não funcionaria com dynamic-features

• O modulo app teria que carregar todos os módulos de navegação que

foram criados nas feature-modules.

Page 72: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

⇢ FlowNav

Page 73: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

⇢ FlowNav

• Configura no modulo de navegação as rotas do app e um identificador para cada rota

Page 74: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

⇢ FlowNav

• Configura no modulo de navegação as rotas do app e um identificador para cada rota

• Os feature-modules anotam a activity ou fragment para identificar que é um ponto de

rota

Page 75: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

⇢ FlowNav

• Configura no modulo de navegação as rotas do app e um identificador para cada rota

• Os feature-modules anotam a activity ou fragment para identificar que é um ponto de

rota

• Suporte para trabalhar com navigation

Page 76: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

⇢ FlowNav

• Configura no modulo de navegação as rotas do app e um identificador para cada rota

• Os feature-modules anotam a activity ou fragment para identificar que é um ponto de

rota

• Suporte para trabalhar com navigation

• Facilidade para trabalhar com Single activity

Page 77: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navegação entre feature modules

⇢ Intent Filter

⇢ Navigation

⇢ DI

⇢ FlowNav

• Configura no modulo de navegação as rotas do app e um identificador para cada rota

• Os feature-modules anotam a activity ou fragment para identificar que é um ponto de

rota

• Suporte para trabalhar com navigation

• Facilidade para trabalhar com Single activity

• Faltam contribuidores

Page 78: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Movie App

Page 79: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Movie App

Page 80: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Movie App

Page 81: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

App

⇢ Start na aplicação

⇢ Iniciar dependencias base

⇢ Conhece todos os feature-modules

⇢ Conhece o modulo :core por api

⇢ Conhece o modulo :ui por api

⇢ Conhece o modulo :navigation por api

⇢ Utiliza o modulo de :navigation para abrir o modulo de :mainhome

Page 82: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Core

⇢ Centraliza módulos e informações que serão utilizados em todos os

feature-modules

⇢ Conhece o modulo :libs:data por api

⇢ Conhece o modulo :libs:netwok por api

⇢ loadKoinModules de :libs:data e :libs:netwok

Page 83: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Navigation

⇢ Navega para todos os feature-modules

⇢ Utiliza a lib FlowNav

Page 84: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Features

⇢ Fluxos navegáveis dentro da aplicação

⇢ Conhece o modulo :core por implementation

⇢ Conhece o modulo :ui por implementation

⇢ Conhece o modulo :navigation por implementation

⇢ Utiliza o módulo de :navigation para navegar para outros módulos

Page 85: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dynamic features

⇢ Fluxos extras

⇢ Conhece o módulo :app por implementation

Page 86: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Libs

⇢ Módulos que fornecem funcionalidades extras para a aplicação

⇢ :libs:ui - fornece todos os resources necessários para o funcionamento da

aplicação

⇢ :libs:netwok - base para utilizar as configurações de rede

⇢ :libs:data - base para utilizar as configurações de dados locais

⇢ :libs:moviebase - classes genéricas utilizadas em vários módulos.

Page 87: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

Page 88: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

https://imgflip.com/i/3hkpip

Page 89: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

Page 90: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

⇢ Arquitetura

Page 91: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

⇢ Arquitetura

⇢ Separar as funcionalidades do app

Page 92: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

⇢ Arquitetura

⇢ Separar as funcionalidades do app

⇢ Desenhar grafico de módulos

Page 93: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

⇢ Arquitetura

⇢ Separar as funcionalidades do app

⇢ Desenhar grafico de módulos

⇢ Comece criando modulos de bibliotecas

Page 94: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

⇢ Arquitetura

⇢ Separar as funcionalidades do app

⇢ Desenhar grafico de módulos

⇢ Comece criando modulos de bibliotecas

⇢ Refatorar criando módulos

Page 95: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Por onde começar?

⇢ Arquitetura

⇢ Separar as funcionalidades do app

⇢ Desenhar grafico de módulos

⇢ Comece criando modulos de bibliotecas

⇢ Refatorar criando módulos

⇢ Gerenciar as dependências.

Page 96: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Dúvidas?

Page 97: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

Muito obrigado!

/alex-soares-siqueira /AlexSoaresDeSiqueira

Page 98: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢
Page 99: Alex Soares - Amazon S3 · Por onde começar? ⇢ Arquitetura ⇢ Separar as funcionalidades do app ⇢ Desenhar grafico de módulos ⇢ Comece criando modulos de bibliotecas ⇢

ReferênciasProjeto https://github.com/jeziellago/moviekx-app

FlowNav

https://github.com/jeziellago/FlowNav

Referências 

https://www.droidcon.com/media-detail?video=362742393

https://www.droidcon.com/media-detail?video=352671532

https://jeroenmols.com/blog/2019/03/06/modularizationwhy/

https://medium.com/mindorks/dynamic-feature-modules-the-future-4bee124c0f1

https://developer.android.com/studio/projects/dynamic-delivery#dynamic_feature_modules

https://developer.android.com/guide/app-bundle/

https://www.youtube.com/watch?v=PZBg5DIzNww