> ## Documentation Index
> Fetch the complete documentation index at: https://docs-platform.services-valid.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Instalação

> Adicione o LivenessIdentySDK a um projeto Android via Maven

Este guia mostra como adicionar o `LivenessIdentySDK` — o pacote que embute o motor **IDENTY Face AI** — ao seu projeto Android.

## Pré-requisitos

Antes de começar, garanta que você tem:

* As credenciais (usuário e token) do repositório Maven da Valid e o domínio desse repositório, fornecidos pela equipe da Valid.
* O **package ID** (`applicationId`) e o **SHA1 do certificado de assinatura** do seu app enviados à equipe da Valid para liberação na licença IDENTY.
* Um projeto Android atendendo aos **Requisitos mínimos** abaixo.

> [!NOTE]
>
> O SDK é distribuído em **duas coordenadas Maven**, ambas publicadas no mesmo repositório da Valid: `liveness-identy-sdk` e `identy-face` (o IDENTY Face AI SDK republicado pela Valid). As duas resolvem com as mesmas credenciais.

## Requisitos mínimos

| Item | Versão mínima |
| - | - |
| `minSdk` | 24 (Android 7.0) |
| `compileSdk` | 36 |
| `targetSdk` | 36 |
| Java toolchain | 11 |
| Versão do `liveness-identy-sdk` | `1.0.0` |
| IDENTY Face AI (`identy-face`) | `7.1.6` |

> [!NOTE]
>
> Atualize sempre as duas coordenadas juntas: cada versão do `liveness-identy-sdk` é publicada com a versão de `identy-face` correspondente, informada nas notas de release.

## Instalação

**1. Configurar as credenciais do repositório**

Adicione as credenciais fornecidas pela Valid ao `~/.gradle/gradle.properties` da sua máquina (nunca ao repositório do projeto):

```properties theme={"theme":"catppuccin-latte"}
vccMobileSdksUsername=<seu-usuário>
vccMobileSdksPassword=<seu-token>
```

Em CI, use as variáveis de ambiente `ORG_GRADLE_PROJECT_vccMobileSdksUsername` e `ORG_GRADLE_PROJECT_vccMobileSdksPassword`.

**2. Configurar repositórios**

No `settings.gradle.kts` do projeto, declare os repositórios necessários para resolver as dependências do SDK:

```kotlin theme={"theme":"catppuccin-latte"}
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()

        // Repositório Maven da Valid — liveness-identy-sdk e identy-face
        maven {
            name = "vccMobileSdks"
            url = uri("https://<domínio-informado-pela-Valid>/maven/")
            credentials(PasswordCredentials::class)
            content { includeGroupByRegex("com\\.vcc\\.vendor\\.identy.*") }
        }

        // Biblioteca de fingerprint — com.shield.android:partner-fraud não está no Maven Central
        maven(url = "https://cashshield-sdk.s3.amazonaws.com/release/")
    }
}
```

**3. Configurar app/build.gradle.kts**

Habilite o *core library desugaring* e declare as duas dependências:

```kotlin theme={"theme":"catppuccin-latte"}
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
}

android {
    compileSdk = 36

    defaultConfig {
        minSdk = 24
        targetSdk = 36
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
        // Obrigatório: o SDK é compilado com core library desugaring
        isCoreLibraryDesugaringEnabled = true
    }

    kotlin { jvmToolchain(11) }

    buildTypes {
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

dependencies {
    // Resolve transitivamente: AndroidX core-ktx/appcompat, Retrofit/OkHttp/
    // kotlinx-serialization, Kotlin Coroutines, Sentry, biblioteca de fingerprint, Volley, BouncyCastle.
    implementation("com.vcc.vendor.identy:liveness-identy-sdk:1.0.0")

    // IDENTY Face AI — segunda coordenada, no mesmo repositório Maven da Valid.
    implementation("com.vcc.vendor.identy.thirdparty:identy-face:7.1.6")

    // Exigido pelo isCoreLibraryDesugaringEnabled acima
    coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
}
```

> [!NOTE]
>
> A coordenada `identy-face` não publica Gradle Module Metadata (`.module`). O Gradle tenta o `.module` primeiro, recebe `404` e usa o `.pom` — esse `404` no log é esperado e inofensivo.

