#jni #flutter #loaded #jvm #loader #class #applications

irondash_jni_context

为 Flutter JNI 库访问 JavaVM

4 个版本

0.2.0 2023 年 7 月 1 日
0.1.2 2023 年 3 月 29 日
0.1.1 2022 年 11 月 15 日
0.1.0 2022 年 11 月 10 日

#9 in #loaded

Download history 25/week @ 2024-04-01

363 每月下载量

MIT 许可证

12KB
270 代码行数(不包括注释)

irondash_jni_context

此crate可用于从Rust代码获取对JavaVM的访问权限。

它定义了一个由JVM在库加载时调用的 JNI_OnLoad 函数。它保存对JavaVM的指针,以后可以访问。

它还尝试存储加载Flutter应用的类加载器。

这仅在从Java使用 System.loadLibrary 加载使用此crate的dylib时才有效。如果从其他代码(例如通过 dlopen)加载dylib,则不会生效。

此crate还假设从主线程调用 System.loadLibrary。它将记住主线程的looper,并提供将回调调度到主线程的功能。

示例用法

    let context = JniContext::get().unwrap();
    let java_vm = context.java_vm();
    let mut env = java_vm.attach_to_current_thread();

    // ...

    context.schedule_on_main_thread(|| {
        // This will be run on main thread
        println!("Hello from main thread!");
    });

依赖项

~0–11MB
~64K SLoC