manganis: load FFI classes from the activity classloader, not FindClass
JNIEnv::find_class resolves against the system classloader on a thread attached from native code, which cannot see APK classes (#5629). Route the generated #[manganis::ffi] type lookup through load_class_from_classloader, and reimplement that helper to ask the activity's own ClassLoader.loadClass instead of Class.forName.
This commit is contained in:
1 parent
07dddd569e
commit
aeb5568727
2 files changed
+25
-6
No files matched your search
@@ -398,7 +398,7 @@ impl FfiBridgeParser {
|
||||
// Use with_activity which returns Option<R>, wrapping our Result in the Option
|
||||
let inner_result: Option<Result<Self, String>> = manganis::android::with_activity(|mut env, activity| {
|
||||
// Find the class
|
||||
let class_result = env.find_class(#class_name_lit);
|
||||
let class_result = manganis::android::load_class_from_classloader(env, activity, #class_name_lit);
|
||||
let class = match class_result {
|
||||
Ok(c) => c,
|
||||
Err(e) => return Some(Err(format!("Failed to find class {}: {:?}", #class_name_lit, e))),
|
||||
|
||||
Reference in new issue
Block a user