DioxusLabs/dioxus · error

Invalid asset manager

Error message

Invalid asset manager

What it means

Android panic in to_java_load_asset: AAssetManager_fromJava returned NULL, so a native ndk AssetManager could not be constructed from the Java reference; the code expects a non-null pointer via NonNull::new.

Source

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

    // 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. Let dioxus resolve assets through its own JNI path on the same thread immediately after obtaining the context
  2. Avoid caching Java AssetManager references across events or threads
  3. Keep the standard dioxus Android launch flow instead of custom asset manager plumbing
Defensive patterns

Strategy: validation

Prevention

When it happens

Trigger: Passing a stale or wrong Java object to AAssetManager_fromJava: an AssetManager whose local JNI reference expired, or a manager from a different context lifetime/classloader than assumed.

Common situations: Caching the Java AssetManager reference across events/threads so the local reference dies; custom asset plumbing bypassing dioxus; app teardown edge cases where the manager is already destroyed.

Related errors


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