浏览代码

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.
Rémi Verschelde 6 年之前
父节点
当前提交
c74bf2e6b1
共有 3 个文件被更改,包括 8 次插入10 次删除
  1. 3 0
      core/project_settings.cpp
  2. 4 0
      doc/classes/ProjectSettings.xml
  3. 1 10
      platform/android/java_glue.cpp

+ 3 - 0
core/project_settings.cpp

@@ -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;
 }
 }
 
 

+ 4 - 0
doc/classes/ProjectSettings.xml

@@ -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).

+ 1 - 10
platform/android/java_glue.cpp

@@ -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();