Browse Source

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 years ago
parent
commit
c74bf2e6b1
3 changed files with 8 additions and 10 deletions
  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();