Entendendo Android Jetpack-parte 2
Como vimos no ultimo artigo o Android Jetpack é dividido em quatro partes principais, demos um pequena introdução e falamos sobre os componentes da parte de arquitetura, nessa segunda parte iremos falar sobre os componentes Base.
Os componentes de base(Foundation) fornecem funcionalidade transversal, como retrocompatibilidade, testes e compatibilidade com a linguagem Kotlin.
E os Componentes são divididos em quatro partes que irei comentar aqui.
AppCompat
A AppCompat é uma coleção de bibliotecas que pode ser definida em dois grupos de bibliotecas a de compatibilidade e a bibliotecas de componentes .
A versão atual do AppCompat (v28.x) é a versão final. As próximas versões deste código usarão exclusivamente o Jetpack.
Você deve estar se perguntando porquê a Google está fazendo isso se já funcionava do jeito que estava, antigamente um dos motivos são os names spaces grandes e confusos agora são mais consistentes agora começam com (androidx. *) para as bibliotecas de suporte facilitando o uso, também o versionamento agora é semântico começando do 1.0.0 agora cada componente pode ser atualizado individualmente, facilitando atualizações e evitando importar vários componentes desnecessários.
Android KTX
O Android KTX é um conjunto de extensões do Kotlin que faz parte da família Android Jetpack.
Ele otimiza as APIs do Jetpack e da plataforma Android para uso no Kotlin. O objetivo do Android KTX é tornar o desenvolvimento de Android com o Kotlin mais conciso, agradável e idiomático aproveitando recursos da linguagem Kotlin, como funções/propriedades de extensão, lambdas, parâmetros nomeados e valores padrão de parâmetro. O Android KTX não adiciona novos recursos às APIs do Android já existentes.
Multidex
Um programa aplicativo Android é compilado em um arquivo .dex que, por sua vez, é compactado em um único arquivo .apk.
O DVM (Dalvik Virtual Machine) usa arquivos / arquivos .dex para executar bytecodes.
Mas o que significa Dex ?
Dex significa Dalvik Executable, que é o que o processador de máquinas virtuais do Google (Dalvik) usa para lidar com aplicativos Android. O Android foi criado com aplicativos pequenos e simples em mente e as restrições em um único executável da Dalvik fixaram o teto das referências de código em 65.536 métodos.
Este número não é por acado, ele representa a quantidade máxima de referências que podem existir em arquivos de bytecode Dalvik Executables (DEX) (64×1024). esses arquivos são usados na execução do nosso aplicativo e estão presentes no nosso .APK
.
Mas 65.536 métodos não é muito ?
Pode parecer bem difícil exceder esse numero mas se você usar muitas bibliotecas de terceiros como Retrofit, Facebook e outras e esse numero pode aumentar muito , quando um aplicativo é criado do zero ele já vem com varias bibliotecas inclusas então você pode estar começando com 1/4 da capacidade já utilizada
Pensando em solucionar esse problema, foi criado o MultiDex. Como o nome sugere, ele permite que código de múltiplos arquivos DEX possam ser lidos e referenciados. Nós só precisamos habilitar o MultiDex em nossa aplicação e toda mágica deve acontecer.
Test
A Android Testing Support Library fornece uma estrutura extensa para testar aplicativos Android. Essa biblioteca fornece um conjunto de APIs que permitem compilar e executar código de teste para seus aplicativos, inclusive testes de JUnit 4 e de interface do usuário (UI) funcionais. Para executar testes criados com essas APIs, use o Android Studio IDE ou a linha de comando.
A Android Testing Support Library contém as seguintes ferramentas de automação de testes:
- AndroidJUnitRunner: Executor de teste compatível com JUnit 4 para Android
- Espresso: Estrutura de teste de UI; adequado para teste funcional da UI dentro de um aplicativo
- UI Automator: Estrutura de teste de UI; adequado para teste funcional de UI de vários aplicativos entre sistemas e aplicativos instalados
Conclusão
Como o primeiro artigo que falamos sobre arquitetura esse demos uma pequena introdução ao modulo de Foundation(Base)Android Jetpack que é muito importante sabermos para entender e usarmos corretamente os componente que nos auxiliam no desenvolvimento de nossas aplicações, abaixo deixarei a documentação oficial pra quem quiser se aprofundar mais ainda.