#api-bindings #android #jni #jvm #binding-generator #bindings-generator #bindgen

jni-glue

Manually written glue code to accompany the jni-bindgen code generator for binding to JVM APIs from Rust

8 releases

0.0.10 Jan 14, 2020
0.0.9 Aug 26, 2019

#155 in FFI

Download history 33/week @ 2024-03-17 20/week @ 2024-03-24 55/week @ 2024-03-31 33/week @ 2024-04-07 33/week @ 2024-04-14 37/week @ 2024-04-21 30/week @ 2024-04-28 32/week @ 2024-05-05 35/week @ 2024-05-12 34/week @ 2024-05-19 45/week @ 2024-05-26 51/week @ 2024-06-02 43/week @ 2024-06-09 52/week @ 2024-06-16 46/week @ 2024-06-23 6/week @ 2024-06-30

154 downloads per month
Used in 3 crates (2 directly)

MIT/Apache

81KB
1K SLoC

jni-bindgen

GitHub Build Status unsafe: yes rust: stable Open issues License dependency status

Work in progress, only barely kinda partially usable

Vaguely inspired by, but otherwise unrelated to, bindgen and wasm-bindgen's WebIDL stuff.

Generate Rust JVM FFI wrappers around APIs defined by .jar or .class files, because maintaining your own hand-written bindings is an exercise in boredom, soundness bugs, and pain.

Goals

  • Provide a means of using Android system APIs specifically.
  • Provide a means of using Java, Kotlin, Scala, or other JVM based APIs.
  • Automatically link API documentation, so people might actually read it.
  • Eliminate the need to manually write unsound, unreviewed, and unaudited unsafe { ... } APIs

Local Crates

github.com crates.io docs.rs Description
jni-android-sys Crates.io Docs Bindings to Android Java APIs
jni-bindgen Crates.io N/A Generator of Java API bindings
jni-glue Crates.io Docs Utility functions for Java API bindings

External Crates / Plugins

github.com package docs License Where
jni-sys Crates.io Docs License
jreflection Crates.io Docs License Bindgen
rust-android-gradle gradle.org README.md License Examples

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

Common glue code between Rust and JNI, used in autogenerated jni-bindgen glue code.

See also the Android JNI tips documentation as well as the Java Native Interface Specification.

Dependencies

~52KB