Configurando o projeto

Configurando o Projeto

O download das dependências é realizado via Maven, como configurado abaixo.

// No arquivo build.gradle(.kts) do projeto, apontar:

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.
            }
        }
    }
}

Adicione a dependência do plugin de acordo com o(s) modelo(s) de SmartPOS suportados pelo seu projeto.

dependencies {
    // Sendo X.Y.Z a versão desejada.
    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
    implementation("br.zoop.pos.plugin:smartpos-tectoy-t4:X.Y.Z")      // Para a Tectoy T4
}
Informação

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

Dica

Caso você tenha dúvidas a respeito da GitHub PAT, acesse a página de nosso repositório público. Já no README, apresentamos um guia para orientá-lo sobre como gerar uma GitHub PAT e quais permissões conceder a ela.

Dependências

Adicione ao arquivo build.gradle(.kts) a nível de módulo:

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")
}

Marque no manifest: android:extractNativeLibs="true".

Informação

Se você estiver utilizando dispositivos Android com API inferior a 26, será necessário usar o plugin do Android Gradle 4.0 ou versão mais recente e habilitar o recurso de core library desugaring.

Kotlin

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")
}

Groovy

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

    compileOptions {
        // Flag to enable support for the new language APIs
        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'
}

Permissões

São necessárias as seguintes permissões:

<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 necessitam de aprovação do usuário, como ACCESS_FINE_LOCATION e READ_PHONE_STATE. Para mais informações, consulte a documentação oficial.

Neste caso, é necessário solicitar as permissões em tempo de execução. Para isso, você pode adicionar o seguinte código no seu 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)
    }
  }
}

Após esse passo, você estará pronto para consumir os serviços do plugin, seguindo para inicialização.