INNER CODE UNIT · Rust
load_class
jub0t/Concat · src/crates/concat-android/src/lib.rs:180
fn load_class(
env: &mut Env,
activity: &JObject,
) -> jni::errors::Result<Global<JClass<'static>>> {
let parent = env
.call_method(
activity,
jni_str!("getClassLoader"),
jni_sig!("()Ljava/lang/ClassLoader;"),
&[],
)?
.l()?;
// SAFETY: DEX is 'static and the loader never writes to it.
let buffer = unsafe { env.new_direct_byte_buffer(DEX.as_ptr().cast_mut(), DEX.len()) }?;
let loader = env.new_object(
jni_str!("dalvik/system/InMemoryDexClassLoader"),
jni_sig!("(Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V"),
&[(&buffer).into(), (&parent).into()],