Inclusão no Projeto

Para utilizar a CliSiTef em aplicações Android, é necessário incluir as seguintes bibliotecas no projeto de construção da aplicação:

  1. clisitef-android.jar no classpath para o processo de compilação.
  2. Bibliotecas nativas (libclisitef.so e demais binários .so), compiladas para cada plataforma suportada, para inclusão no pacote apk.

O núcleo da CliSiTef é a biblioteca nativa libclisitef.so. A Automação a acessa através da componente Java incluída no arquivo ‘clisitef-android.jar’ que essencialmente é composta por uma camada JNI para acesso às funções da libclisitef.so e um módulo de gerenciamento do meio de comunicação com o pinpad (USB, Bluetooth ou interface interna).


Importante: caso os desenvolvedores estejam usando a IDE do Eclipse ou Android Studio, vale ressaltar que as bibliotecas dinâmicas .so devem ficar na pasta correspondente à arquitetura. Além disso, os binários possuem assinatura criptográfica que é validada em tempo de execução. Então elas não podem passar pelo processo de strip, já que isso pode alterar o binário. No Android Studio, é necessário explicitamente desativar o strip definindo a opção android.packagingOptions.doNoStrip no arquivo build.gradle:

android {
...
packagingOptions{
doNotStrip "**/libclisitef.so"
}
}

Lembrando que após a inclusão da opção, é necessário realizar um Sync e um Rebuild no projeto.

A ausência dessa opção (ou equivalente em outra IDE) causará erro de assinatura em tempo de execução com uma mensagem semelhante a:

Erro assinatura modulo (-158), 00000000/00000000: libclisitef.so

A libclisitef.so possui compilações para as seguintes plataformas: armeabi, armeabi-v7a, arm64-v8a, mips, mips64, x86 e x86_64. Os desenvolvedores devem copiar os binários de cada plataforma para a localização correspondente da IDE utilizada. No Eclipse, o .so de cada plataforma deve ser colocado no diretório ./libs/<plataforma>. No Android Studio, o diretório correspondente normalmente se encontra em ./<projeto>/src/main/jniLibs/<plataforma>. Exemplos:

  • Eclipse: binários .so da plataforma armeabi-v7a devem ser copiados para ./libs/armeabi-v7a do projeto.

  • Android Studio: binários .so da plataforma armeabi devem ser copiados para

    ./app/src/main/jniLibs/armeabi (assumindo que o projeto da aplicação seja ‘app’).

Independente da IDE, os binários .so da plataforma <plat> devem estar presentes no diretório ./lib/<plat> do arquivo .apk final.

Já o arquivo ‘clisitef-android.jar’, que é independente de plataforma, deve ser incluído no classpath do projeto.

Acompanha também javadoc do pacote, que pode ser incorporada à ferramenta de desenvolvimento, de forma a facilitar a indicação dos métodos e parâmetros durante seu desenvolvimento.