terça-feira, 2 de maio de 2017

Introdução ao Cordova

O Apache Cordova é uma framework gratuita e de código aberto para criar apps multiplataformas usando Html 5. Este tipo de aplicação é também chamado de app híbrido.

O Html sempre permitiu criar aplicações multiplataformas tendo navegadores como clientes, mas carecia de ter acesso às funcionalidades nativas do celular (Câmera, acesso aos contatos, GPS) – o Cordova veio preencher esta lacuna. Mais recentemente o Progressive Web Apps também vem atender esta mesma situação, sem necessidade de publicar app em loja.

O Apache Cordova consiste nos seguintes componentes:

  1. Código fonte para um container de aplicação nativo, para cada plataforma móvel suportada;
  2. Conjunto de Apis Core que provê à aplicação web acesso às funcionalidades nativas do dispositivo, que normalmente não são suportadas por aplicações no navegador;
  3. Conjunto de ferramentas para gerenciar
    1. processo de criação de aplicação
    2. o ciclo de vidas de plugins
    3. construir aplicações nativas (com o uso das SDKs nativas)
    4. testar aplicações em emuladores e simuladores

A aplicação nativa do Cordova contém um Web View (componente Nativo que permite navegar em páginas). Quando a aplicação é iniciada, ela abre a página inicial (html) e segue o fluxo em um navegador padrão, podendo carregar mais recursos (javascript, imagens, json) e modificar a página dinamicamente.

Vantagens do Cordova

  1. Fácil de aprender, se você for um desenvolvedor web poderá utilizar seu conhecimento para gerar um app
  2. Acesso às funcionalidades nativas
  3. Gratuito
  4. Código aberto
  5. Grande comunidade, com mais de 50.000 perguntas feitas no stackflow http://stackoverflow.com/tags/cordova/info
  6. Escreve uma vez e pode fazer múltiplas distribuições

Desvantagens

  1. Documentação pobre
  2. Mais lento que o nativo
  3. Precisa usar outra framework para os componentes (Ionic etc), já que o Cordova é apenas um Wrapper
  4. Bugs no plugin
  5. Nem todos dispositivos são iguais, e o acesso as funcionalidades do celular pode ser diferente


 

Qual a Diferença de Cordova e Phonegap?

Phonegap é o nome do projeto original, criado pela startup Nitobi por volta de 2009. Em 2011 a empresa foi comprada pela Adobe e o o código aberto do que veio a se tornar o Cordova foi doado ao Apache Foundation.

Hoje o Phonegap é uma distribuição de Cordova mantida pela Adobe.

Como funciona o Cordova?

A interface do Cordova é um web view (componente que permite navegação). A compilação do Cordova apenas pega o Html, CSS e Javascript e disponibiliza juntamente com a App, como recursos normais acessíveis por qualquer navegador.

Funcionalidade Nativa do Dispositivo

O acesso a funcionalidades nativas dos dispositivos é feito por plugins, que disponibilizam uma API para o Javascript. Estes plugins são escritos em códigos nativos, e por isso é necessário ter instalado o SDK das diferentes plataforms que você pretende distribuir.
Há plugins oficiais da comunidade (que tem o prefixo cordova-plugin) e os não oficiais.

O que é possível construir com o Cordova?

Praticamente qualquer tipo de aplicação, mas o Cordova é melhor em buscar dados no servidor, mostrar para o usuário e reagir a entrada de informações.
Também é possível criar apps com base de dados local, como o LokiJS

Limitações

Desempenho

Como o acesso às funcionalidades nativas dependem de plugins, não é interessante criar aplicativos que dependem exclusivamente de CPU e GPU

Disponibilidade de Plugins

Se algum plugin para uma funcionalidade não estiver disponível, você precisará de cria-lo ou esperar alguém fazê-lo.

Web View

O Web view é uma funcionalidade específica de cada plataforma, e por isso pode ter comportamento diferente.
Se necessário é possível utilizar o CrossWalk para ter um web view customizado.

Formas de desenvolvimento

Cross-platform (CLI) workflow: mais indicado se você deseja criar apps multiplataformas.
A linha de comando copia os arquivos necessários para cada plataformas nos subdiretórios corretos e as configurações necessárias, abstraindo os scripts shell de baixo nível.

Platform-centered workflow: quando estiver focando em uma única plataforma e precisa modificar baixo nível. Você poderá misturar componentes nativos com componentes Cordova baseado na Web.

Ao mudar a forma de desenvolvimento do Cross-Plataform (CLI) para a opção específica é um caminho sem volta.

Compilação

É possível fazer o build da aplicação local ou no Phonegap Build Service, que gera os binários para você sem precisar tem o específico de cada plataforma – como no caso do IOS que demanda um Mac.

Referências para o Post

An Introduction to Cordova: Basics por Wernher-Bel Ancheta em Janeiro de 2016

Introduction to Apache Cordova por John M. Wargo em Julho de 2014 com 8 páginas de informações

Curso Building an App With Cordova por Reginald Dawson de Novembro de 2015 com duas aulas iniciais gratuitas e o vídeo abaixo, que mostra mais um pouco sobre configuração de ambiente, criação do Html para o Cordova e resultado para o emulador:

Curso online de Cordova & PhoneGap: Apps mobile com HTML, CSS e JS por Sérgio Lopes com a primeira aula disponível gratuitamente

Curso Multiplatform Mobile App Development with Web Technologies no Coursera