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:
GlobalJniEnv type which provides a thin abstraction over JNIEnv, so that it can be used from multiple threads.Jni.spawn).JObject class, which provides base class for classes generated by jnigen.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.
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.
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.