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
extractNativeLibsNo 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")
}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'
}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 = truefoi configurado parajniLibs.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.
Updated 9 days ago
