Interoperabilidad con Java usando package:jnigen
Para usar Java en tu programa Dart, usa package:jnigen.
Las aplicaciones móviles, de línea de comandos y de servidor de Dart
que se ejecutan en la plataforma nativa de Dart (Dart Native platform), en
Android, Windows, macOS y Linux pueden usar package:jni
y package:jnigen
para llamar a las APIs de Java y Kotlin.
package:jni permite que el código Dart interactúe
con Java a través de JNI.
Sin embargo, hacer esto implica mucho código repetitivo (boilerplate),
por lo que puedes usar package:jnigen para generar automáticamente
los enlaces (bindings) de Dart para una API de Java determinada.
Puedes compilar Kotlin a bytecode de Java, lo que permite a package:jnigen
generar enlaces también para Kotlin.
Ejemplo de Java simple
#Esta guía te guía a través de un ejemplo
que utiliza package:jnigen para generar enlaces para una clase simple.
Prerrequisitos
#- JDK
Configura jnigen
#
Primero, agrega package:jni como dependencia y
package:jnigen como una dev dependency (dependencia de desarrollo).
dart pub add jni dev:jnigen
A continuación, crea un archivo de nivel superior llamado jnigen.yaml.
Este archivo contiene la configuración para generar los enlaces.
output:
dart:
path: lib/example.dart
structure: single_file
source_path:
- 'java/'
classes:
- 'dev.dart.Example'
path especifica la ruta para los enlaces de dart generados.
source_path especifica la ruta del archivo fuente de Java para el cual
deseas generar enlaces,
y classes especifica la clase Java.
java/dev/dart/Example.java contiene una clase muy simple, la cual
tiene un método estático público llamado sum:
package dev.dart;
public class Example {
public static int sum(int a, int b) {
return a + b;
}
}
Genera los enlaces de Dart
#Para generar los enlaces (bindings) de Dart, ejecuta jnigen y
especifica el archivo de configuración utilizando la opción --config:
dart run jnigen --config jnigen.yaml
En este ejemplo, esto genera
lib/example.dart, tal
como especificaste en jnigen.yaml.
Este archivo contiene una clase llamada Example,
la cual tiene un método estático llamado sum,
exactamente como el archivo de Java.
Usa los enlaces
#Ahora estás listo para cargar e interactuar con la librería generada.
La aplicación de ejemplo, bin/sum.dart, recibe
dos números como argumentos e imprime su suma.
Usar el método Example.sum es idéntico a Java.
// a and b are integer arguments
print(Example.sum(a, b));
Ejecuta el ejemplo
#Antes de ejecutar el ejemplo,
debes compilar la librería dinámica para jni.
Las fuentes de Java también deben compilarse. Para hacerlo, ejecuta:
dart run jni:setup
javac java/dev/dart/Example.java
Ahora puedes ejecutar el ejemplo:
dart run jnigen_example:sum 17 25
¡Lo cual imprime 42!
Más ejemplos
#A continuación se muestran algunos ejemplos más completos del uso de package:jnigen:
| Example | Description |
|---|---|
| in_app_java | Muestra cómo incluir código Java personalizado en una aplicación Flutter y llamarlo usando
jnigen. |
| pdfbox_plugin | Ejemplo de un plugin de Flutter que proporciona enlaces para la librería Apache PDFBox. |
| notification_plugin | Ejemplo de un plugin de Flutter reutilizable con código Java personalizado que utiliza librerías de Android. |
A menos que se indique lo contrario, la documentación en este sitio refleja Dart 3.12.2. Página actualizada por última vez el 2025-09-15. Ver fuente oreportar un problema.