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:
parent
8f5d9b6391
commit
c74bf2e6b1
3 changed files with 8 additions and 10 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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).
|
||||||
|
|
|
@ -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();
|
|
||||||
|
|
Loading…
Reference in a new issue