========= xMova Android ========= As sessões abaixo visam exemplificar como fazer uso da plataforma xMova Android, demonstrando quais recursos estão disponíveis e como utilizá-los. Para desenvolver um aplicativo nesta plataforma deve-se configurar três partes do aplicativo APP, MODEL e LANG. Abaixo pode-se acessar a sessão relacionada a configuração de cada parte. -------- `APP `_ -------- -------- `MODEL `_ -------- -------- `LANG `_ -------- -------- `INSTRUÇÕES `_ -------- -------- `FUNCIONALIDADES `_ -------- -------- `TIME ZONES `_ -------- -------- `Comandos de Socket `_ -------- .. danger:: Guarde esses pontos com sua própria vida. Cada versão publicada em produção ``é um pacote único``, com a mesma versão do server, center e mobile. Uma versão do mobile 1.5 deve obrigatoriamente rodar no center 1.5 e no server 1.5. Quando fizer uma alteração em um fluxo de versão antiga, por exemplo 1.4, ``não deve-se atualizar a plataforma mobile`` (apk) para a versão mais nova, e sim manter a versão antiga, para que os usuários não sejam forçados a atualizarem o APK nos celulares. Quando for duplicar e compilar um fluxo em uma versão antiga, deve-se usar o xmova-center na versão antiga, ``a mesma versão que o APK estiver``. Se usar o xmova-center com uma versão nova para compilar um fluxo de versão antiga o fluxo ficará incompatível com os celulares em campo e os celulares em campo irão parar de funcionar. Só deve-se duplicar/compilar um fluxo antigo numa versão center nova, ``quando realmente se deseja que os celulares em campo recebam o apk atualizado`` pelo fato de o antigo não ter uma nova funcionalidade. Sempre que for disponibilizar uma versão da plataforma mobile (apk) em um fluxo, no xmova-center podem ter várias versões de build de plataforma. Use ``sempre a última versão`` de build. Exemplo, se estiverem disponíveis 1.6.0, 1.6.1 e 1.6.8, disponibilize a 1.6.8. ======= Suporte ======= Abaixo você encontrará mais informações para dar suporte a um aplicativo xMova. ------------------ Roteiros de Testes ------------------ Teste MultiFluxos ================= * Sempre que for testar qualquer versão nova de APK, deve-se testar a funcionalidade de múltiplos fluxos. * Baixar aplicativo em uma versão de plataforma e tentar instalar o fluxo de outra versão de plataforma (Não deve permitir). * Instalar um aplicativo e tentar instalar outro com versão de plataforma diferente (Não deve permitir). * Verificar se a limpeza de fluxo não está corrompendo os outros. Instalar diferentes fluxos e limpar um deles, para verificar se somente o fluxo ativo é removido. Fazer isso com todos os fluxos instalados. Após cada remoção usar os fluxos que ficaram, criar apontamentos, fazer sync, com um boletim aberto sair do app (Menu Sair) e entrar novamente, etc. * Iniciar a instalação de um novo fluxo e desistir antes de concluir a instalação, clicando no botão voltar do device, para verificar na tela main se volta ao último fluxo ativo e se remove a instalação do fluxo que estava sendo instalado. * Testar o envio/recebimento de mensagens em diferentes fluxos e em fluxos que nao estejam ativos. * Realizar apontamentos offline nos fluxos instalados, depois voltar o aplicativo para online e verificar no painel se todos os apontamentos de todos os fluxos estão chegando. * Alterar a plataforma de um dos aplicativos instalados para uma plataforma diferente dos demais e tentar atualizar o aplicativo (Não deve permitir). * Alterar a plataforma de todos os aplicativos instalados para a mesma plataforma e atualizar o aplicativo. Teste de Performance ==================== * Sempre que liberar um fluxo, deve-se testar a performance do fluxo com muitos apontamentos. * Criar 50 Boletins, com 50 apontamentos cada um. A performance não deve ser afetada. ------------ Log Realtime ------------ É possível acompanhar os logs de comunicação do mobile com o servidor em tempo real, acessando o painel xMova no xmova-server. Log do ambiente Produção ======================== http://xmova-server.simova.ws/server1_59/xmovaLogView.html Log do ambiente Dev ======================== http://xmova-server-dev.simova.ws/x/xmovaLogView.html Envio de Log e Banco de Dados ao Suporte ======================= Para enviar os logs e o banco de dados do celular, é necessário acessar o menu do aplicativo e selecionar a opção ``Enviar log ao suporte``. Esses dados são recebidos no servidor linux, na pasta /usr/share/tomcat7/data O acesso a esse servidor é restrito ao pessoal do departamento do xMova, e os arquivos devem ser requisitados a eles. O nome arquivo recebido possui a seguinte composição: ``Data/hora do envio do arquivo`` + ``UID do celular que enviou`` + ``extensão .db`` Exemplo: 2014-09-03_10-59-27_355445058115260.db Instalar o Banco de Dados em outro celular ========================================== Para instalar o banco de dados em outro celular, é necessário conectá-lo ao computador e copiar o arquivo com extensão .db para a pasta Downloads/xmova Após copiado para a pasta, renomeie o arquivo para ``simova-in.db`` Ao iniciar o aplicativo novamente, abrirá com o banco de dados copiado. Configuração do xmova-server para rodar no cliente ================================================== * Java 7 * Apache Tomcat 7 * commons-lang3-3.1.jar (Deve ser copiado para a pasta de libs do Tomcat) O war deve ser copiado da pasta de distribuições de produção que fica no servidor do Jenkins (ant-dist-prod), de acordo com a versão que está em uso no cliente. No fluxo deve ser colocado o atributo serverUrl com o endereço do server que está no cliente. -------------------------------------------------- Endereços do xMova que devem ser liberados na rede -------------------------------------------------- Para que o aplicativo mobile se comunique com o servidor, os seguintes endereços devem estar liberados na rede para o mobile: * xmova-server.simova.ws:80 * xmova-center.simova.ws:80 * gpg.tw:80 Para o servidor web do painel receber os dados do mobile, deve ser liberado o acesso externo à porta 80 para o DNS ``xmova-server.simova.ws``. O tráfego será sob o protocolo HTTP. .. warning:: Devem ser liberados sempre os hostnames, não apenas os IPs, pois os IPs podem mudar. ------------------------ Protocolo de Comunicação ------------------------ Quando o simova Apps precisa enviar ou receber dados para o servidor de terceiro (BoB-Agro/ConstruMobil), ele envia os dados para o xMovaServer, que então redireciona os dados para o servidor de terceiro. No fluxo define-se a URL do servidor de terceiro para onde o xMovaServer enviará as informações. Se nessa URL for definido o protocolo HTTPS, a comunicação será sobre SSL, se for definido HTTP, será usado comunicação HTTP não segura. Protocolo de Comunicação do xMova Android Nativo ================================================ Mobile - xMovaServer: Comunicação via HTTP pela porta 80, usando formato de dados binário próprio. xMovaServer - Servidor de Terceiro: Comunicação via HTTP pela porta 80, usando formato de dados JSON. Protocolo de Comunicação do xMova Android JavaScript ==================================================== Mobile - xMovaServer: Comunicação via HTTP pela porta 80, usando formato de dados JSON. xMovaServer - Servidor de Terceiro: Comunicação via HTTP pela porta 80, usando formato de dados JSON. ====================== Arquitetura do Projeto ====================== Os fontes são separados em vários projetos eclipse com objetivo de reuso de código entre os projetos, e reuso pela Simova. -------- Projetos -------- xMova Compiler ============== O xMova Compiler é o projeto onde está a lógica de parse e compilação de um modelo de aplicativo xMova (fluxo: app, model e lang). xMova Compiler Shared ===================== Constantes, tipos e classes básicas do projeto, usadas nos projetos JME, Android, Compiler, Server e Center. .. warning:: Por ser usado para o JME deve ser escrito em Java 1.3. xMova Java ========== É o Core do xMova. Possui classes que são usadas pelos projetos Android JME. .. warning:: Por ser usado para o JME deve ser escrito em Java 1.3. xMova Android ============= Projeto do app Android. Estende as classes do xMova Java. xMova JME ========= Projeto do app JME. Estende as classes do xMova Java. xMova Server ============ Projeto web responsável pela comunicação do mobile com servidores de terceiros. Busca informações nos servidores de terceiros e envia aos aplicativos móveis. xMova Center ============ Projeto web centralizador dos fontes do xMova. Toda a compilação é feita nesse ambiente. Armazena os códigos fontes dos fluxos xMova em banco de dados MySql. Simova Basic ============ Biblioteca de classes básicas Java para reuso pela empresa. .. warning:: Por ser usado para o JME deve ser escrito em Java 1.3. Simova Java =========== Biblioteca de classes Java para reuso pela empresa. Simova JavaEE ============= Biblioteca de classes JavaEE para reuso pela empresa. Simova JavaME ============= Biblioteca de classes JavaME para reuso pela empresa. xMova Doc ========= Projeto onde fica este documento que você está lendo. -------- Procedimentos para editar uma versão publicada do XMOVA -------- Caso seja necessário editar uma versão já publicada do XMOVA, é necessário fazer o checkout da versão desejada no SVN, seguindo os passos a seguir. .. warning:: Caso as alterações sejam feitas em uma das classes do Compiler, ou Compiler Shared é necessário replicar a alteração e fazer a publicação do Center, Server e Android. Caso contrário só é necessária a publicação do projeto alterado. .. danger:: As configurações dos projetos estão configuradas para produção, se for realizar testes devem ser alteradas para a configuração de teste. xMova Android ============= Fazer o checkout da versão na tag correspondente: URL SVN: http://192.168.0.20/svn/simova/Projetos/Mobile/xMova/xmova-android/tags Configuração do Projeto: * Faça o checkout do projeto android-support-v7-appcompact, faça o clean/build e certifique-se de que o arquivo "android-support-v7-appcompat.jar" esteja dentro da pasta bin do projeto. * Faça o checkout do projeto android-support-v7-gridlayout, faça o clean/build e certifique-se de que o arquivo "android-support-v7-gridlayout.jar" esteja dentro da pasta bin do projeto. * Faça o checkout do projeto xmova-android Em caso de testes: * Alterar arquivo "/xmova-android/xmova-android/xmova-java.properties" para as configurações de teste. Publicação: * Antes de gerar o apk para publicação é necessário incrementar a versão no arquivo "xmova-android/AndroidManifest.xml" (Deve-se incrementar o version code e o version name). * Usar a chave para assinar o apk (Servidor: 192.168.0.21 - Caminho: D:\\tools\\sign\\android-key). * Para enviar o APK para o servidor de produção, coloque-o na pasta pub do tomcat (Servidor: 192.168.0.21 - Caminho: D:\\tools\\tomcat7\\webapps\\pub) URL para publicação do APK: http://xmova-server.simova.ws/center{Versão*}/upload?v={Verão Completa**} &apk=http://ci.simova.ws/pub/{Nome APK COM a biblioteca de codigo de barras} &apk2=http://ci.simova.ws/pub/{Nome APK SEM a biblioteca de codigo de barras} &apkJs=http://ci.simova.ws/pub/{Nome APK que executa o core em JavaScript} &jar=http://ci.simova.ws/pub/download-jme.png &jad=http://ci.simova.ws/pub/download-jme.png * Quando fizer o upload do apk, deve-se também fazer o upload do core do js com a mesma versão * Para enviar o arquivo do JS SOURCE para o servidor de produção, coloque-o na pasta pub do tomcat (Servidor: 192.168.0.21 - Caminho: D:\\tools\\tomcat7\\webapps\\pub) URL para publicação do JS SOURCE: http://xmova-server.simova.ws/center{Versão*}/uploadjssource?v={Versão Completa**} &jssource=http://ci.simova.ws/pub/{Nome do arquivo do JS SOURCE} *Versão: exemplo (1_32) **Versão completa: exemplo (1.32.48) xMova Center ============= Fazer o checkout da versão na tag correspondente: URL: http://192.168.0.20/svn/simova/Projetos/Mobile/xMova/xmova-center/tags Configuração do projeto: * Faça o checkout do projeto Em caso de testes: * Alterar arquivo "center{Versão}/WebContent/META-INF/context.xml" para usar as configurações de teste. * Alterar arquivo "center{Versão}/src/config.properties" para usar as configurações de teste. Publicação: * Gerar o war atualizado e substituir o arquivo no tomcat de produção. xMova Server ============= Fazer o checkout da versão na tag correspondente: URL: http://192.168.0.20/svn/simova/Projetos/Mobile/xMova/xmova-server/tags Configuração do projeto: * Faça o checkout do projeto Em caso de testes: * Alterar arquivo "server{Versão}/src/config.properties" para usar as configurações de teste. Publicação: * Gerar o war atualizado e substituir o arquivo no tomcat de produção.