| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  | apply from: 'app/config.gradle' | 
					
						
							| 
									
										
										
										
											2019-04-07 15:46:52 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | buildscript { | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |     apply from: 'app/config.gradle' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-27 11:16:33 +02:00
										 |  |  |     repositories { | 
					
						
							|  |  |  |         google() | 
					
						
							|  |  |  |         jcenter() | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     dependencies { | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |         classpath libraries.androidGradlePlugin | 
					
						
							| 
									
										
										
										
											2020-02-25 11:18:36 -05:00
										 |  |  |         classpath libraries.kotlinGradlePlugin | 
					
						
							| 
									
										
										
										
											2019-08-27 11:16:33 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-04-07 15:46:52 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | allprojects { | 
					
						
							|  |  |  |     repositories { | 
					
						
							| 
									
										
										
										
											2019-08-27 11:16:33 +02:00
										 |  |  |         google() | 
					
						
							|  |  |  |         jcenter() | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |         mavenCentral() | 
					
						
							| 
									
										
										
										
											2019-04-07 15:46:52 -03:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | ext { | 
					
						
							|  |  |  |     supportedAbis = ["armv7", "arm64v8", "x86", "x86_64"] | 
					
						
							| 
									
										
										
										
											2020-03-08 12:34:44 +01:00
										 |  |  |     supportedTargets = ["release", "debug"] | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Used by gradle to specify which architecture to build for by default when running `./gradlew build`.
 | 
					
						
							|  |  |  |     // This command is usually used by Android Studio.
 | 
					
						
							|  |  |  |     // If building manually on the command line, it's recommended to use the
 | 
					
						
							|  |  |  |     // `./gradlew generateGodotTemplates` build command instead after running the `scons` command.
 | 
					
						
							|  |  |  |     // The defaultAbi must be one of the {supportedAbis} values.
 | 
					
						
							|  |  |  |     defaultAbi = "arm64v8" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def rootDir = "../../.." | 
					
						
							|  |  |  | def binDir = "$rootDir/bin/" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def getSconsTaskName(String buildType) { | 
					
						
							|  |  |  |     return "compileGodotNativeLibs" + buildType.capitalize() | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-04-07 15:46:52 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Copy the generated 'android_debug.apk' binary template into the Godot bin directory. | 
					
						
							|  |  |  |  * Depends on the app build task to ensure the binary is generated prior to copying. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task copyDebugBinaryToBin(type: Copy) { | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     dependsOn ':app:assembleDebug' | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |     from('app/build/outputs/apk/debug') | 
					
						
							|  |  |  |     into(binDir) | 
					
						
							|  |  |  |     include('android_debug.apk') | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-08-27 11:16:33 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Copy the generated 'android_release.apk' binary template into the Godot bin directory. | 
					
						
							|  |  |  |  * Depends on the app build task to ensure the binary is generated prior to copying. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task copyReleaseBinaryToBin(type: Copy) { | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     dependsOn ':app:assembleRelease' | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |     from('app/build/outputs/apk/release') | 
					
						
							|  |  |  |     into(binDir) | 
					
						
							|  |  |  |     include('android_release.apk') | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-08-27 11:16:33 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2019-10-18 09:59:04 -07:00
										 |  |  |  * Copy the Godot android library archive debug file into the app module debug libs directory. | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |  * Depends on the library build task to ensure the AAR file is generated prior to copying. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2019-10-18 09:59:04 -07:00
										 |  |  | task copyDebugAARToAppModule(type: Copy) { | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     dependsOn ':lib:assembleDebug' | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |     from('lib/build/outputs/aar') | 
					
						
							|  |  |  |     into('app/libs/debug') | 
					
						
							|  |  |  |     include('godot-lib.debug.aar') | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-08-27 11:16:33 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2019-10-18 09:59:04 -07:00
										 |  |  |  * Copy the Godot android library archive debug file into the root bin directory. | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |  * Depends on the library build task to ensure the AAR file is generated prior to copying. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2019-10-18 09:59:04 -07:00
										 |  |  | task copyDebugAARToBin(type: Copy) { | 
					
						
							|  |  |  |     dependsOn ':lib:assembleDebug' | 
					
						
							|  |  |  |     from('lib/build/outputs/aar') | 
					
						
							|  |  |  |     into(binDir) | 
					
						
							|  |  |  |     include('godot-lib.debug.aar') | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Copy the Godot android library archive release file into the app module release libs directory. | 
					
						
							|  |  |  |  * Depends on the library build task to ensure the AAR file is generated prior to copying. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task copyReleaseAARToAppModule(type: Copy) { | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     dependsOn ':lib:assembleRelease' | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |     from('lib/build/outputs/aar') | 
					
						
							|  |  |  |     into('app/libs/release') | 
					
						
							|  |  |  |     include('godot-lib.release.aar') | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-04-07 15:46:52 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-18 09:59:04 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Copy the Godot android library archive release file into the root bin directory. | 
					
						
							|  |  |  |  * Depends on the library build task to ensure the AAR file is generated prior to copying. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task copyReleaseAARToBin(type: Copy) { | 
					
						
							|  |  |  |     dependsOn ':lib:assembleRelease' | 
					
						
							|  |  |  |     from('lib/build/outputs/aar') | 
					
						
							|  |  |  |     into(binDir) | 
					
						
							|  |  |  |     include('godot-lib.release.aar') | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Generate Godot custom build template by zipping the source files from the app directory, as well | 
					
						
							|  |  |  |  * as the AAR files generated by 'copyDebugAAR' and 'copyReleaseAAR'. | 
					
						
							|  |  |  |  * The zip file also includes some gradle tools to allow building of the custom build. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task zipCustomBuild(type: Zip) { | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     dependsOn ':generateGodotTemplates' | 
					
						
							|  |  |  |     doFirst { | 
					
						
							|  |  |  |         logger.lifecycle("Generating Godot custom build template") | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-03-04 09:21:59 -08:00
										 |  |  |     from(fileTree(dir: 'app', excludes: ['**/build/**', '**/.gradle/**', '**/*.iml']), fileTree(dir: '.', includes: ['gradle.properties', 'gradlew', 'gradlew.bat', 'gradle/**'])) | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  |     include '**/*' | 
					
						
							|  |  |  |     archiveName 'android_source.zip' | 
					
						
							|  |  |  |     destinationDir(file(binDir)) | 
					
						
							| 
									
										
										
										
											2019-04-07 15:46:52 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-11 01:03:17 +02:00
										 |  |  | def templateExcludedBuildTask() { | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     // We exclude these gradle tasks so we can run the scons command manually.
 | 
					
						
							| 
									
										
										
										
											2021-03-11 01:03:17 +02:00
										 |  |  |     def excludedTasks = [] | 
					
						
							| 
									
										
										
										
											2020-03-08 12:34:44 +01:00
										 |  |  |     for (String buildType : supportedTargets) { | 
					
						
							| 
									
										
										
										
											2021-03-11 01:03:17 +02:00
										 |  |  |         excludedTasks += ":lib:" + getSconsTaskName(buildType) | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-11 01:03:17 +02:00
										 |  |  |     return excludedTasks | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-11 01:03:17 +02:00
										 |  |  | def templateBuildTasks() { | 
					
						
							|  |  |  |     def tasks = [] | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Only build the apks and aar files for which we have native shared libraries.
 | 
					
						
							| 
									
										
										
										
											2020-03-08 12:34:44 +01:00
										 |  |  |     for (String target : supportedTargets) { | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |         File targetLibs = new File("lib/libs/" + target) | 
					
						
							| 
									
										
										
										
											2019-10-18 09:59:04 -07:00
										 |  |  |         if (targetLibs != null | 
					
						
							|  |  |  |             && targetLibs.isDirectory() | 
					
						
							|  |  |  |             && targetLibs.listFiles() != null | 
					
						
							|  |  |  |             && targetLibs.listFiles().length > 0) { | 
					
						
							|  |  |  |             String capitalizedTarget = target.capitalize() | 
					
						
							|  |  |  |             // Copy the generated aar library files to the custom build directory.
 | 
					
						
							|  |  |  |             tasks += "copy" + capitalizedTarget + "AARToAppModule" | 
					
						
							|  |  |  |             // Copy the generated aar library files to the bin directory.
 | 
					
						
							|  |  |  |             tasks += "copy" + capitalizedTarget + "AARToBin" | 
					
						
							|  |  |  |             // Copy the prebuilt binary templates to the bin directory.
 | 
					
						
							|  |  |  |             tasks += "copy" + capitalizedTarget + "BinaryToBin" | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             logger.lifecycle("No native shared libs for target $target. Skipping build.") | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-11 01:03:17 +02:00
										 |  |  |     return tasks | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Master task used to coordinate the tasks defined above to generate the set of Godot templates. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task generateGodotTemplates(type: GradleBuild) { | 
					
						
							|  |  |  |     startParameter.excludedTaskNames = templateExcludedBuildTask() | 
					
						
							|  |  |  |     tasks = templateBuildTasks() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     finalizedBy 'zipCustomBuild' | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Generates the same output as generateGodotTemplates but with dev symbols | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task generateDevTemplate (type: GradleBuild) { | 
					
						
							|  |  |  |     // add parameter to set symbols to true
 | 
					
						
							|  |  |  |     startParameter.projectProperties += [doNotStrip: true] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     startParameter.excludedTaskNames = templateExcludedBuildTask() | 
					
						
							|  |  |  |     tasks = templateBuildTasks() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  |     finalizedBy 'zipCustomBuild' | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Clean the generated artifacts. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | task cleanGodotTemplates(type: Delete) { | 
					
						
							| 
									
										
										
										
											2020-03-04 09:21:59 -08:00
										 |  |  |     // Delete the generated native libs
 | 
					
						
							|  |  |  |     delete("lib/libs") | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-04 09:21:59 -08:00
										 |  |  |     // Delete the library generated AAR files
 | 
					
						
							|  |  |  |     delete("lib/build/outputs/aar") | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-04 09:21:59 -08:00
										 |  |  |     // Delete the app libs directory contents
 | 
					
						
							|  |  |  |     delete("app/libs") | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-04 09:21:59 -08:00
										 |  |  |     // Delete the generated binary apks
 | 
					
						
							|  |  |  |     delete("app/build/outputs/apk") | 
					
						
							| 
									
										
										
										
											2019-09-22 22:23:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-04 09:21:59 -08:00
										 |  |  |     // Delete the Godot templates in the Godot bin directory
 | 
					
						
							|  |  |  |     delete("$binDir/android_debug.apk") | 
					
						
							|  |  |  |     delete("$binDir/android_release.apk") | 
					
						
							|  |  |  |     delete("$binDir/android_source.zip") | 
					
						
							| 
									
										
										
										
											2019-10-18 09:59:04 -07:00
										 |  |  |     delete("$binDir/godot-lib.debug.aar") | 
					
						
							|  |  |  |     delete("$binDir/godot-lib.release.aar") | 
					
						
							| 
									
										
										
										
											2020-05-27 12:04:31 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     finalizedBy getTasksByName("clean", true) | 
					
						
							| 
									
										
										
										
											2019-09-02 17:31:51 -07:00
										 |  |  | } |