Novidades do Google I/O 2018, para desenvolvedores

Logo do Google I/O 2018.

O Google I/O 2018 acabou e agora temos muito conteúdo para nos atualizarmos. Foram 3 dias de anúncios de novos produtos, novas funcionalidades e muita novidade para nós, desenvolvedores.

Este post tem como objetivo apresentar uma visão geral das principais novidades para os desenvolvedores Android.


Android App Bundle

Um novo jeito de publicar e distribuir seus apps Android no Google Play
O grande destaque é a forma como a loja distribui o apk para o usuário final, que será dinâmica e adaptado ao dispositivo do usuário. A ferramenta também é integrada ao Android Studio, o que facilitará o processo de upload do aplicativo direto pela IDE.

Comparação de como o usuário baixava um app (esquerda) e como será agora (direita).

Até então a estratégia usada para distribuir aplicativos menores era gerar múltiplos apks, cada um deles com uma configuração especifica de idioma, telas, imagens etc, e subi-los separado no Google Play manualmente. Quando o usuário fosse baixar o aplicativo lhe seria entregue apenas a versão relativa ao seu dispositivo. Por exemplo, um usuário de tablet iria baixar da loja um apk que continha apenas imagens para tablets e não imagens para tablets e imagens para smartphones pequenos. Mas isso só seria possível se o desenvolvedor tivesse o carinho de ter gerado várias versões, cada um com sua particularidades.
Com a novidade a distribuição do apk será dinâmica diretamente na loja, de acordo com o dispositivo do usuário, e o desenvolvedor só terá que subir um apk no novo formato.


Android Jetpack

Conjunto de bibliotecas, ferramentas e referências de arquitetura para auxiliar no desenvolvimento de aplicativos Android.

Componentes que compõem o Jetpack.

Inspirado na Support Library, tem o objetivo de reunir todas ferramentas necessárias para construir um aplicativo Android de maneira fácil, rápida, organizada e compatíveis com as versões anteriores do sistema. Como é um “pacote” de ferramentas você não precisa usar todas (isto nem faria sentido) e sim apenas as que julgar necessário.

Componentes

Muitas das ferramentas deste pacote já são conhecidas e provavelmente você já as usou em algum ponto de sua vida profissional, mas as grandes novidades são:

WorkManager
Biblioteca para lidar com tarefas em background de maneira inteligente. Algumas das suas características são:

  • As tarefas podem ser executadas de forma assíncrona ou não.
  • É possível garantir que uma tarefa será executada, mesmo se o usuário finalizar o aplicativo ou reiniciar o dispositivo.
  • Definir que uma tarefa será executada repetidas vezes.
  • Criar um encadeamento de tarefas, definindo a ordem de execução.
  • Definir circunstâncias em que uma tarefa será executada. Por exemplo, tal tarefa só poderá ser executada caso o usuário esteja com uma carga relativamente alta de bateria e com conexão com internet via Wi-Fi.
  • E também enviar o status da execução via LiveData para camada de visualização, para informar ao usuário o progresso da execução.

Navigation
Responsável por cuidar do fluxo de navegação do aplicativo. Além de garantir um padrão de fluxo do aplicativo, esta ferramenta irá auxiliar em fluxos que geralmente são complicados para desenvolvedores, como stack de fragments, deep links, notificações e telas com animações de entrada etc.

Paging
Biblioteca para facilitar o carregamento de dados de forma gradual, usado em listas onde o usuário pode rolar para carregar mais conteúdos. Tem compatibilidade com Room e RecyclerView. Os dados carregados serão exibidos automaticamente para o usuário através de LiveData.

Slices
Um template visual flexível que pode exibir e interagir com o conteúdo do seu aplicativo em qualquer lugar do sistema. O objetivo é o desenvolvedor poder criar algo parecido com um widget, para que o Android possa utilizar em resultado de buscas ou no Google Assistant, por exemplo.

Android KTX
Um conjunto de Kotlin extensions de componentes já existentes no Android. Visando facilitar o desenvolvimento, estes componentes estão escritos de modo mais conciso e idiomáticos utilizando características de Kotlin como lambdas, parâmetros padrões, parâmetros nomeados etc. Vale destacar que esta biblioteca não adiciona componentes novos.
Um exemplo clássico é a forma como se inicia um Fragment

Iniciando um Fragment no Java
Iniciando um Fragment no Kotlin e utilizando com Android KTX

Novo package
Outro grande ponto de atenção para os desenvolvedores é que os packages mudaram para androidx. Quais? Todos dentro do Jetpack.
Havia uma certa confusão com packages da support library que eram vN, onde N é o número da versão que havia a retrocompatibilidade. Por exemplo, a v7 dava suporte até a versão 7 do Android. Mas hoje a versão mínima do Google é a 14. ¯\_(ツ)_/¯
Por estas e outras, algumas mudanças de package foram

  • android.support.**para androidx.@
  • android.arch.**para androidx.@.
  • android.databinding.**paraandroidx.databinding.@

Você pode conferir a lista completa neste link.


Android Studio 3.2

Foi lançado a versão preview do Android Studio 3.2 canary 14.
Esta versão tem como base o IntelliJ 2018.1. Além de correções de bugs e aprimoramentos de análise de código, esta versão traz muita integração com os novos componentes apresentados no evento.

Atual logo do Android P, qual será o seu nome… Paçoquita? 🇧🇷🤔

Android P

O Android Studio 3.2 já conta com suporte ao preview do Android P, onde o desenvolvedor poderá compilar o projeto na nova versão e testar os aplicativos no emulador.

A navegação da aplicação.

Navigator Editor

Usando o Navigation do Jetpack com o Android Studio 3.2 o desenvolvedor poderá contar com uma visibilidade de como está a navegação da sua aplicação.

Migração para o novo padrão de dependências e pacotes.

Suporte a migração para o pacote AndroidX

A IDE também contará com uma ferramenta para atualizar todos os pacotes do projeto para as novas dependências, no caso, androidx.**

Publicando direto do Android Studio.

Suporte para uso da Android App Bundle

Com a nova versão preview já será possível tirar aproveito da nova maneira de distribuição de apks, desde que esteja utilizando também a última versão do plugin do gradle:3.2.0-14

Outras novidades é o suporte ao Slice, uso do R8 (o substituto do ProGuard), gravação de tela do emulador e muito mais! 
Para mais detalhe, acesse o blog oficial de desenvolvedores Android neste link.



Contato

Pelo e-mail orafaaraujo@gmail.com, pelo skype orafaaraujo, e pelo slack/medium/twitter @orafaaraujo
Feedbacks são bem-vindos!

Obrigado!