1 个不稳定版本
0.1.0 | 2022年11月5日 |
---|
#14 in #loaded
12KB
268 行
ironbird_jni_context
此crate可以用来从Rust代码中获取访问JavaVM的权限。
它定义了一个 JNI_OnLoad
函数,该函数在库被加载时由JVM调用。它保存了JavaVM的指针,以后可以访问。
它还尝试存储加载Flutter应用程序的类加载器。
这仅适用于使用此crate的dylib是从Java使用 System.loadLibrary
加载的情况。如果dylib是从其他代码加载的(例如通过 dlopen
),则不会工作。
此crate还假设 System.loadLibrary
是从主线程中调用的。它会记住主线程的looper,并提供在主线程上调度回调的功能。
示例用法
let context = JniContext::get().unwrap();
let java_vm = context.java_vm();
let 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–1MB
~11K SLoC