Cordova — desenvolvendo aplicativos sem tanta complicação
Cordova
O mundo do desenvolvimento para celular surgiu com Apple e Google (depois do Symbian e outros) cada um fazendo o seu. Aí não era tão simples fazer uma coisa única ou ter uma equipe que entendia de Java, Objective-C (depois Kotlin e Swift) e das outras plataformas.
O que o Cordova usa? Mesma coisa que usa para fazer um site, HTML, CSS e JavaScript.
Antigamente surgiu o Phonegap com a seguinte ideia: ok, o interno de cada sistema é diferente, mas todos tem um componente de renderizar conteúdo web, chamado de Webview. Então “eu” usar a webview, será tetra.
Veja, antigamente (não estou dizendo que tais soluções são velhas e ultrapassadas) você tinha outras coisas como o App Accelerator também.
Com o tempo a Adobe comprou o projeto do PhoneGap e passou a o chamar de Cordova. O doou à Apache Fundation e por isto tamém poderá ouvir o termo “Apache Cordova”.
A Adobe tinha o Phonegap Build, uma ferramenta via web que você poderia usar para gerar um aplicativo. Sem precisar ter o Cordova instalado.
O Cordova obviamente não é a única alternativa para desenvolver um app híbrido. O Flutter, o React Native e o Xamarim são alternativas, tendo diferenças conceituais (como a geração de aplicativos nativos através da conversão de código e a linguagem usada, como o Dart para Flutter e a plataforma Microsoft para o Xamarim).
Hoje em dia usar o Cordova é bem simples. E a respeito de um blá blá blá de desempenho, já fiz app comercial usando websocket (client), API Rest (client) e streaming (client) e não tive problemas de desempenho, Claro que não é um jogo 3D de última geração, mas o que quero dizer é que em boa parte dos casos o desempenho não será um problema para ti. Não sou só eu que estou dizendo. Se na Google Play o aplicativo tem mais de 4 estrelas, bem, ruim não está. Não vou colocar um print aqui porque quero evitar algum problema que eu não prevejo, depois aparece a notificação de um processo…
Execute a instalação do Cordova:
$ npm install -g cordova
Crie o projeto:
$ cordova new hello-world
Entre no diretório criado.
$ cd hello-world
O Cordova entrega o resultado para iOS, Android etc. As plataformas disponíveis são vistas executando o comando abaixo na raiz do diretório do projeto
$ cordova platform
Ok, mas não é porque a plataforma está disponível que ela é instalada por padrão. Não é. Vou adicionar uma plataforma com o comando abaixo para ver o resultado no navegador:
$ cordova platform add browser
Execute o comando abaixo, para abrir um navegador:
$ cordova run browser
Ok, mas eu quero desenvolver para uma plataforma específica. Ok, adicione a plataforma, por exemplo com os comandos abaixo:
$ cordova platform add android
$ cordova platform add ios
E se eu quiser personalizar algo para a plataforma? Pode sim, veja a documentação abaixo:
Quero um exemplo de alteração! Ok, edite o www/index.html. Tendo conhecimento de “web” já entenderá. Para testar só coloquei o “wow” no final da linha abaixo:
<p class=”event received”>Device is Ready wow</p>
Rode novamente o comando abaixo e verá a diferença:
$ cordova run browser
Ok, mas não dá para acessar coisas internas do dispositivo, fazer um “toast” nativo do Android por exemplo… Dá sim, o Cordova resolve isto através de plugins. O plugin faz o lado do “código da plataforma” e te fornece uma forma de você acionar via JavaScript. Ninja, né? Veja um exemplo de plugin abaixo:
Veja a documentação da parte de plugins para detalhes por favor:
https://cordova.apache.org/docs/en/11.x/guide/cli/
Tem detalhes que são específicos de cada plataforma e terá que personalizar. Em um aplicativo simples provavelmente não terá que fazer isto.
Uma coisa que aprendi naquele App que falei acima: em Androids abaixo de 4, a webview não é tão bacana. Como eu resolvi? Com o Crosswalk:
https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview
Este projeto não é atualizado mais, não sei o motivo, possivelmente porque não tem mais o que fazer e com o tempo nem será necessário mais.
E como saber quanto da minha base de usuários usa que versão do Android? Parece besta, mas pode usar o Google Analytics para isto :)
Se for me perguntado o que escolher para uma solução de aplicativo híbrido para celular, eu escolherei Cordova, não tenho nada contra nenhuma outra, já fiz aplicativo com Flutter e nativo Java por exemplo, mas Cordova se encaixa mais com minha produtividade.
Bem, é isto :)