Define android/modules globally so it appears in Project Settings

Until now people had to add it manually to project.godot to load custom modules.
This commit is contained in:
Rémi Verschelde 2019-03-07 10:40:44 +01:00
parent 8f5d9b6391
commit c74bf2e6b1
3 changed files with 8 additions and 10 deletions

View file

@ -1185,6 +1185,9 @@ ProjectSettings::ProjectSettings() {
Compression::gzip_level = GLOBAL_DEF("compression/formats/gzip/compression_level", Z_DEFAULT_COMPRESSION); Compression::gzip_level = GLOBAL_DEF("compression/formats/gzip/compression_level", Z_DEFAULT_COMPRESSION);
custom_prop_info["compression/formats/gzip/compression_level"] = PropertyInfo(Variant::INT, "compression/formats/gzip/compression_level", PROPERTY_HINT_RANGE, "-1,9,1"); custom_prop_info["compression/formats/gzip/compression_level"] = PropertyInfo(Variant::INT, "compression/formats/gzip/compression_level", PROPERTY_HINT_RANGE, "-1,9,1");
// Would ideally be defined in an Android-specific file, but then it doesn't appear in the docs
GLOBAL_DEF("android/modules", "");
using_datapack = false; using_datapack = false;
} }

View file

@ -163,7 +163,11 @@
</method> </method>
</methods> </methods>
<members> <members>
<member name="android/modules" type="String" setter="" getter="">
Comma-separated list of custom Android modules (which must have been built in the Android export templates) using their Java package path, e.g. [code]org/godotengine/org/GodotPaymentV3,org/godotengine/godot/MyCustomSingleton"[/code].
</member>
<member name="application/boot_splash/bg_color" type="Color" setter="" getter=""> <member name="application/boot_splash/bg_color" type="Color" setter="" getter="">
Background color for the boot splash.
</member> </member>
<member name="application/boot_splash/fullsize" type="bool" setter="" getter=""> <member name="application/boot_splash/fullsize" type="bool" setter="" getter="">
Scale the boot splash image to the full window length when engine starts (will leave it as default pixel size otherwise). Scale the boot splash image to the full window length when engine starts (will leave it as default pixel size otherwise).

View file

@ -833,7 +833,6 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv *en
static void _initialize_java_modules() { static void _initialize_java_modules() {
if (!ProjectSettings::get_singleton()->has_setting("android/modules")) { if (!ProjectSettings::get_singleton()->has_setting("android/modules")) {
print_line("Android modules: Nothing to load, aborting");
return; return;
} }
@ -853,19 +852,16 @@ static void _initialize_java_modules() {
jmethodID getClassLoader = env->GetMethodID(activityClass, "getClassLoader", "()Ljava/lang/ClassLoader;"); jmethodID getClassLoader = env->GetMethodID(activityClass, "getClassLoader", "()Ljava/lang/ClassLoader;");
jobject cls = env->CallObjectMethod(_godot_instance, getClassLoader); jobject cls = env->CallObjectMethod(_godot_instance, getClassLoader);
//cls=env->NewGlobalRef(cls);
jclass classLoader = env->FindClass("java/lang/ClassLoader"); jclass classLoader = env->FindClass("java/lang/ClassLoader");
//classLoader=(jclass)env->NewGlobalRef(classLoader);
jmethodID findClass = env->GetMethodID(classLoader, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); jmethodID findClass = env->GetMethodID(classLoader, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;");
for (int i = 0; i < mods.size(); i++) { for (int i = 0; i < mods.size(); i++) {
String m = mods[i]; String m = mods[i];
//jclass singletonClass = env->FindClass(m.utf8().get_data());
print_line("Loading module: " + m); print_line("Loading Android module: " + m);
jstring strClassName = env->NewStringUTF(m.utf8().get_data()); jstring strClassName = env->NewStringUTF(m.utf8().get_data());
jclass singletonClass = (jclass)env->CallObjectMethod(cls, findClass, strClassName); jclass singletonClass = (jclass)env->CallObjectMethod(cls, findClass, strClassName);
@ -874,7 +870,6 @@ static void _initialize_java_modules() {
ERR_EXPLAIN("Couldn't find singleton for class: " + m); ERR_EXPLAIN("Couldn't find singleton for class: " + m);
ERR_CONTINUE(!singletonClass); ERR_CONTINUE(!singletonClass);
} }
//singletonClass=(jclass)env->NewGlobalRef(singletonClass);
jmethodID initialize = env->GetStaticMethodID(singletonClass, "initialize", "(Landroid/app/Activity;)Lorg/godotengine/godot/Godot$SingletonBase;"); jmethodID initialize = env->GetStaticMethodID(singletonClass, "initialize", "(Landroid/app/Activity;)Lorg/godotengine/godot/Godot$SingletonBase;");
@ -1577,7 +1572,3 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv *
// something // something
env->PopLocalFrame(NULL); env->PopLocalFrame(NULL);
} }
//Main::cleanup();
//return os.get_exit_code();