Desenvolvimento mobile multiplataforma: aplicativo Guiaderodas

Um dos maiores desafios no gerenciamento de projetos de software é o delicado balanço entre qualidade, prazo e custo. Com aplicativos, isso não é diferente. Hoje em dia, esse desafio torna-se ainda mais complexo no desenvolvimento mobile multiplataforma, devido à necessidade de suportar, no mínimo, as duas plataformas mais populares entre os usuários de smartphones: Android e iOS.

A forma tradicional de desenvolvimento de aplicativos é baseada nas chamadas “tecnologias nativas” que, no caso de Android e iOS, são absolutamente diferentes. Com isso, é necessário desenvolver dois (ou mais) softwares equivalentes e completamente distintos, multiplicando consideravelmente o tempo, esforço e custo financeiro dos projetos… ou será que não? Existem outras alternativas?

Neste post, vamos mostrar como o Guiaderodas, um guia de acessibilidade premiado pela ONU e MIT Technology Review, utilizou com sucesso tecnologias multiplataforma para agilizar e baratear o desenvolvimento de seu aplicativo.

Tecnologias de desenvolvimento mobile multiplataforma

O aplicativo Guiaderodas é oferecido nas duas principais plataformas mobile da atualidade – Android e iOS. Originalmente, o aplicativo foi desenvolvido utilizando as chamadas “plataformas nativas” de desenvolvimento. Uma vez que ambas são completamente diferentes, sendo inclusive baseadas em diferentes linguagens de programação (Java ou Kotlin no Android, Objective C ou Swift no iOS), foi necessário desenvolver dois softwares completamente distintos, resultando em duas bases de código e, na prática, elevando consideravelmente o custo e esforço para criação e manutenção de aplicativos.

Como solução para este problema característico dos aplicativos nativos, diversos frameworks multiplataforma surgiram na última década. Uma das principais famílias é a dos chamados aplicativos híbridos, como Cordova, PhoneGap e Ionic, que criam uma “casca” nativa para encapsular um conteúdo construído com tecnologias web.

Outra aproximação para resolver a questão é a adotada pelas plataformas Xamarin, da Microsoft, e React Native, do Facebook: criar uma camada extra de abstração que permita que os aplicativos sejam desenvolvidos em uma linguagem de programação única, mas que ainda geram código nativo, compilado para as diferentes plataformas.

A seguir, explicamos um pouco mais sobre como cada uma dessas soluções funciona e contamos os resultados observados em projetos e provas de conceito elaborados. 

Aplicativos híbridos

Esta estratégia para desenvolvimento mobile multiplataforma tem como seus principais representantes uma família de frameworks correlatos: Cordova, PhoneGap e Ionic. Um aplicativo desenvolvido nelas é constituído por uma espécie de “web app” encapsulada por um envelope nativo. Assim, essas tecnologias permitem que aplicativos sejam criados utilizando apenas Javascript e HTML5. 

Apesar de terem criado grande entusiasmo na época de seu lançamento e terem sido adotados por empresas como o LinkedIn, rapidamente ficou claro que seu desempenho ficava muito aquém do ideal. Atrasos de alguns milissegundos entre um clique em um botão e uma mudança de tela, por exemplo, acabam sendo perceptíveis para os usuários, gerando uma má experiência.

Apesar de avanços significativos nos últimos anos, o principal ponto negativo dos aplicativos híbridos continua sendo seu desempenho. Contudo, continuam sendo uma opção viável para desenvolvimento rápido e menos custoso de protótipos e aplicativos simples, uma vez que a deficiência só se torna altamente perceptível em aplicativos mais elaborados.

Xamarin

Baseado na plataforma Mono, o Xamarin permite que aplicativos sejam desenvolvidos na linguagem C#, gerando código nativo para ambas as plataformas. O Xamarin foi lançado em 2011 e posteriormente adquirido pela Microsoft, que o disponibilizou gratuitamente aos desenvolvedores. O apoio da gigante de tecnologia conferiu grande peso à plataforma, cujos aplicativos oferecem um desempenho muito próximo à dos puramente nativos. 

Em média, cerca de 70% do código é compartilhado entre Android e iOS, exigindo ainda um esforço considerável de desenvolvimento específico para cada sistema operacional. É possível atingir proporções muito maiores de compartilhamento utilizando o Xamarin Forms, porém ao custo de grande inflexibilidade na construção de interfaces gráficas – o que pode ser um “deal breaker” para muitos projetos.

Outra desvantagem desta plataforma é que, em geral, os executáveis resultantes são muito maiores do que se comparados com as plataformas puramente nativas (em nossos testes, cerca de 10MB para um aplicativo com apenas uma tela em branco, por exemplo).

React Native

