1 - Adicionar ao projeto

Configure Maven, dependências Gradle, permissões Android, extractNativeLibs e desugaring para adicionar o Plugin SmartPOS ao app Android.

Configure o projeto Android para baixar o Plugin SmartPOS via Maven, adicionar as dependências corretas e declarar as permissões exigidas pelo SDK.

Configure as dependências e permissões antes de inicializar o plugin. Falhas nessa etapa podem impedir build, ativação, leitura de cartão ou execução de fluxos transacionais.

Pré-requisitos

Antes de editar o projeto Android:

    1. Prepare o ambiente em Configuração do ambiente.

    2. Confirme o fabricante e modelo do terminal em Requisitos dos terminais.

    3. Baixe o app de exemplo para consultar uma implementação funcional.

    4. Gere uma GitHub personal access token (PAT) com permissão para ler e obter pacotes/artefatos de          repositórios públicos.


1. Configure o Maven da Zoop

O download das dependências é realizado via Maven. No arquivo build.gradle(.kts) do projeto, adicione o repositório abaixo:

allprojects \{
    repositories \{
        google()
        mavenCentral()
        mavenLocal()
        maven \{
            url = uri("https://maven.pkg.github.com/getzoop/zoop-package-public")

            credentials {
                username = "MyCompanyGH"    // Seu usuário do GitHub.
                password = "github_pat_..." // Sua PAT do GitHub.
            }
        \}
    \}
\}

A GitHub PAT usada deve possuir, no mínimo, permissão para ler e obter pacotes/artefatos de repositórios públicos.

Caso tenha dúvidas sobre a GitHub PAT, consulte o repositório público da Zoop. O README contém um guia para gerar uma GitHub PAT e definir as permissões necessárias.


2. Adicione a dependência do Plugin SmartPOS

Adicione a dependência conforme o modelo de SmartPOS suportado pelo seu projeto.

Substitua X.Y.Z pela versão desejada.

dependencies {
    implementation("br.zoop.pos.plugin:smartpos-gertec-gpos720:X.Y.Z") // Para a Gertec GPOS720
    implementation("br.zoop.pos.plugin:smartpos-pax-a910:X.Y.Z")       // Para a Pax A910/A910S
}

A versão mais recente documentada é a 1.12.16:

dependencies {
    implementation("br.zoop.pos.plugin:smartpos-gertec-gpos720:1.12.16")
    implementation("br.zoop.pos.plugin:smartpos-pax-a910:1.12.16")
}

Se o seu app atende apenas um fabricante, adicione somente a dependência do terminal correspondente.


3. Configure dependências auxiliares

No arquivo build.gradle(.kts) do módulo da aplicação, adicione as configurações e dependências abaixo:

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging = true
        }
    }
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-reflect:1.9.0")
    implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.3.0")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
    implementation("com.squareup.okhttp:okhttp:2.5.0")
    implementation("com.squareup.okhttp3:okhttp:4.10.0")
}

Configure extractNativeLibs

No AndroidManifest.xml, marque android:extractNativeLibs="true" na tag da aplicação:

<application
    android:extractNativeLibs="true">
    <!-- ... -->
</application>

4. Configure desugaring para APIs abaixo de 26

Se você usa dispositivos Android com API inferior a 26, use Android Gradle Plugin 4.0 ou superior e habilite core library desugaring (suporte para APIs Java mais recentes em versões antigas do Android).

android \{
    defaultConfig {
        // Required when setting minSdkVersion to 20 or lower
        multiDexEnabled = true
    }

    compileOptions \{
        // Flag to enable support for the new language APIs

        // For AGP 4.1+
        isCoreLibraryDesugaringEnabled = true
        // For AGP 4.0
        // coreLibraryDesugaringEnabled = true

        // Sets Java compatibility to Java 8
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    \}
\}

dependencies {
    // For AGP 7.4+
    coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.3")
    // For AGP 7.3
    // coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.2.3")
    // For AGP 4.0 to 7.2
    // coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.9")
}

5. Declare as permissões Android

Adicione as permissões abaixo no AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Algumas permissões precisam de aprovação do usuário, como ACCESS_FINE_LOCATION e READ_PHONE_STATE. Consulte a documentação oficial do Android para detalhes.

Solicite permissões em tempo de execução antes de inicializar o plugin. Se o usuário negar permissões necessárias, exiba uma orientação clara e interrompa o fluxo dependente da permissão.

Exemplo de solicitação em tempo de execução

Adicione a solicitação no Activity antes da inicialização do plugin:

class MainActivity : AppCompatActivity() \{
  private val requestReadPhoneState =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
      if (granted) {
        initPlugin()
      } else {
        showPermissionRequiredDialog()
      }
    }

  override fun onCreate(savedInstanceState: Bundle?) \{
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    if (ContextCompat.checkSelfPermission(
          this, Manifest.permission.READ_PHONE_STATE
        ) == PackageManager.PERMISSION_GRANTED) {
      initPlugin()
    } else {
      requestReadPhoneState.launch(Manifest.permission.READ_PHONE_STATE)
    }
  \}
\}

Checklist de configuração

Antes de seguir para ativação e inicialização, confirme:

  • O repositório Maven da Zoop foi adicionado.
  • A GitHub PAT possui permissão para ler pacotes públicos.
  • A dependência do fabricante correto foi adicionada.
  • As dependências auxiliares foram configuradas.
  • useLegacyPackaging = true foi configurado para jniLibs.
  • android:extractNativeLibs="true" foi definido no manifest.
  • O desugaring foi habilitado quando necessário.
  • As permissões Android foram declaradas no manifest.
  • Permissões sensíveis são solicitadas em tempo de execução.

Próximo passo

Depois de configurar o projeto, consulte Deploy SmartPOS para compilar e instalar o app em dispositivos de debug ou produção.


Did this page help you?