Przeglądaj źródła

Add logic to automatically pick up jar/aar library dependencies in the `res://addons` directory

Fredia Huya-Kouadio 11 miesięcy temu
rodzic
commit
4587d14796

+ 3 - 0
platform/android/export/export_plugin.cpp

@@ -3263,8 +3263,11 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
 			cmdline.push_back(apk_build_command);
 		}
 
+		String addons_directory = ProjectSettings::get_singleton()->globalize_path("res://addons");
+
 		cmdline.push_back("-p"); // argument to specify the start directory.
 		cmdline.push_back(build_path); // start directory.
+		cmdline.push_back("-Paddons_directory=" + addons_directory); // path to the addon directory as it may contain jar or aar dependencies
 		cmdline.push_back("-Pexport_package_name=" + package_name); // argument to specify the package name.
 		cmdline.push_back("-Pexport_version_code=" + version_code); // argument to specify the version code.
 		cmdline.push_back("-Pexport_version_name=" + version_name); // argument to specify the version name.

+ 6 - 0
platform/android/java/app/build.gradle

@@ -63,6 +63,12 @@ dependencies {
         implementation files(pluginsBinaries)
     }
 
+    // Automatically pick up local dependencies in res://addons
+    String addonsDirectory = getAddonsDirectory()
+    if (addonsDirectory != null && !addonsDirectory.isBlank()) {
+        implementation fileTree(dir: "$addonsDirectory", include: ['*.jar', '*.aar'])
+    }
+
     // .NET dependencies
     String jar = '../../../../modules/mono/thirdparty/libSystem.Security.Cryptography.Native.Android.jar'
     if (file(jar).exists()) {

+ 5 - 0
platform/android/java/app/config.gradle

@@ -408,3 +408,8 @@ ext.shouldUseLegacyPackaging = { ->
     // Default behavior for minSdk >= 23
     return false
 }
+
+ext.getAddonsDirectory = { ->
+    String addonsDirectory = project.hasProperty("addons_directory") ? project.property("addons_directory") : ""
+    return addonsDirectory
+}