A tecnologia utilizada pelo Guiaderodas para desenvolvimento mobile multiplataforma da nova versão de seus aplicativos é o React Native, criado pelo Facebook após sua experiência frustrada com aplicativos híbridos. Ele também é baseado em Javascript, porém sua semelhança com o Cordova termina aí: o código-fonte é compilado nativamente, resultando em excelente desempenho. Graças à flexibilidade do HTML5 e CSS, é possível criar interfaces gráficas ricas e atraentes.

Por ser completamente open-source e baseado na biblioteca React, uma das mais populares no ecossistema web, o React Native conta com uma ativa comunidade de entusiastas desde sua criação. Existe, assim, uma grande quantidade de bibliotecas disponíveis, o que também acelera o desenvolvimento.

Com isso, o React Native representa uma escolha sólida para diminuir os custos de desenvolvimento de aplicativos mobile. Mas ele oferece também uma outra vantagem para empresas que já têm aplicativos nativos: sua adoção não exige o descarte total da base de código e uma reconstrução completa, pois é possível adotá-lo gradativamente, integrando módulos Javascript a aplicações puramente nativas.

Apesar de seu sucesso, o maior risco do React Native é o fato de que ele ainda está em versão beta, ou seja, ainda é uma plataforma experimental. Com isso, existe sempre o risco de sua equipe ser a primeira “desbravadora” a encontrar algum problema para o qual ainda não existe solução disponível. Apesar disso, a não ser que seu projeto seja extremamente inovador, a grande maioria das funcionalidades comuns de apps (leitura de GPS, push notifications, uso de câmera) já contam com soluções prontas e boa documentação.

A nova versão do aplicativo Guiaderodas foi lançada em Outubro de 2018. As únicas funcionalidades que exigiram desenvolvimento específico para cada plataforma foram as requisições de autorização para acesso ao GPS do dispositivo. Toda a interface gráfica, lógica de aplicação e comunicação com o servidor foram escritas em uma base de código unificada. Como resultado, a proporção de compartilhamento entre Android e iOS obtida foi de cerca de 95%.

Aplicativo Guiaderodas

O aplicativo Guiaderodas é um guia de acessibilidade para pessoas com dificuldade de locomoção. Baseado na geolocalização do usuário, o app permite consulta e avaliação da acessibilidade de locais em todo o mundo.

As informações contidas na plataforma são construídas de forma colaborativa. Através da prática de Crowdsourcing, um amplo banco de dados foi construído graças à participação de milhares de voluntários. Os locais são classificados de acordo com um código de cores: verde (acessível), amarelo (parcialmente acessível) ou vermelho (não acessível). 

Lançada em 2016 para iOS e Android, a plataforma conta hoje com cerca de 150.000 avaliações sobre locais em mais de 1.000 cidades de mais de 80 países.

O aplicativo já recebeu diversos prêmios nacionais e internacionais, tendo sido eleito como “Melhor iniciativa digital para inclusão do mundo” pela ONU em 2017, “Melhor app das Américas” pela ITU em 2018 e também o prêmio EcoBrasil em 2019, maior reconhecimento nacional de práticas empresariais para sustentabilidade.

O aplicativo tem sido utilizado por muitas pessoas sem deficiência, que vêem a possibilidade de avaliar locais como uma forma de ajudar a construir um mundo mais acessível para todos.

Desenvolvimento mobile multiplataforma: conclusão

Não existe bala de prata que resolva todos os desafios de um projeto de software. Cada uma das tecnologias aqui apresentadas tem suas vantagens e desvantagens, e a melhor escolha depende muito do contexto de cada projeto e empresa. Em alguns casos, o fator determinante pode ser a linguagem de programação favorita da equipe de desenvolvimento. Em outros, pode ser a necessidade de implementar uma interface gráfica rica e atraente. E podem ainda existir casos em que é desejada a maior qualidade possível, sem restrições de tempo ou dinheiro. Há muitas variáveis a se considerar.

De um ponto de vista puramente técnico, os aplicativos nativos ainda são superiores. Porém, devido à evolução contínua das plataformas concorrentes, essa vantagem está rapidamente diminuindo. Casos como o do Guiaderodas mostram que já é possível construir aplicativos de sucesso com tecnologias multiplataforma, diminuindo o custo e esforço dos projetos sem abrir mão da qualidade final.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Newsletter

Insights de tecnologia para você!

Não compartilharemos seu e-mail com terceiros e também prometemos não enviar spams. Ao informar seu e-mail, você concorda com nossa Política de Privacidade.

Conteúdos relacionados

Veja nesse artigo como incluir a Inteligência Artificial no seu planejamento estratégico de TI para que ele seja adap...
Veja nesse artigo como reskilling e upskilling são fundamentais na área de TI para nos adaptarmos a era da Inteligênc...
Veja nesse artigo quando usar microsserviços, como se preparar para obter os benefícios dessa arquitetura no seu sist...