Newstrong's 博客

Kratos
专注于用户阅读体验的响应式博客主题
  1. 首页
  2. 未分类
  3. 正文

FindClass from any thread in Android JNI

2024年9月20日 591点热度 0人点赞
JavaVM* gJvm = nullptr;
static jobject gClassLoader;
static jmethodID gFindClassMethod;

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *pjvm, void *reserved) {
    gJvm = pjvm;  // cache the JavaVM pointer
    auto env = getEnv();
    //replace with one of your classes in the line below
    auto randomClass = env->FindClass("com/example/RandomClass");
    jclass classClass = env->GetObjectClass(randomClass);
    auto classLoaderClass = env->FindClass("java/lang/ClassLoader");
    auto getClassLoaderMethod = env->GetMethodID(classClass, "getClassLoader",
                                             "()Ljava/lang/ClassLoader;");
    gClassLoader = env->CallObjectMethod(randomClass, getClassLoaderMethod);
    gFindClassMethod = env->GetMethodID(classLoaderClass, "findClass",
                                    "(Ljava/lang/String;)Ljava/lang/Class;");

    return JNI_VERSION_1_6;
}

jclass findClass(const char* name) {
    return static_cast<jclass>(getEnv()->CallObjectMethod(gClassLoader, gFindClassMethod, getEnv()->NewStringUTF(name)));
}

JNIEnv* getEnv() {
    JNIEnv *env;
    int status = gJvm->GetEnv((void**)&env, JNI_VERSION_1_6);
    if(status < 0) {    
        status = gJvm->AttachCurrentThread(&env, NULL);
        if(status < 0) {        
            return nullptr;
        }
    }
    return env;
}

 


文章来源于互联网:FindClass from any thread in Android JNI
标签: 暂无
最后更新:2026年6月26日

newstrong

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

归档

  • 2026 年 7 月
  • 2026 年 1 月
  • 2025 年 3 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2022 年 2 月
  • 2021 年 4 月
  • 2020 年 7 月
  • 2020 年 6 月
  • 2020 年 5 月
  • 2017 年 4 月

分类

  • Android
  • git
  • 性能优化
  • 未分类

COPYRIGHT © 2026 Newstrong's 博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备2024057367