> ## 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

> Como instalar e configurar o Liveness Hub SDK em projetos Android

## Permissões Necessárias

O SDK requer as seguintes permissões no `AndroidManifest.xml`:

```xml theme={"theme":"catppuccin-latte"}
<!-- Obrigatórias -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- Camera feature declaration -->
<uses-feature android:name="android.hardware.camera" android:required="true" />
```

<Info>
  O SDK solicita automaticamente a permissão de câmera quando necessário. Se o
  usuário negar a permissão, o SDK exibirá um diálogo oferecendo opções para
  tentar novamente ou abrir as configurações do dispositivo.
</Info>

## Instalação

<Steps>
  <Step title="Adicionar o Arquivo AAR">
    Copie o arquivo `liveness-hub-sdk-[version]-release.aar` para a pasta `libs` do seu módulo `app`:

    ```
    seu-projeto/
      app/
        libs/
          liveness-hub-sdk-[version]-release.aar
        build.gradle.kts
    ```
  </Step>

  <Step title="Configurar o build.gradle.kts">
    Adicione as seguintes configurações no arquivo `app/build.gradle.kts`:

    ```kotlin theme={"theme":"catppuccin-latte"}
    android {
        namespace = "com.example.myapp"
        compileSdk = 36

        defaultConfig {
            applicationId = "com.example.myapp"
            minSdk = 24
            targetSdk = 36

            // Required for the SDK
            multiDexEnabled = true
        }

        compileOptions {
            sourceCompatibility = JavaVersion.VERSION_17
            targetCompatibility = JavaVersion.VERSION_17
        }

        kotlinOptions {
            jvmTarget = "17"
        }
    }

    dependencies {
        // ========================================
        // Liveness Hub SDK
        // ========================================
        implementation(files("libs/liveness-hub-sdk-[version]-release.aar"))

        // ========================================
        // Dependências Obrigatórias
        // ========================================

        // Koin - Injeção de Dependências
        implementation("io.insert-koin:koin-android:4.0.1")
        implementation("io.insert-koin:koin-core:4.0.1")

        // AndroidX Core
        implementation("androidx.core:core-ktx:1.17.0")
        implementation("androidx.appcompat:appcompat:1.7.1")
        implementation("androidx.activity:activity:1.8.0")
        implementation("androidx.constraintlayout:constraintlayout:2.2.1")
        implementation("com.google.android.material:material:1.13.0")
        implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.4")

        // CameraX - Obrigatório para captura facial
        implementation("androidx.camera:camera-core:1.5.0")
        implementation("androidx.camera:camera-camera2:1.5.0")
        implementation("androidx.camera:camera-lifecycle:1.5.0")
        implementation("androidx.camera:camera-view:1.5.0")

        // ML Kit Face Detection - Obrigatório para detecção facial
        implementation("com.google.mlkit:face-detection:16.1.7")

        // MediaPipe Vision - Opcional, para detecção facial aprimorada
        implementation("com.google.mediapipe:tasks-vision:0.10.14")

        // Rede
        implementation("com.squareup.retrofit2:retrofit:3.0.0")
        implementation("com.squareup.okhttp3:okhttp:5.1.0")
        implementation("com.squareup.okhttp3:logging-interceptor:5.1.0")
        implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0")
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")

        // Segurança
        implementation("androidx.security:security-crypto:1.1.0")
    }
    ```
  </Step>

  <Step title="Configurar Repositórios">
    No arquivo `settings.gradle.kts` do projeto, adicione os repositórios necessários:

    ```kotlin theme={"theme":"catppuccin-latte"}
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            google()
            mavenCentral()

            // Repositórios adicionais necessários
            maven { url = uri("https://packagecloud.io/biopassid/dlibwrapper/maven2") }
            maven { url = uri("https://jitpack.io") }
            maven { url = uri("https://maven.fpregistry.io/releases") }
        }
    }
    ```
  </Step>
</Steps>

## Configuração Inicial

O SDK deve ser inicializado uma única vez na classe `Application` da sua aplicação:

```kotlin theme={"theme":"catppuccin-latte"}
package com.example.myapp

import android.app.Application
import com.valid.entry.LivenessHubSDK
import com.valid.entry.models.LivenessHubConfig

class MyApplication : Application() {

    override fun onCreate() {
        super.onCreate()
        initializeLivenessSDK()
    }

    private fun initializeLivenessSDK() {
        val config = LivenessHubConfig(
            apiBaseUrl = "https://api.yourserver.com",
            apiKey = "your-api-key",
            appName = "YourAppName",
            cek = "your-base64-encoded-cek"
        )

        LivenessHubSDK.init(
            applicationContext = this,
            config = config
        )
    }
}
```

<Warning>
  Sempre inicialize o SDK na classe `Application.onCreate()` para garantir que
  esteja pronto antes de qualquer Activity.
</Warning>

## Parâmetros de Configuração

| Parâmetro      | Tipo                 | Descrição                                  |
| -------------- | -------------------- | ------------------------------------------ |
| `apiBaseUrl`   | String               | URL base da API de liveness                |
| `apiKey`       | String               | Chave de API para autenticação             |
| `appName`      | String               | Nome da aplicação para identificação       |
| `cek`          | String               | Chave CEK codificada em Base64             |
| `localization` | LivenessLocalization | Configuração de idioma e textos (opcional) |

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Implementação" icon="code" href="/plataforma/liveness/hub/sdk/android/implementation">
    Veja como implementar a verificação de liveness
  </Card>

  <Card title="Customização" icon="palette" href="/plataforma/liveness/hub/sdk/android/customization">
    Personalize idiomas, textos e níveis de risco
  </Card>
</CardGroup>
