Nossa equipe desenvolveu e oferece suporte a um aplicativo móvel corporativo para recebimento de pagamentos na estrutura de um sistema de pagamento para um grande cliente. Agora, ele é usado pelos funcionários dos clientes em dispositivos que executam o sistema operacional Aurora (anteriormente Sailfish Mobile OS RUS) em trinta e sete regiões russas. Neste post, falarei brevemente sobre esse projeto e em mais detalhes sobre o próprio sistema operacional.
Antecedentes
Nossa empresa
NORBIT desenvolveu um sistema de pagamento para um grande cliente. O sistema inclui a parte do servidor e vários clientes: aplicativo de desktop, web e móvel no sistema operacional Android. Inicialmente, o sistema foi implementado em várias regiões da Federação Russa. Em 2016, o cliente decidiu expandir a presença regional e, no momento, o sistema foi implementado e opera com sucesso em 37 regiões.
Em 2017, o cliente decidiu usar os dispositivos em software doméstico e comprou vários milhares de dispositivos INOI R7 com o Aurora OS (Sailfish Mobile OS RUS). Nossa equipe teve a tarefa de criar outro cliente do sistema de pagamento móvel.
Demorou apenas alguns meses para se desenvolver. Foi um desafio interessante, pois todo o trabalho teve que ser organizado do zero. Precisávamos montar uma equipe, criar um processo de desenvolvimento, teste e lançamento regular de novas versões. Vou falar brevemente sobre esses estágios.
Como foi o projeto
Para começar, era necessário entender quais forças implementariam tudo isso. Eu precisava de uma equipe, mas simplesmente não havia especialistas prontos no mercado do Aurora OS.
Aqui devemos prestar homenagem à própria plataforma. O desenvolvimento no sistema operacional Aurora é realizado usando a estrutura Qt. E para escrever aplicativos simples, você pode usar a linguagem declarativa QML, que na maioria dos casos permite não recorrer à programação de baixo nível em C ++. Como resultado, a tarefa se resumiu à busca de desenvolvedores sensatos para o Qt, que, no geral, são suficientes.
Ok, a equipe está formada, precisamos conversar com o restante dos clientes em termos de funcionalidade. Os prazos eram curtos - tivemos apenas alguns meses para atualizar a funcionalidade existente e implementar novos recursos. Além de tudo, além da batalha com a lógica de negócios, uma batalha com a própria plataforma nos aguardava. Era necessário resolver muitas perguntas, mas não tínhamos respostas prontas para elas. Com o stackoverflow, você não copia a solução rapidamente, porque a direção é nova e nós fomos um dos primeiros. Aqui estão apenas alguns deles.
Conectividade Bluetooth com KKM
O projeto exigiu o apoio de caixas registradoras (KKM) da ATOL e Shtrikh. Ambos os fabricantes da KKM produzem produtos com a capacidade de se conectar via Bluetooth. Exemplos de trabalho com Bluetooth podem ser encontrados
no site da Qt .
O "código de barras" fornece o driver para trabalhar com o KKM na forma de código-fonte, que pode ser baixado
do link . Há também um exemplo de projeto de uso do driver.
O driver para ATOL pode ser baixado
do site com as palavras-chave da pesquisa "Drivers de equipamento comercial". Em nosso projeto, usamos a oitava versão do driver.
No início do projeto, havia KKM com suporte de 54 54 e sem. Portanto, era necessário suporte para quatro tipos de caixas registradoras (ATOL / Código de Barras com 54 / sem 54 ).
Trabalhar com grandes atualizações de banco de dados
Todas as manhãs, os funcionários do cliente atualizam informações de referência em suas contrapartes em seus telefones. Como existem muitos contratados (vários milhares, dependendo da região), a atualização dos diretórios levou 1 minuto. Inicialmente, os commits foram feitos após a inserção de cada contraparte. Depois que eles começaram a fazer uma consolidação após inserir todas as informações de ajuda, o tempo para atualizar os diretórios foi reduzido pela metade (uma grande consolidação).
Otimização de criação de aplicativos
No início, foram cometidos “erros das crianças” no projeto - incluindo arquivos de cabeçalho em arquivos de cabeçalho. A transição para a declaração de encaminhamento permitiu reduzir significativamente o tempo de construção do projeto. Além disso, leva muito tempo para criar e instalar um projeto para criar um pacote rpm. Se você selecionar o tipo de instalação “copiar arquivos binários”, a remontagem, a instalação e o início do projeto na depuração ocorrerão em questão de segundos. Além disso, para uma montagem mais rápida no emulador, você pode desativar a montagem de classes para trabalhar com códigos de barras e caixas registradoras. A opção de instalação não-rpm é potencialmente perigosa porque as dependências não são exibidas.
Aplicativo de construção automatizado
Você pode organizar a montagem do aplicativo sem iniciar o ambiente de desenvolvimento. Se você construir a partir do ambiente de desenvolvimento, no console de montagem, poderá ver os comandos em execução. Os mesmos comandos podem ser executados via bash ou batch.
Mas, apesar de todas as dificuldades, concluímos as tarefas definidas pelo cliente. Em 31 de dezembro de 2017, o aplicativo foi lançado com sucesso e os primeiros pagamentos foram aceitos. No momento, o aplicativo é executado em vários milhares de dispositivos móveis executando o Aurora OS.
OS Aurora
Agora vamos falar mais sobre o sistema operacional e seus recursos.
O Aurora OS (anteriormente
Sailfish Mobile OS RUS ) é um sistema operacional confiável para dispositivos móveis (smartphones e tablets). Ele está sendo desenvolvido pela empresa
Open Mobile Platform . O sistema é baseado na
plataforma Sailfish OS e foi projetado para usuários corporativos e corporações governamentais.
Em 2018, a Rostelecom adquiriu 75% da empresa Open Mobile Platform e uma participação de controle no projeto finlandês. Ao mesmo tempo, foi decidido substituir o nome Sailfish Mobile OS Rus pelo sistema operacional Aurora. Isso é mais adequado para o mercado interno e, conforme concebido pelos autores, corresponde aos objetivos do produto e também causa associações positivas na Rússia e no exterior.
A palavra "confiável" significa que uma organização que fornece dispositivos a seus funcionários no Aurora OS tem controle total sobre os próprios dispositivos e os dados que eles usam. A segurança do armazenamento e transmissão de dados é garantida por algoritmos de criptografia de acordo com o GOST e confirmada por
certificados do FSB e FSTEC .
Para gerenciar dispositivos móveis, o produto SF Cloud também está sendo desenvolvido pela Open Mobile Platform. Esta é uma solução de servidor que pode ser implantada no equipamento da organização do cliente e permite monitorar o status dos dispositivos móveis do funcionário a qualquer momento, instalar, atualizar e excluir aplicativos nos dispositivos, gerenciar atualizações do sistema operacional, bloquear o acesso ao dispositivo e excluir dados com segurança (limpe )
Um ciclo completo de desenvolvimento do Aurora OS ocorre na Rússia. Isso lhe permitiu
entrar no Registro Unificado de programas e bancos de dados russos. No momento, este é o único SO móvel com esse status; portanto, a compatibilidade com ele
é um pré-requisito para aplicativos móveis do registro.
Sob o capô, o Aurora OS possui um ambiente compatível com POSIX. Ou seja, é um Linux completo para dispositivos móveis. Por exemplo, diferentemente do Android, imediatamente, existem systemd, D-Bus, ssh e outros serviços e utilitários familiares para distribuições “grandes” em um PC. Ao mesmo tempo, o sistema inclui o componente
libhybris , projetado para usar drivers do ambiente Bionic em sistemas compatíveis com POSIX. Isso
permite que você execute o Aurora OS em dispositivos originalmente projetados para Android. Incluindo o
suporte oficial para o Sony Xperia X e Sony Xperia XA2.
Quase todas as APIs necessárias são fornecidas usando a
estrutura Qt e bibliotecas adicionais baseadas nela, que também são usadas para implementar aplicativos e serviços do sistema.
A licença Qt permite escrever aplicativos abertos e proprietários. No segundo caso, a conformidade com as regras LGPL é um requisito essencial, mas ao usar as bibliotecas Qt em uma base comercial, esse requisito se torna opcional.
O Sailfish SDK
está disponível ao público e também é orientado a Qt. Inclui os seguintes componentes.
O Qt Creator é um IDE desenvolvido pelo projeto Qt e fornece profunda integração e ferramentas para um trabalho conveniente com as bibliotecas Qt. O suporte ao Sailfish Mobile OS RUS é obtido através de um plug-in que configura os kits de compilação apropriados para as arquiteturas ARM e x86 e os controles de compilação e emulação.
O ambiente de construção é um ambiente Linux com um conjunto de
ferramentas e objetivos , empacotados em uma máquina virtual para o VirtualBox. A distribuição neste formato permite que você use as mesmas ferramentas de construção, independentemente do sistema operacional do desenvolvedor - Linux, Windows e macOS são suportados, mas também impõe várias restrições. Por exemplo, os projetos para o Aurora OS precisam ser colocados em determinados diretórios visíveis para a máquina virtual: o diretório inicial do usuário ou um diretório alternativo especificado durante a instalação do SDK.
O emulador é uma máquina virtual para o VirtualBox que inclui uma imagem do sistema operacional Sailfish compilada para x86. De fato, este é um conjunto completo do sistema operacional, que permite verificar muitos aspectos do aplicativo. Mas, ao mesmo tempo, é conveniente usar dispositivos físicos para verificar, por exemplo, o uso de sensores.
Qt QML Live é uma ferramenta que permite "alterar" a interface gráfica do aplicativo em tempo real ao fazer alterações nos arquivos QML do projeto sem precisar reconstruir o pacote de instalação. Essa abordagem pode acelerar significativamente o desenvolvimento da interface do usuário.
Documentação é um conjunto de artigos de referência que abrangem a descrição das APIs fornecidas pelo Qt e os componentes específicos do sistema operacional Aurora: por exemplo, a documentação do Sailfish Silica. A documentação está disponível para leitura separada e no formato de ajuda de contexto chamado para o elemento selecionado no editor de código-fonte.
Para começar a desenvolver aplicativos para o Aurora OS, você pode não apenas estudar a documentação, mas também fazer cursos de treinamento. Há um
curso introdutório público
na plataforma Stepik que descreve os primeiros passos e os principais aspectos do desenvolvimento. Além disso, os funcionários dos parceiros da empresa Open Mobile Platform podem, mediante solicitação em
edu@omprussia.ru, obter acesso a um curso de treinamento mais abrangente, incluindo, incluindo lições sobre o uso de sensores, navegação, multimídia etc.
O resultado do desenvolvimento de aplicativos é o pacote de instalação do rpm. Antes de entrar nos funcionários do dispositivo da empresa cliente, ele precisa seguir as etapas a seguir.
1. Assinado com um certificado de desenvolvedor válido. De fato, esse estágio é parte integrante do conjunto do pacote de instalação, pois não apenas o arquivo rpm é assinado, mas também os arquivos incluídos em sua composição. A disponibilidade permite verificar a origem do pacote de instalação, bem como a integridade de sua estrutura. Para assinar, é necessário obter as ferramentas de geração de chaves e um certificado de desenvolvedor. Para isso, os parceiros da empresa Open Mobile Platform podem enviar as solicitações apropriadas para
dev-support@omprussia.ru .
2. Transfira o pacote de instalação para o administrador do SF Cloud. Dependendo da organização do fluxo de trabalho, esse estágio pode ser implementado de diferentes maneiras. É importante que, como resultado, o pacote seja baixado no repositório SF Cloud e esteja disponível para distribuição nos dispositivos através do painel de controle. Ao mesmo tempo, ao fazer o download para o repositório, não há apenas uma verificação da assinatura do pacote, mas também a correção da estrutura do arquivo rpm, que está sujeita a vários requisitos (devido à padronização do local dos componentes do aplicativo e aos requisitos de segurança). Por exemplo:
- o arquivo de especificação usado para compilar o pacote não deve usar as seções% pre,% post,% preun,% postun,% verifyscript;
- os scripts no arquivo de especificações do pacote de aplicativos não devem modificar ou excluir arquivos existentes;
- o nome do arquivo executável do aplicativo e o início do nome do pacote de aplicativos são iguais e contêm apenas letras minúsculas, números e traços;
- o arquivo executável está localizado no caminho / usr / bin / {nome do projeto};
- O arquivo da área de trabalho está localizado no caminho /usr/share/applications/{project_name►.desktop;
- os ícones estão localizados nos caminhos / usr / share / icons / hicolor / {resolution} / apps / {project name} .png;
- arquivos adicionais usados pelo aplicativo estão localizados no diretório / usr / share / {project name}.

Para automatizar a verificação de tais requisitos, use o script rpm-validator. Uma verificação semelhante está disponível no SDK e pode ser chamada no IDE no centro de controle do Build Engine. É importante esclarecer que as configurações do script do validador de rpm podem ser determinadas pela plataforma de destino e pelos requisitos do cliente. Você pode obter o rpm-validator para compilações certificadas do Aurora OS na "Plataforma Móvel Aberta", mediante solicitação, para
dev-support@omprussia.ru .
3. Distribuição para dispositivos de funcionários por meio do painel de administração SF Cloud. Esta etapa, via de regra, inclui testes técnicos e funcionais em um pequeno grupo de dispositivos. Ao instalar um arquivo rpm em dispositivos com uma compilação certificada do Aurora OS, a assinatura e a estrutura também são verificadas. Os desenvolvedores podem estar envolvidos na correção de erros que ocorrem antes de baixar todos os funcionários para os dispositivos.
O Aurora OS continua sendo o único sistema operacional móvel que atende aos requisitos do FSB e FSTEC.
Estamos prontos nos comentários para discutir os recursos do desenvolvimento de aplicativos móveis no sistema operacional Aurora.
Este artigo foi preparado com o apoio da empresa Open Mobile Platform