| # jni (experimental module) |
| |
| This is a utility library to access JNI from Dart / Flutter code, intended as a supplement for `jnigen` code generator, as well as provide the common base components (such as managing the JVM instance) to the code generated by `jnigen`. |
| |
| 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). |
| |
| * `JniObject` class, which provides base class for classes generated by jnigen. |
| |
| This is intended for one-off / debugging uses of JNI, as well as providing a base library for code generated by jnigen. |
| |
| __To generate type-safe bindings from Java libraries, use `jnigen`.__ |
| |
| ## SDK Note |
| Dart standalone is supported, but due to some current limitations of the `pubspec` format, `dart` command must be from Flutter SDK and not dart SDK. |
| |
| ## Version note |
| This library is at an early stage of development and we do not provide backwards compatibility of the API at this point. |
| |
| ## 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. |
| |
| ## jnigen |
| |
| This library is a part of `jnigen` - a 2022 GSoC project. |
| |
| The broader aim of jnigen is making Java APIs accessible from dart in an idiomatic way. |
| |