@@ -19,9 +19,7 @@ plugins {}
1919apply from : ' config.gradle'
2020
2121ext {
22- addonPrebuiltDir = " demo/addons/godot_meta_toolkit/.build_template/prebuilt"
23-
24- godotDir = " thirdparty/godot"
22+ godotDir = project. hasProperty(" godotDir" ) ? project. property(" godotDir" ) : " "
2523 godotJavaDir = " ${ godotDir} /platform/android/java/"
2624
2725 godotAppStandardManifestDir = " ${ godotJavaDir} /app/src/standard/"
@@ -57,13 +55,10 @@ task buildToolkit {
5755}
5856
5957/**
60- * Generate the addon by building the 'toolkit' module and the prebuilt apks.
58+ * Generate the addon by building the 'toolkit' module
6159 */
6260task generateAddon {
6361 dependsOn buildToolkit
64-
65- // Generate the prebuilt apks
66- dependsOn ' :generatePrebuiltApks'
6762}
6863
6964/*
@@ -208,15 +203,17 @@ task cleanPrebuiltApks(type: Delete) {
208203 }
209204 }
210205
211- delete(godotAppStandardManifestDir)
206+ delete " meta-export-template.zip "
212207
213- delete(addonPrebuiltDir)
208+ if (godotDir != " " ) {
209+ delete(godotAppStandardManifestDir)
214210
215- tasks. create(name : " cleanGodot" , type : Exec ) {
216- executable gradlewExecutable. absolutePath
217- args " -p" , godotJavaDir, " clean"
211+ tasks. create(name : " cleanGodot" , type : Exec ) {
212+ executable gradlewExecutable. absolutePath
213+ args " -p" , godotJavaDir, " clean"
214+ }
215+ dependsOn ' cleanGodot'
218216 }
219- dependsOn ' cleanGodot'
220217}
221218
222219/**
@@ -228,18 +225,26 @@ task copyPrebuiltManifestToGodotApp(type: Copy) {
228225 file(godotAppStandardManifestDir). mkdirs()
229226
230227 from " ./prebuilt/AndroidManifest.xml"
231- into " ./thirdparty/godot/platform/android/java/app/src/standard/ "
228+ into godotAppStandardManifestDir
232229}
233230
234231/**
235- * Copy the generated prebuilt apks to the addon directory.
232+ * Zip the generated prebuilt apks
236233 */
237- task copyPrebuiltApksToAddon (type : Copy ) {
238- from godotAppOutputDir
239- into addonPrebuiltDir
234+ task zipPrebuiltApks (type : Zip ) {
235+ from(godotAppOutputDir)
240236 include ' **/*.apk'
237+ archiveFileName = " meta-export-template.zip"
238+ destinationDirectory = project. rootDir
239+ }
240+
241+ void verifyGodotDir () {
242+ if (godotDir == " " || ! file(godotDir). exists() || ! file(godotDir). isDirectory()) {
243+ throw new GradleException (" godotDir property is empty or invalid." )
244+ }
241245}
242246
247+
243248/**
244249 * Generate the prebuilt apks.
245250 */
@@ -257,11 +262,17 @@ task generatePrebuiltApks() {
257262
258263 if (sconsExecutableFile != null && sconsExecutableFile. exists()) {
259264 tasks. create(name : " buildGodotAndroidArm64Debug" , type : Exec ) {
265+ doFirst {
266+ verifyGodotDir()
267+ }
260268 executable sconsExecutableFile. absolutePath
261269 args " --directory=${ godotDir} " , " platform=android" , " target=template_debug" , " arch=arm64"
262270 }
263271
264272 tasks. create(name : " buildGodotAndroidArm64Release" , type : Exec ) {
273+ doFirst {
274+ verifyGodotDir()
275+ }
265276 executable sconsExecutableFile. absolutePath
266277 args " --directory=${ godotDir} " , " platform=android" , " target=template_release" , " arch=arm64"
267278 }
@@ -274,6 +285,9 @@ task generatePrebuiltApks() {
274285 if (sconsExecutableFile != null && sconsExecutableFile. exists()) {
275286 dependsOn ' buildGodotAndroidArm64Debug'
276287 }
288+ doFirst {
289+ verifyGodotDir()
290+ }
277291 executable gradlewExecutable. absolutePath
278292 args " -p" ,
279293 godotJavaDir,
@@ -289,6 +303,9 @@ task generatePrebuiltApks() {
289303 if (sconsExecutableFile != null && sconsExecutableFile. exists()) {
290304 dependsOn ' buildGodotAndroidArm64Release'
291305 }
306+ doFirst {
307+ verifyGodotDir()
308+ }
292309 executable gradlewExecutable. absolutePath
293310 args " -p" ,
294311 godotJavaDir,
@@ -300,5 +317,5 @@ task generatePrebuiltApks() {
300317 dependsOn ' assemblePrebuiltDebugApk'
301318 dependsOn ' assemblePrebuiltReleaseApk'
302319
303- finalizedBy ' copyPrebuiltApksToAddon '
320+ finalizedBy ' zipPrebuiltApks '
304321}
0 commit comments