Kotlin-JNI is a powerful Kotlin Multiplatform library designed to simplify and unify JNI (Java Native Interface) development across Android, Desktop (Linux, macOS, Windows), and Kotlin/Native.
It provides a common JNI interface for all supported native targets and includes a KSP module to automatically generate JNI-compatible function stubs, eliminating boilerplate and bridging the gap between your native Kotlin code and the Java world.
I want to express great gratitude to the original creator @DatL4g for the idea and execution. This project indeed makes JNI on Kotlin painless and effortless.
However, since the original repository no longer has a permissive license, this repository had to be created, based on the older, Apache-licensed version.
- Unified JNI API: Write common JNI code for
androidNative,linux,macos, andmingwX64targets. - Type Conversion Utilities: A rich set of extension functions to effortlessly convert between JNI types and standard Kotlin types (e.g.,
jstring.toKString(),IntArray.toJIntArray()). - KSP Code Generation: Automatically generate JNI-compatible C-style function stubs from your idiomatic Kotlin functions using the
@JNIConnectannotation. - Seamless Java Integration: Call your native Kotlin functions directly from Java with standard Kotlin types, just as you would with any other external method.
Please read the full documentation.
Feel free to create Pull Requests and Issues. I will do my best to address them.