1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Fix FindClass() failing to find Dictionary on Android leading to crash

This commit is contained in:
Serhii Snitsaruk
2025-08-01 10:32:11 +02:00
parent dda2614aca
commit fa36abeacc
5 changed files with 125 additions and 48 deletions

View File

@@ -119,6 +119,8 @@ static void _terminate(JNIEnv *env, bool p_restart = false) {
FileAccessFilesystemJAndroid::terminate();
NetSocketAndroid::terminate();
cleanup_android_class_loader();
if (godot_java) {
godot_java->on_godot_terminating(env);
if (!restart_on_cleanup) {
@@ -144,12 +146,13 @@ JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv
JavaVM *jvm;
env->GetJavaVM(&jvm);
init_thread_jandroid(jvm, env);
setup_android_class_loader();
// create our wrapper classes
godot_java = new GodotJavaWrapper(env, p_godot_instance);
godot_io_java = new GodotIOJavaWrapper(env, p_godot_io);
init_thread_jandroid(jvm, env);
FileAccessAndroid::setup(p_asset_manager);
DirAccessJAndroid::setup(p_directory_access_handler);
FileAccessFilesystemJAndroid::setup(p_file_access_handler);
@@ -478,7 +481,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_godotengine_godot_GodotLib_getRendererIn
String rendering_driver = RenderingServer::get_singleton()->get_current_rendering_driver_name();
String rendering_method = RenderingServer::get_singleton()->get_current_rendering_method();
jobjectArray result = env->NewObjectArray(2, env->FindClass("java/lang/String"), nullptr);
jobjectArray result = env->NewObjectArray(2, jni_find_class(env, "java/lang/String"), nullptr);
env->SetObjectArrayElement(result, 0, env->NewStringUTF(rendering_driver.utf8().get_data()));
env->SetObjectArrayElement(result, 1, env->NewStringUTF(rendering_method.utf8().get_data()));