**4. Sincronizar e validar**

Sincronize o Gradle (`File → Sync Project with Gradle Files` no Android Studio). Após o sync, o classpath deve resolver `com.vcc.vendor.identy.sdk.LivenessIdentySDK`.

> [!WARNING]
>
> Mantenha `-dontoptimize` no `proguard-rules.pro` do app consumidor em builds com `isMinifyEnabled = true`. Veja [Solução de problemas — ProGuard / R8](https://docs-platform.services-valid.com.br/plataforma/liveness/identy/sdk/android/troubleshooting.md#proguard-r8) para o detalhamento.

> [!WARNING]
>
> O `liveness-identy-sdk` depende de `org.bouncycastle:bcprov-jdk16:1.46`, versão exigida pelo IDENTY Face AI SDK. Se o seu app já usa outra variante do BouncyCastle (`bcprov-jdk15to18`, `bcprov-jdk18on`), o build falha com `Duplicate class org.bouncycastle...`. Nesse caso, exclua a transitiva do SDK:
>
> ```kotlin theme={"theme":"catppuccin-latte"}
> implementation("com.vcc.vendor.identy:liveness-identy-sdk:1.0.0") {
>     exclude(group = "org.bouncycastle", module = "bcprov-jdk16")
> }
> ```

## Permissões

O AAR declara automaticamente as permissões abaixo via manifest merger — nenhuma declaração manual é necessária no app consumidor:

| Permissão | Motivo |
| - | - |
| `INTERNET` | Requisições ao backend de validação |
| `CAMERA` | Captura biométrica |

A feature `android.hardware.camera` é declarada com `required="false"` para não bloquear distribuição em dispositivos sem câmera traseira.

A permissão de câmera em runtime é **solicitada pelo próprio SDK** no início de cada verificação — seu app não precisa pedi-la antes. Veja [Implementação](https://docs-platform.services-valid.com.br/plataforma/liveness/identy/sdk/android/implementacao.md).

### Manifest merge

Além das permissões, o manifest do SDK é mesclado no seu e afeta o `<application>` do app:

| Entrada do SDK | Efeito no seu app |
| - | - |
| `android:networkSecurityConfig` | Se o seu app já declara `networkSecurityConfig`, o manifest merger acusa conflito. Resolva com `tools:replace="android:networkSecurityConfig"` mantendo a sua configuração — a do SDK apenas habilita Certificate Transparency para os hosts que ele usa. Se o seu app não declara, a configuração do SDK passa a valer para o app. |
| `io.sentry.auto-init = false` | **Desliga a inicialização automática do Sentry do seu app**, se você usa o Sentry Android via auto-init. Inicialize o Sentry do app manualmente (`SentryAndroid.init(...)`) ou sobrescreva o valor com `tools:replace="android:value"`. |
| `io.sentry.proguard-uuid` | Pode conflitar com o UUID gerado pelo plugin Gradle do Sentry no seu app — use `tools:replace="android:value"` mantendo o valor do seu app. |
| `CameraPermissionActivity` | Activity transparente que o SDK usa para pedir a permissão de câmera. Não exige ação. |

## Licença IDENTY

A licença do IDENTY Face AI é empacotada **dentro do AAR** e descoberta pelo SDK em runtime — você não fornece nem configura licença. Ela é vinculada ao **package ID** e ao **SHA1 do certificado de assinatura** do app, por isso envie esses dados à equipe da Valid antes de testar.

> [!WARNING]
>
> Não adicione nenhum arquivo `.lic` aos `assets/` do seu app. O SDK espera exatamente uma licença no APK final; um arquivo a mais faz a captura falhar com `LivenessIdentySDKError.Unknown` ("Mais de um arquivo .lic").

## Próximos passos

> **[Implementação](https://docs-platform.services-valid.com.br/plataforma/liveness/identy/sdk/android/implementacao.md)**
>
> Inicialize o SDK e dispare uma verificação de vivacidade

> **[Solução de problemas](https://docs-platform.services-valid.com.br/plataforma/liveness/identy/sdk/android/troubleshooting.md)**
>
> Erros comuns ao configurar o Gradle e dicas de ProGuard


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.