{"id":15297602,"url":"https://github.com/maulingmonkey/jni-bindgen","last_synced_at":"2025-04-09T20:07:15.728Z","repository":{"id":35053629,"uuid":"199980565","full_name":"MaulingMonkey/jni-bindgen","owner":"MaulingMonkey","description":"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.","archived":false,"fork":false,"pushed_at":"2023-04-06T11:58:05.000Z","size":8696,"stargazers_count":79,"open_issues_count":31,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-09T20:07:10.624Z","etag":null,"topics":["android","jni","jvm","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaulingMonkey.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-01T05:05:25.000Z","updated_at":"2024-06-03T09:03:42.000Z","dependencies_parsed_at":"2024-08-02T13:24:11.049Z","dependency_job_id":"af7d96ea-f6f9-4d59-ab58-40b701e048de","html_url":"https://github.com/MaulingMonkey/jni-bindgen","commit_stats":{"total_commits":205,"total_committers":4,"mean_commits":51.25,"dds":"0.029268292682926855","last_synced_commit":"01a154fde04b49a9aa9ead82e2e207928a5324eb"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fjni-bindgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fjni-bindgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fjni-bindgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fjni-bindgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaulingMonkey","download_url":"https://codeload.github.com/MaulingMonkey/jni-bindgen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103872,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","jni","jvm","rust"],"created_at":"2024-09-30T19:18:26.952Z","updated_at":"2025-04-09T20:07:15.708Z","avatar_url":"https://github.com/MaulingMonkey.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jni-bindgen\n\n[![GitHub](https://img.shields.io/github/stars/MaulingMonkey/jni-bindgen.svg?label=GitHub\u0026style=social)](https://github.com/MaulingMonkey/jni-bindgen)\n[![Build Status](https://github.com/MaulingMonkey/jni-bindgen/workflows/Rust/badge.svg)](https://github.com/MaulingMonkey/jni-bindgen/actions?query=workflow%3Arust)\n[![unsafe: yes](https://img.shields.io/github/search/MaulingMonkey/jni-bindgen/unsafe%2bextension%3Ars?color=yellow\u0026label=unsafe)](https://github.com/MaulingMonkey/jni-bindgen/search?q=unsafe+extension%3Ars)\n[![rust: stable](https://img.shields.io/badge/rust-stable-yellow.svg)](https://gist.github.com/MaulingMonkey/c81a9f18811079f19326dac4daa5a359#minimum-supported-rust-versions-msrv)\n[![Open issues](https://img.shields.io/github/issues-raw/MaulingMonkey/jni-bindgen.svg)](https://github.com/MaulingMonkey/jni-bindgen/issues)\n[![License](https://img.shields.io/crates/l/jni-bindgen.svg)](https://github.com/MaulingMonkey/jni-bindgen)\n[![dependency status](https://deps.rs/repo/github/MaulingMonkey/jni-bindgen/status.svg)](https://deps.rs/repo/github/MaulingMonkey/jni-bindgen)\n\u003c!--\n[![Build Status](https://travis-ci.org/MaulingMonkey/jni-bindgen.svg)](https://travis-ci.org/MaulingMonkey/jni-bindgen)\n--\u003e\n\n**Work in progress, only barely kinda partially usable**\n\nVaguely inspired by, but otherwise unrelated to, [bindgen](https://github.com/rust-lang/rust-bindgen) and\n[wasm-bindgen](https://github.com/rustwasm/wasm-bindgen)'s WebIDL stuff.\n\nGenerate Rust JVM FFI wrappers around APIs defined by `.jar` or `.class` files, because maintaining your own\nhand-written bindings is an exercise in boredom, soundness bugs, and pain.\n\n## Goals\n\n* Provide a means of using Android system APIs specifically.\n* Provide a means of using Java, Kotlin, Scala, or other JVM based APIs.\n* Automatically link API documentation, so people might actually read it.\n* Eliminate the need to manually write unsound, unreviewed, and [unaudited](https://github.com/dpc/crev) `unsafe { ... }` APIs\n\n## Local Crates\n\n| [github.com](https://github.com)                                                                      | [crates.io](https://crates.io)                                                                                | [docs.rs](https://docs.rs)                                                                | Description |\n| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------- |\n| [jni-android-sys](https://github.com/MaulingMonkey/jni-bindgen/tree/master/jni-android-sys)           | [![Crates.io](https://img.shields.io/crates/v/jni-android-sys.svg)](https://crates.io/crates/jni-android-sys) | [![Docs](https://docs.rs/jni-android-sys/badge.svg)](https://docs.rs/jni-android-sys/)    | Bindings to Android Java APIs\n| [jni-bindgen](https://github.com/MaulingMonkey/jni-bindgen/tree/master/jni-bindgen)                   | [![Crates.io](https://img.shields.io/crates/v/jni-bindgen.svg)](https://crates.io/crates/jni-bindgen)         | N/A                                                                                       | Generator of Java API bindings\n| [jni-glue](https://github.com/MaulingMonkey/jni-bindgen/tree/master/jni-glue)                         | [![Crates.io](https://img.shields.io/crates/v/jni-glue.svg)](https://crates.io/crates/jni-glue)               | [![Docs](https://docs.rs/jni-glue/badge.svg)](https://docs.rs/jni-glue/)                  | Utility functions for Java API bindings\n\n## External Crates / Plugins\n\n| [github.com](https://github.com) | package | docs | License | Where |\n| -------------------------------- | ------- | ---- | ------- | ----- |\n| [jni-sys](https://github.com/sfackler/rust-jni-sys) | [![Crates.io](https://img.shields.io/crates/v/jni-sys.svg)](https://crates.io/crates/jni-sys) | [![Docs](https://docs.rs/jni-sys/badge.svg)](https://docs.rs/jni-sys/) | [![License](https://img.shields.io/crates/l/jni-sys.svg)](https://github.com/sfackler/rust-jni-sys/blob/master/README.md#license)\n| [jreflection](https://github.com/MaulingMonkey/jreflection) | [![Crates.io](https://img.shields.io/crates/v/jreflection.svg)](https://crates.io/crates/jreflection) | [![Docs](https://docs.rs/jreflection/badge.svg)](https://docs.rs/jreflection/) | [![License](https://img.shields.io/crates/l/jreflection.svg)](https://github.com/MaulingMonkey/jreflection/blob/master/Readme.md#license) | Bindgen\n| [rust-android-gradle](https://github.com/mozilla/rust-android-gradle) | [![gradle.org](https://img.shields.io/maven-metadata/v/https/plugins.gradle.org/m2/org/mozilla/rust-android-gradle/rust-android/org.mozilla.rust-android-gradle.rust-android.gradle.plugin/maven-metadata.xml.svg?label=gradle.org\u0026colorB=brightgreen)](https://plugins.gradle.org/plugin/org.mozilla.rust-android-gradle.rust-android)   | [README.md](https://github.com/mozilla/rust-android-gradle/blob/master/README.md) | [![License](https://img.shields.io/github/license/mozilla/rust-android-gradle)](https://github.com/MaulingMonkey/rust-android-gradle/blob/master/LICENSE) | Examples\n\n## License\n\nLicensed under either of\n\n* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\n\u003c!-- https://doc.rust-lang.org/1.4.0/complement-project-faq.html#why-dual-mit/asl2-license? --\u003e\n\u003c!-- https://rust-lang-nursery.github.io/api-guidelines/necessities.html#crate-and-its-dependencies-have-a-permissive-license-c-permissive --\u003e\n\u003c!-- https://choosealicense.com/licenses/apache-2.0/ --\u003e\n\u003c!-- https://choosealicense.com/licenses/mit/ --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaulingmonkey%2Fjni-bindgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaulingmonkey%2Fjni-bindgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaulingmonkey%2Fjni-bindgen/lists"}