Android Jetpack — O início

O engraçado é que depois de publicar 3 posts sobre o Jetpack foi que eu me preocupei de criar esse post onde eu explico o que ele é. Acredito que uma imagem valem mais que várias palavras (talvez não mil):

Então, o Jetpack é um conjunto de ferramentas, componentes e guidelines que podem ser utilizados para nortear o desenvolvimento de apps Android. Como vocês podem ver na imagem acima, o Google dividiu as libs em 4 áreas com algumas ferramentas já conhecidas por nós desenvolvedores e outras que foram recentemente lançadas e ainda estão em alfa.

Basicamente no Google I/O do ano passado o Google lançou os Arch Components e percebeu que os desenvolvedores adoraram essa nova approach de “dar dicas” sobre como desenvolver apps. Então esse ano decidiram lançar o Jetpack com todo esse know-how e ferramentas que vieram sendo desenvolvidos desde então. Eu vou tentar aqui no blog falar sobre cada um deles e transformar esse post num master post para todos os outros que irão vir em seguida:

Arquitetura

  • DataBiding: Essa biblioteca permite que componentes de UI sejam ligados a fontes de dados no código utilizando apenas xml, ou seja, sem ser programaticamente, com é feito usualmente.
  • Lifecycle: É um conjunto de classes que permitem tornar componentes que possui life cycles (Activities, Fragments e Services) observáveis. Assim podemos aplicar o padrão Observer nesses elementos respeitando esses ciclos de vida que muitas vezes se tornavam fontes de bugs.
  • LiveData: É uma classe wrapper que torna dados observáveis através do padrão Observer. LiveData trabalha em conjunto com Lifecycle para atualizar os componentes somente quando estes estão em um estado válido.
  • Navegação: Essa lib ainda está em alfa, mas torna mais fácil o uso de Fragments para o desenvolvimento de várias telas. Tem post no blog, aqui.
  • Paginação: Torna mais organizado e eficiente a paginação de longas listas de dados. Trabalha bem com bibliotecas conhecidas como a Room e o Retrofit. Tem post no blog, aqui.
  • Room: Biblioteca de persistência de dados que permite adicionar uma camada de abstração sobre o SQL. Funciona como um ORM daqueles que envolvem a criação de DAOs, mas o desenvolvimento é bem mais confortável, inclusive com o AS verificando se a sua query SQL faz sentido. Tem post no blog, aqui.
  • ViewModel: Classe que serve de intermediário entre a camada de dados e a UI. Como diz a documentação, serve para guardar e administrar dados que serão exibidos pela UI de forma consciente em relação ao ciclo de vida. Essa classe permite por exemplo que dados sobrevivam a rotação da tela.
  • WorkManager: Nova API para execução de tarefas em segundo plano. Nessa nova API pode-se agendar a execução de tarefas (sem a necessidade de um app estar rodando) de forma facilitada (internamente ela utiliza APIs já conhecidas como o AlarmManager, JobScheduler e o Firebase JobDispatcher).

Fundação

  • AppCompat: Nossa lib já conhecida que permite a utilização de novas APIs em versões mais antigas do Android.
  • KTX: Funções que extendem a funcionalidade de certas classes. Uma feature do Kotlin adicionada em algumas classes do Android. Tem post no blog, aqui.
  • Multidex: Permite superar o limite de 64K métodos referenciados nos arquivos dex dos nossos apps.
  • Test: Toda as ferramentas de teste que podem ser utilizadas com o Android tais como Espresso e Roboeletric.

UI

  • Animações: Framework de animações do Android que permite realizar os mais diversos efeitos de UI.
  • Auto, TV e Wear: O Suporte dado ao sistema para a execução de apps nesses tipos de dispositivos.
  • Emoji: O Android tem uma lib de compatibilidade que permite a utilização de emojis em seus componentes de texto.
  • Fragment: O conhecido e as vezes problemático Fragment.
  • Layout: Aqui estão contidas todas as classes de View que nós utilizamos normalmente, ViewGroups, Buttons, TextViews e etc.
  • Palette: Uma lib que te ajuda a desenvolver apps que integram imagens e cores de uma forma mais seamless. Com essa lib, por exemplo, você pode analisar uma imagem e extrair cores que componhem essa imagem para utilizar essas cores em uma experiência melhor ao usuário.

Comportamento

  • Download Manager: Sistema já bastante utilizado para download de dados via http.
  • Media & Playback: São APIs utilizadas para executar os mais diversos tipos de arquivos de midia.
  • Permissões: O já conhecido sistema de permissões do android, principalmente as runtime permissions introduzidas no Android M
  • Notificações: O também já amplamente utilizado sistema de notificações, incluindo também o novo sistema de canais introduzido no Android O.
  • Compartilhamento: APIs que permitem adicionar a ação de compartilhamento nas apps. Isso include ShareActionProviders, ShareIntents e etc
  • Slices: Nova API que permite o compartilhamento de dados (na forma de uma UI interativa) de um APP sem que ele esteja aberto. É como um Widget que, atualmente, aparece no Google Search, mas que a ideia será introduzí-los em outras áreas do SO.

A ideia é essa, tentar falar um pouco de cada um desses componentes/ferramentas que foram organizados de forma a nos ajudar como desenvolvedores.

If you like it and you know it clap your hands, clap clap clap :)