Interoperabilidade Java usando package:jnigen
Para usar Java no seu programa Dart, use package:jnigen.
Aplicações Dart mobile, de linha de comando e servidor
executando na plataforma Dart Native, no
Android, Windows, macOS, e Linux podem usar package:jni
e package:jnigen
para chamar APIs Java e Kotlin.
package:jni permite que código Dart interaja
com Java através de JNI.
No entanto, fazer isso envolve muito código boilerplate,
então você pode usar package:jnigen para gerar automaticamente
os bindings Dart para uma determinada API Java.
Você pode compilar Kotlin para bytecode Java, permitindo que package:jnigen
gere bindings para Kotlin também.
Exemplo simples de Java
#
Este guia o orienta através de um exemplo
que usa package:jnigen para gerar bindings para uma classe simples.
Pré-requisitos
#- JDK
Configurar jnigen
#
Primeiro, adicione package:jni como uma dependência e
package:jnigen como uma dev dependency.
dart pub add jni dev:jnigen
Em seguida, crie um arquivo de nível superior chamado jnigen.yaml.
Este arquivo contém a configuração para gerar os bindings.
output:
dart:
path: lib/example.dart
structure: single_file
source_path:
- 'java/'
classes:
- 'dev.dart.Example'
path especifica o caminho para os bindings dart gerados.
source_path especifica o caminho do arquivo fonte Java para o qual
você deseja gerar bindings,
e classes especifica a classe Java.
java/dev/dart/Example.java contém uma classe muito simples, que
tem um método static público chamado sum:
package dev.dart;
public class Example {
public static int sum(int a, int b) {
return a + b;
}
}
Gerar os bindings Dart
#
Para gerar os bindings Dart, execute jnigen e
especifique o arquivo de configuração usando a opção --config:
dart run jnigen --config jnigen.yaml
Neste exemplo, isso gera
lib/example.dart, exatamente
como você especificou em jnigen.yaml.
Este arquivo contém uma classe chamada Example,
que tem um método static chamado sum,
assim como o arquivo Java.
Usar os bindings
#
Agora você está pronto para carregar e interagir com a biblioteca gerada.
A aplicação de exemplo, bin/sum.dart, recebe
dois números como argumentos e imprime sua soma.
Usar o método Example.sum é idêntico a Java.
// a and b are integer arguments
print(Example.sum(a, b));
Executar o exemplo
#
Antes de executar o exemplo,
você deve compilar a biblioteca dinâmica para jni.
Os fontes Java também devem ser compilados. Para isso, execute:
dart run jni:setup
javac java/dev/dart/Example.java
Agora você pode executar o exemplo:
dart run jnigen_example:sum 17 25
Que produz 42!
Mais exemplos
#A seguir estão alguns exemplos mais abrangentes de uso de package:jnigen:
| Exemplo | Descrição |
|---|---|
| in_app_java |
Demonstra como incluir código Java customizado em uma aplicação Flutter e chamá-lo usando
jnigen
.
|
| pdfbox_plugin | Exemplo de um plugin Flutter que fornece bindings para a biblioteca Apache PDFBox . |
| notification_plugin | Exemplo de um plugin Flutter reutilizável com código Java customizado que usa bibliotecas Android. |
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Página atualizada pela última vez em 2026-11-12. Ver código-fonte ou relatar um problema.
Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.