DioxusLabs/dioxus · error

Failed to get asset manager as object

Error message

Failed to get asset manager as object

What it means

Second-stage Android JNI panic in to_java_load_asset: the getAssets call itself succeeded, but converting the returned JValue to a Java object with .l() failed because the returned reference was null or not an object.

Source

Thrown at packages/asset-resolver/src/native.rs:280

    }

    use std::ptr::NonNull;

    let ctx = ndk_context::android_context();
    let vm = unsafe { jni::JavaVM::from_raw(ctx.vm().cast()) }.unwrap();
    let mut env = vm.attach_current_thread().unwrap();

    // Query the Asset Manager
    let asset_manager_ptr = env
        .call_method(
            unsafe { jni::objects::JObject::from_raw(ctx.context().cast()) },
            "getAssets",
            "()Landroid/content/res/AssetManager;",
            &[],
        )
        .expect("Failed to get asset manager")
        .l()
        .expect("Failed to get asset manager as object");

    unsafe {
        let asset_manager =
            ndk_sys::AAssetManager_fromJava(env.get_native_interface(), *asset_manager_ptr);

        let asset_manager = ndk::asset::AssetManager::from_ptr(
            NonNull::new(asset_manager).expect("Invalid asset manager"),
        );

        let cstr = std::ffi::CString::new(normalized).unwrap();

        let mut asset = asset_manager.open(&cstr)?;
        Some(asset.buffer().unwrap().to_vec())
    }
}

View on GitHub (pinned to 393d190a80)

Solutions

  1. Use the standard dioxus/wry Android entry so the correct Context is registered in ndk-context
  2. Verify the app targets a supported Android API level with the standard Activity
  3. Ensure custom code never overwrites ndk_context with a wrong context pointer
Defensive patterns

Strategy: validation

Prevention

When it happens

Trigger: The Java side returns null/non-object from getAssets, or the context object registered in ndk-context is not the expected Activity/Context type, making the .l() conversion fail.

Common situations: Mismatched Android glue where the stored context is an object the JVM cannot resolve getAssets on; API-level or activity-package differences in a custom launcher; incorrect unsafe JNI usage corrupting references.

Related errors


AI-assisted analysis of DioxusLabs/dioxus@393d190a80 (2026-08-16). Data as JSON: /api/errors/4b6636fbbbfbf43d. Report an issue: GitHub.