sdk

Flutter: Stamps y Visage SDK Android en Flutter

Descripción

Guía para integrar el Android Stamps SDK y Visage SDK de JAAK en un proyecto Flutter usando Platform Channels para comunicación nativa.

Prerequisitos

  • Flutter 3.x o superior
  • JDK 17
  • Android Studio configurado
  • Dispositivo Android físico (los SDKs no funcionan bien en emuladores)

Versiones Requeridas

EspecificaciónVersión
Kotlin1.9.22
Hilt2.46
JavaVERSION_17
minSdk24
compileSdk35
Stamps SDK1.0.0.beta
Visage SDK1.0.0.beta

Pasos de Configuración

1. Repositorios Maven

Agregar a android/build.gradle.kts:

  • Google y Maven Central
  • JitPack
  • JAAK Platform Maven: https://us-maven.pkg.dev/jaak-platform/jaak-android

2. Configuración de Gradle

Configurar plugins en settings.gradle.kts y app/build.gradle.kts con configuración apropiada de Hilt y Kotlin.

3. Dependencias

  • Librerías AndroidX Core
  • Hilt para inyección de dependencias (obligatorio)
  • SDKs de JAAK
  • Google ML Kit y CameraX
  • Guava

4. Permisos en AndroidManifest

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5. Actividades Nativas

// MyApplication.kt
@HiltAndroidApp
class MyApplication : Application()

// StampsActivity.kt
@AndroidEntryPoint
class StampsActivity : AppCompatActivity(), StampsListener { ... }

// VisageActivity.kt
@AndroidEntryPoint
class VisageActivity : AppCompatActivity(), VisageListener { ... }

6. Platform Channels

// MainActivity.kt - Establece canales de comunicación Flutter-Android
class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "jaak/stamps")
            .setMethodCallHandler { call, result ->
                if (call.method == "startStampsCapture") {
                    // Iniciar StampsActivity
                }
            }
        // Similar para Visage
    }
}

7. Servicios Dart

class StampsService {
    static const platform = MethodChannel('jaak/stamps');

    Future<StampsResult> startCapture() async {
        final result = await platform.invokeMethod('startStampsCapture');
        return StampsResult.fromMap(result);
    }
}

Notas Críticas

Hilt es OBLIGATORIO: Los SDKs de Stamps y Visage requieren Hilt para inyección de dependencias.

  • La consistencia de versiones previene conflictos
  • Se requieren dispositivos físicos
  • Todas las Activities necesitan la anotación @AndroidEntryPoint

Problemas Comunes

ProblemaSolución
@HiltAndroidApp faltanteCausa fallos de inicialización de Hilt
Configuración incorrecta de repositoriosBloquea descarga de SDKs
Emuladores sin soporte de cámaraUsar dispositivo físico
Permisos faltantesPreviene ejecución del SDK

Lista de Verificación de Integración

  • ✓ Versiones de Kotlin/Hilt/Java coinciden
  • ✓ Repositorios configurados correctamente
  • ✓ Dependencias resueltas
  • ✓ Permisos declarados apropiadamente
  • ✓ Activities anotadas correctamente
  • ✓ Platform Channels registrados completamente
  • ✓ FileProvider configurado apropiadamente