jni 0.12.2 copy "jni: ^0.12.2" to clipboard
jni: ^0.12.2 copied to clipboard

A library to access JNI from Dart and Flutter that acts as a support library for package:jnigen.

Build Status Coverage Status pub package package publisher

jni #

This is a support library to access JNI from Dart / Flutter code. This provides the common infrastructure to bindings generated by jnigen, as well as some utility methods.

This library contains:

  • Functions to access the JNIEnv and JavaVM variables from JNI, and wrapper functions to those provided by JNI. JNIEnv is exposed via GlobalJniEnv type which provides a thin abstraction over JNIEnv, so that it can be used from multiple threads.
  • Functions to spawn a JVM on desktop platforms (Jni.spawn).
  • Some Android-specific helpers (get application context and current activity references).
  • JObject class, which provides base class for classes generated by jnigen.
  • Commonly used Java classes like JList, JMap, JInteger, ...

Apart from being the base library for code generated by jnigen this can also be used for one-off uses of the JNI and debugging. To generate type-safe bindings from Java libraries, use jnigen.

Documentation #

The test/ directory contains files with comments explaining the basics of this module, and the example/ directory contains a flutter example which also touches some Android-specifics.

Using this library assumes some familiarity with JNI - it's threading model and object references, among other things.

Migrating to 0.8.0 #

Check the changelog.

The API for standalone use of package:jni (without package:jnigen) has changed to use JClass.forName for finding classes. Find the methods and fields by accessing them from the retrieved JClass. For example find an instance method with a name and a signature using jClass.instanceMethodId. Then you can call the resulting JInstanceMethodId to call the instance method.

36
likes
150
pub points
89%
popularity

Publisher

verified publisherlabs.dart.dev

A library to access JNI from Dart and Flutter that acts as a support library for package:jnigen.

Repository (GitHub)
View/report issues
Contributing

Topics

#interop #ffi #java #kotlin #jni

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

args, ffi, meta, package_config, path, plugin_platform_interface

More

Packages that depend on jni