tree: e5e912e63fca2fffd33f82877e0f607d80b9fd93
  1. android/
  2. bin/
  3. example/
  4. lib/
  5. linux/
  6. macos/
  7. src/
  8. test/
  9. third_party/
  10. tool/
  11. windows/
  12. .gitignore
  13. .metadata
  14. analysis_options.yaml
  15. CHANGELOG.md
  16. ffigen.yaml
  17. LICENSE
  18. pubspec.yaml
  19. README.md
pkgs/jni/README.md

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.

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.