Google lança código-fonte da Google I/O 2018 para Android | iMasters
Google lança código-fonte da Google I/O 2018 para Android
Artigo de Shailen Tuli, publicado originalmente pelo Android Developers Blog. A tradução foi feita pela Redação iMasters com autorização.
Recentemente a Google lançou o código-fonte para o aplicativo oficial da Google I/O 2018 para Android. A versão 2018 constitui uma reescrita abrangente do app. Por muitos anos, o aplicativo usou uma arquitetura ContentProvider + SyncAdapter. Este ano, reescrevemos o app usando Architecture Components e colocamos o código em sincronia com as recomendações atuais da equipe do Android para criar aplicativos modernos.
Seguimos as recomendações apresentadas no Guide to App Architecture para escrever códigos modulares, testáveis e de fácil manutenção ao decidir sobre a arquitetura do aplicativo. Mantivemos a lógica longe de Atividades e Fragmentos e a movemos para ViewModels. Observamos dados usando LiveData e utilizamos a Data Binding Library para vincular componentes de interface do usuário em layouts às fontes de dados do app.
A arquitetura geral do aplicativo pode ser resumida neste diagrama:
Usamos uma camada Repositório para manipular operações de dados. Os dados do IOSched vêm de algumas fontes diferentes – os dados do usuário são armazenados no Cloud Firestore (remotamente ou em um cache local para uso offline), as preferências e as configurações do usuário são armazenadas em SharedPreferences, dados de conferência são armazenados remotamente e buscados e armazenados na memória para o aplicativo usar – e os módulos de repositório são responsáveis por manipular todas as operações de dados e abstrair as fontes de dados do restante do app. Se algum dia quisermos trocar o backend Firestore por uma fonte de dados diferente, nossa arquitetura nos permite fazê-lo de maneira limpa.
Implementamos uma camada de domínio leve, que fica entre a camada de dados e a camada de apresentação, e manipula partes discretas da lógica de negócios da thread da interface do usuário. Exemplos. Usamos o Dagger2 para injeção de dependência e contamos fortemente com o dagger-android para abstrair o código boilerplate e o Espresso para testes básicos de instrumentação, e JUnit e Mockito para testes unitários.
O uso de tecnologias do Firebase cresceu no aplicativo conforme a plataforma do Firebase amadureceu. A versão 2018 usa os seguintes componentes do Firebase:
Cloud Firestore é a nossa fonte para todos os dados do usuário (eventos marcados ou reservados por um usuário). O Firestore nos forneceu a sincronização automática e também gerenciou a funcionalidade offline para nós.
Firebase Cloud Functions nos permitiu rodar o código de backend. O recurso de reservas dependia muito das funções que verificam o status de um usuário (somente os participantes tinham permissão para fazer reservas), verificando a disponibilidade de espaço e o status de reserva persistente no Firestore.
Firebase Cloud Messaging nos deixa informar o app sobre as alterações nos dados da conferência em nosso servidor. Os dados da conferência são, em sua maioria, estáticos, mas mudam de tempos em tempos, especialmente após o keynote. O aplicativo tradicionalmente usa um modelo ping-and-fetch ao trabalhar com dados da conferência, e nós retivemos esse uso este ano.
Remote Config nos ajudou a gerenciar constantes in-app. Em anos anteriores, nos descobrimos incapazes de informar os usuários quando dados não diretamente relacionados ao cronograma da conferência – informações sobre Wi-Fi, agenda de conferências etc. – mudaram inesperadamente. O Remote Config nos ajudou a atualizar esses valores de maneira leve.
Tomamos a decisão inicial de reescrever o app a partir do zero para alinhá-lo com a arquitetura moderna do Android. Usar o Kotlin para a reescrita foi uma escolha fácil: nós amamos a sintaxe expressiva, concisa e poderosa do Kotlin; descobrimos que o suporte do Kotlin para recursos de segurança, incluindo capacidade de anulação e imutabilidade, tornou nosso código mais resiliente; e aproveitamos a funcionalidade aprimorada fornecida pelas extensões do Android Ktx.
Na I/O 2018, a equipe do Material Design anunciou o Material Theming, dando aos aplicativos uma capacidade muito maior de personalizar o Material Design para trazer mais da marca de seus produtos. Quando lançamos o app antes doe Material Theming, não podíamos usar todos os novos componentes, mas conseguimos dar uma olhada na nova Bottom App Bar com Floating Action Button e pudemos incorporar muito dos elementos da marca da conferência.
A reescrita do aplicativo traz o código em sincronia com as recomendações opinativas do Android sobre a criação de apps, e isso resultou em uma base de código mais limpa e mais fácil de manter. Continuaremos trabalhando no aplicativo, incorporando componentes do JetPack à medida que eles se tornam disponíveis e encontrando oportunidades para exibir os recursos da plataforma que são bons para o aplicativo. Os desenvolvedores podem seguir as alterações no código no GitHub.
Este artigo é do Android Developers Blog. Ele foi escrito por Shailen Tuli. A tradução foi feita pela Redação iMasters com autorização. Você pode acessar o original em: https://android-developers.googleblog.com/2018/08/google-releases-source-for-google-io.html