Guerra ... Guerra nunca muda. Portanto, a guerra por códigos bonitos e funcionais está em andamento. E para cada tarefa difícil nasce sua própria arma: alguém faz isso por si mesmo e alguém usa ferramentas prontas. O desenvolvimento do Android não é exceção. Na conferência
AppsConf 2018 , discutiremos como e o que é mais interessante usar agora, onde você pode tropeçar e o que é interessante é o enorme arsenal de ferramentas de desenvolvimento que o Google finalmente começou a colocar em ordem. Os principais tópicos dos relatórios podem ser visualizados em nosso site, mas, por enquanto, pedimos ao especialista em desenvolvedor do Google Denis Neklyudov e Alexander Smirnov para falar sobre o novo kit de ferramentas Android Jetpack, que foi introduzido em maio deste ano.

Alexander Smirnov, co-fundador e CTO da PapaJobs, fundador da comunidade de desenvolvedores Android MOSDROID, o principal blog de vídeo Android em Faces. |
Denis Neklyudov, o primeiro GDE na Rússia, trabalha em Cingapura no 90seconds.tv, líder do podcast AndroidDev, palestrante de várias conferências e autor de vários cursos de desenvolvimento. |
O Android Jetpack foi lançado em maio no Google I / O.
O que você esperava daquela conferência? Suas expectativas se tornaram realidade?Alexander Smirnov : Eu esperava muito menos do que eu finalmente imaginei. Parecia que não havia necessidade de desenvolver a plataforma do ponto de vista comercial. No segmento móvel, o Google obteve uma vitória esmagadora em 87% do mercado com tendências positivas e, nos últimos anos, a ML tem sido visível como sua principal área de trabalho. Eu estava esperando o progresso no Material Design, a adição de ferramentas de ML para desenvolvedores e o lançamento do Constraint Layout 2.0. Mas vimos um grande passo para colocar as coisas em ordem e apoiar os desenvolvedores. De repente, satisfeito com os novos itens do AJP e o início da luta por um suporte aprimorado. Olá, Android X.
Denis Neklyudov : Eu
segui a regra principal de viagens para conferências de supermercado: não espere anúncios, mudanças revolucionárias, presentes - nada além de encontrar velhos amigos. Se eles não quebrassem nada. Mas não, eles introduziram o Android X, cuja migração não é o processo mais agradável em grandes projetos. Mas havia muito positivo. A coisa mais valiosa sobre o Google I / O é a comunicação com os desenvolvedores da estrutura e os colegas do workshop.
Quais novos itens já foram colocados em prática?Denis Neklyudov : No AJP, testamos apenas a migração para o Android X. Eu tenho um conjunto comprovado de soluções no projeto, não tenho vontade de me apressar e apresentar novos componentes. Eles apenas suportaram o Target SDK 28, verificaram a versão recente do Android Pie e se acalmaram. Estamos aguardando as melhorias prometidas para o teste estar disponível. Jetpack agora - estas são várias pequenas bibliotecas reunidas em um só lugar, que às vezes tornam a vida dos desenvolvedores um pouco mais fácil e agradável. A maioria dos novos produtos ainda não está pronta para versões de aplicativos.
Alexander Smirnov :
Das novidades apresentadas, tentei de tudo, mas na produção atualizamos apenas o aplicativo para o novo Material Design e aplicamos o Android KTX, que gostamos por sua simplicidade e conveniência. Eu gosto de recolher um monte de código em algumas linhas. Jogamos o resto no oleoduto e seguimos em frente este ano.
O Jetpack concluirá as tarefas com sucesso e você poderá usá-lo. Mas sim, algumas seções ainda estão em alfa, portanto, no estágio de desenvolvimento, pequenos problemas podem surgir. Isso é normal. Eu não recomendaria arrastar as ferramentas de produção no estado alfa, mas com o mesmo Kotlin isso não me impediu.
Para o Android, a questão da navegação conveniente sempre foi um problema grave.
Alguma coisa mudará com o AJP?Denis Neklyudov : No Android, a navegação sempre foi poderosa e variada: Atividade, Fragmento, você ainda precisa processar o DeepLinks e monitorar os argumentos transmitidos. Você pode facilmente se confundir em um grande mapa de telas. O Google está apenas tentando resolver isso com o novo Navigation, que é incorporado ao Android Studio com seu próprio reator de hierarquia de tela.
Uso soluções caseiras que atendem aos requisitos e a arquitetura geral do projeto. Embora o Navigation tenha erros graves e não esteja pronto para uso em aplicativos publicados.
Alexander Smirnov : No Jetpack, o Google deu um passo sério: a navegação apareceu, o que mudará a arquitetura dos aplicativos para melhor. Em aplicativos grandes, a navegação pode se tornar tão complicada que lembrar todas as opções de transição não é realista. E eles ainda precisam ser programados e testados. Havia várias alternativas que tentaram resolver isso: Cicerone, Flow, Conductor. Nenhum deles é tão funcional.
Antes de tudo, vale a pena observar o Editor de Navegação: é conveniente criar um diagrama de transição gráfico com ele e é bom controlá-lo com o mouse. Implementou o processamento conveniente do DeepLinks com suporte para reproduzir toda a árvore de transição. O componente de navegação divide o trabalho com o DeepLinks em dois casos: explícito e implícito. O primeiro, podemos nos criar através de uma DSL conveniente e chamar como PendingIntent através de uma ação específica. O segundo é o DeepLinks familiar, por exemplo, a partir do navegador. Eles são criados e chamados de maneiras diferentes, mas são processados de forma idêntica usando o gráfico de navegação e o suporte completo para criar a pilha para abrir a seção necessária. Processar o DeepLinks nunca foi tão fácil.
Biblioteca de paginação foi adicionada ao AJP. Como ela muda de trabalho com o RecyclerView?Denis Neklyudov : O RecyclerView sempre teve uma desvantagem: você precisa gastar muito tempo em uma solução que fornece carregamento de página por página em ambas as direções e até com a capacidade de pular para diferentes partes desta lista interminável. Na Biblioteca de Paginação, o Google apresentou sua solução para esse problema.
Alexander Smirnov : A biblioteca repete a rotina da maioria dos desenvolvedores do Android - trabalhando com listas. Para acelerar a exibição de grandes conjuntos de dados, todos os dividimos em páginas e trabalhamos com eles. Usando a Biblioteca de Paginação, esse tipo de trabalho se torna simples, pois obtemos a implementação pronta para uso. Além disso, o componente pode trabalhar no carregamento de dados de várias fontes e misturá-los. Também temos uma idéia interessante com os espaços reservados, quando no momento do carregamento de dados adicionais você pode mostrar belos stubs em vez de giradores eternos. Além disso, um recurso de interrupção foi adicionado para trabalhar com instantâneos ou dados instáveis - o próprio componente pode entender o que foi alterado e quais elementos precisam ser descartados no centro da lista e quais estão no topo.
De fato, esse componente foi criado para funcionar em conjunto com o RecyclerView, mas a Biblioteca de Paginação consiste em duas partes principais: PagedList e PagedListAdapter. Na verdade, usando o PagedList, você pode trabalhar com essas partes, baixar de várias fontes.
Um dos novos produtos é o Workmanager. Como ele muda seu trabalho com tarefas em segundo plano?Alexander Smirnov : Ajuda a afastar sistematicamente dos serviços onipotentes para uma API conveniente no Jetpack: permite adicionar a necessidade de atender às condições ambientais para iniciar uma tarefa, definir a ordem das tarefas e cadeias. Você pode transferir dados para uma tarefa executável e obter o resultado dela. Ele tem três vantagens enormes: você não precisa do Google Play no seu dispositivo, pode executar tarefas apenas sob determinadas condições, pode criar cadeias de tarefas.
Nenhum dos análogos anteriores era auto-suficiente, então havia uma biblioteca como o Android-Job do Evernote, que usava todos os análogos de uma só vez. Após o aparecimento do WorkManager, a necessidade deles desaparece.
Denis Neklyudov : o Google conseguiu um empacotador tão grande em todas as soluções existentes para trabalhar com tarefas em segundo plano. Como a tarefa adiada simplesmente não pode ser concluída no Serviço, os desenvolvedores enfrentam o lançamento do Android Marshmallow e a chegada do Modo Doze. Agora, o aplicativo não pode fazer o que bem entender. E com cada versão de tais restrições cada vez mais. Mesmo com o Lollipop, temos o JobScheduler disponível, que executa tarefas em segundo plano sob certas condições e com o consentimento do sistema, mas possui bugs nas versões anteriores e não está claro como trabalhar com ele nas versões do Android onde não existem. Para fazer isso, um wrapper foi criado na forma de um gerente de rede do GCM e reescrito novamente como um Job Dispatcher do Firebase. Mas eles se mostraram imperfeitos - esse foi o nascimento de seu WorkManager de substituição moderno, que assume a tarefa de executar tarefas em segundo plano em qualquer versão do Android sem erros.
AJP adicionou um novo recurso - Slices. O que há de interessante nela?Alexander Smirnov : Primeiro de tudo, as fatias devem ser mostradas ao seu produto e profissional de marketing. Eles permitem que o usuário veja seu aplicativo com mais frequência e use a parte necessária mais rapidamente: vá diretamente para a seção desejada, troque o recurso necessário. O Slices também permite que você participe do seu aplicativo entre os resultados de pesquisa na Pesquisa do Google e também poderá se integrar ao Google Assistant no futuro.
No Slices, você pode exibir funções relacionadas ao tipo do seu aplicativo e seus recursos. É possível distinguir três grupos: navegação, execução de tarefas e retorno aos dados. Em geral, dos usuários do Slices obtêm uma interação mais simples e rápida, os desenvolvedores obtêm mais tráfego e oportunidades para retornar o usuário ao aplicativo.
Denis Neklyudov : Admita, há muito falta a capacidade de receber informações de aplicativos em aplicativos com elementos interativos diretamente da pesquisa. As fatias resolvem exatamente esse problema, permitindo que o aplicativo declare a interface do usuário e as ações com ela, que serão incorporadas a aplicativos de terceiros, incluindo a pesquisa. Estou realmente ansioso para ver as novidades na interface do Google Assistant no smartphone incorporado do Feedly, fotos do passado da Timehop, meus voos do App in the Air, o caminho para o trabalho "Y. Navigator" etc.
Para os proprietários de aplicativos, esta é uma excelente oportunidade para aumentar a frequência de uso de seus serviços; também será mais conveniente para o usuário trocar de faixa no Spotify sem sair do novo simulador de corrida.
E quais são as limitações?Alexander Smirnov : O Slices ainda é muito aparado pelos modelos: vários aplicativos estão incorporados em outros e o usuário precisa entender que o mecanismo de interação será diferente. Para versatilidade, você sempre tem que pagar. Se você se lembra dos Widgets, eles também eram muito limitados. A expansão do funcional, é claro, será, mas não acho que algo grande deva ser esperado a partir disso.
Denis Neklyudov : Concordo, agora a API do Slices está limitada a um determinado conjunto de modelos possíveis que podem ser incorporados em aplicativos de terceiros, mas novos modelos também aparecerão com novas versões. Os desenvolvedores baniram especificamente as interfaces personalizadas para poder controlar a aparência das fatias no aplicativo incorporado e para que sejam consistentes.
O Google adicionou uma biblioteca KTX ao AJP. Quais são as suas impressões sobre ela?Alexander Smirnov : Uma ótima ferramenta, é exatamente isso que faltava há muito tempo. O KTX é um conjunto de extensões para um uso mais agradável da API do Android nas tarefas diárias.
Eu recomendo trocá-lo para todos os desenvolvedores do Android, a fim de aumentar a produtividade. Dá comodidade, velocidade e bom humor ao desenvolver. Com o KTX, você pode até recolher o clichê e obter um código limpo e bem legível.
Mas você precisa estudar cuidadosamente as extensões que o KTX fornece e examinar o código fonte dessas extensões para entender o que está acontecendo sob o capô. E como não há mais armadilhas, você pode enfrentar com segurança.
Denis Neklyudov : Os desenvolvedores da AJP tomaram a decisão certa: a estrutura deveria ser mais amigável para Kotlin. Assim, o projeto com um conjunto de funções estáticas nasceu, expandindo a sintaxe do framework. O Kotlin possui muitos recursos de linguagem convenientes e apenas funções de extensão permitem acessar as classes de estrutura de uma maneira conveniente. Por exemplo, view.isVisible é uma alternativa curta para view.getVisibility () == View.Visible.
Existem muitas funções diferentes, é melhor
ver por si mesmo . Claro, você pode viver sem eles, como, de fato, sem Kotlin. Mas é mais agradável.
O Google está promovendo cada vez mais o Kotlin. Como você se sente sobre isso?
Quais são as perspectivas dele?Alexander Smirnov : Tenho uma atitude muito positiva em relação ao Kotlin e, desde janeiro de 2016, utilizo-o como a principal linguagem de desenvolvimento para o Android. Durante esse período, ele participou da migração de três empresas de Java para Kotlin. Infelizmente, o Java está se desenvolvendo bem devagar e o Kotlin para desenvolvimento móvel é uma lufada de ar fresco.
O momento em que o Kotlin se torna a principal linguagem de desenvolvimento para Android é uma questão de tempo. Os desenvolvedores do Android já estão aparecendo, nos quais o Kotlin é a primeira linguagem de desenvolvimento e o Java é algo desconhecido. Temos um futuro agradável com o Kotlin, pelo menos até o Google decidir construir um novo sistema operacional, por assim dizer, um Android melhorado. Mas isso é uma questão de futuro distante, que não é um fato do que virá.
Denis Neklyudov : Não posso dizer que o Google esteja promovendo ativamente o Kotlin. Em vez disso, alguns projetos relacionados à estrutura em si se tornam amigáveis ao Kotlin. Isso não significa que, em 2018, um desenvolvedor Java para Android seja algum tipo de renegado ou representante de uma minoria. Mas o fato de o Kotlin estar se tornando cada vez mais confiante e rápido está se tornando o idioma padrão para os desenvolvedores, e isso é uma boa notícia.
Quando você ouve sobre o Flutter, uma estrutura de plataforma cruzada para aplicativos móveis do Google, o Kotlin Native ecoa imediatamente, que é compilado para Android e iOS. Muitos estão esperando que ele se torne o idioma de tudo: Android, iOS, Web, Incorporado ... Os planos do JetBrains são napoleônicos. Observamos relatórios de bugs, teste beta e desfrutamos da linguagem agradável para a qual conseguimos migrar nossos projetos com o mínimo de esforço.
Faz mais de três meses desde o lançamento do Android AJP. Como ele se mostrou?Alexander Smirnov : Usando o AJP, o Google planejou ajudar os desenvolvedores do Android a criar aplicativos de alta qualidade ainda mais rapidamente e sem soluções adicionais no zoológico. E como bônus, eles tornaram mais fácil para os iniciantes o desenvolvimento do Android. Eu acho que o Jetpack lidou com a tarefa.
O resultado foi um conjunto interessante que resolve as tarefas da maioria dos desenvolvedores. Mas podemos ter certeza em cerca de 6 a 12 meses, quando chegarmos ao lançamento da maioria das inovações. Até agora, isso parou muitos no caminho de começar a usar o AJP na produção.
Denis Neklyudov : O Google não
criou o AJP do zero, mas reuniu muitas coisas úteis que não fazem parte da estrutura em si e são empacotadas em aplicativos por seus desenvolvedores. É uma boa idéia combiná-los com um nome vibrante e elegante. É bom para os desenvolvedores que agora haja um único
recurso em que você possa encontrar uma solução oficial para muitos problemas. Pelo menos é conveniente.
Obviamente, nem tudo o que está incluído neste conjunto está pronto para uso em aplicativos sérios, algo ainda está nos estágios de desenvolvimento e depuração ativos. A partir da estrutura em si, há um sentimento persistente da versão beta, eu realmente não pressionarei o paciente e discutirei o IDE. Mas estamos acostumados com o Android.
Nesta lista de bibliotecas e soluções, todos encontrarão algo útil para si mesmos. E para iniciantes, esse é um recurso absolutamente obrigatório para a familiarização, para que eles não pisem em um rake conhecido, mas primeiro tentem maneiras mais ou menos oficiais de resolver seus problemas.
Quais são as perspectivas para o desenvolvimento da AJP? O que poderia ser novo no próximo ano?Alexander Smirnov : Agora, temos muitos novos desenvolvimentos; portanto, antes de tudo, eles precisam ser finalizados e estabilizados. Então eu esperaria o desenvolvimento sistemático de cada um dos componentes e ferramentas, talvez uma pequena adição de algo novo. O Jetpack foi um passo à frente, portanto, a partir do próximo ano, espero melhorias sistemáticas, mas depois de mais um ano poderá ser muito interessante. O que definitivamente vale a pena esperar no próximo ano é uma integração mais densa e conveniente com o Android Studio.
Denis Neklyudov : A AJP se expandirá a cada nova tarefa resolvida, lançada em domínio público. Com cada versão do Android, a estrutura do Jetpack também será desenvolvida na forma de AppCompat e Componentes de Material. O que aparecerá no futuro próximo é difícil de dizer, estou esperando a adição de nitrogênio - um pacote de utilitários para testar aplicativos em larga escala.
Globalmente, o Google está constantemente expandindo os recursos do navegador, o que isso pode levar no futuro?Denis Neklyudov : repito constantemente que não é necessário perceber algumas das etapas do Google como algo global e centralizado. Se a equipe do Chrome tiver recursos suficientes para desenvolver o AMP, o PWA e agora também o WebAssembly, isso não significa que existe uma conspiração para levar e transferir todos para a Web por 202 .... Como o desenvolvimento do Flutter, isso não significa que todos usaremos essa estrutura e, em seguida, o Android estará fadado a morrer, porque primeiro o ChromeOS e depois o Fuchsia assumem o controle de todos os dispositivos do usuário. Neste verão, Jake Wharton falou na Droidcon Berlin sobre como a linha entre a web e os aplicativos nativos está diminuindo. Pode-se inferir do relatório que, na situação atual, é necessário oferecer suporte adequado a todas as plataformas separadamente e tentar reutilizar o código entre elas. No entanto, se você acredita que a Internet pode ser de alta velocidade, estável e barata em todo o mundo, talvez os aplicativos da Web tenham a chance de dominar. Mas até agora dificilmente se acredita.
Alexander Smirnov : A transição de aplicativos nativos para Progressive Web Apps é o sonho de milhões de desenvolvedores da web, gerentes de produto e um grande número de outras pessoas. Escolhendo um aplicativo PWA em vez de um celular, a empresa simplifica o desenvolvimento, o uso, a atualização e a atração de usuários. O PWA é uma boa solução para um grande segmento de aplicativos móveis simples e não seremos capazes de abandonar completamente o desenvolvimento nativo em breve.
Bem, quem se importa em ouvir as notícias do mundo do desenvolvimento do Android ao vivo, descobrir muitas coisas mais interessantes sobre os mais recentes planos insidiosos do Google Enclave, para conversar diretamente com especialistas, aguardamos a nossa conferência
AppsConf 2018 .
Para quem prefere estudar tudo em casa, temos um canal no YouTube onde os vídeos do AppsConf serão enviados (alguns meses após a conferência).
E os anúncios de todos os eventos e materiais úteis, incluindo conferências futuras, anúncios dos melhores relatórios, convites para reuniões, relatórios descriptografados e artigos úteis, publicamos em nossa lista de discussão .