1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-14 13:41:12 +00:00
Files
godot/platform/android/java/build.gradle
fhuya c090caa58b Provides a base implementation of the Vulkan surface view (VkSurfaceView.kt) and its accompanying components.
The implementation is meant to be extended and updated in order to integrate it with the existing Godot java and native codebase.
2020-03-05 08:01:42 -08:00

154 lines
4.9 KiB
Groovy

apply from: 'app/config.gradle'
buildscript {
apply from: 'app/config.gradle'
repositories {
google()
jcenter()
}
dependencies {
classpath libraries.androidGradlePlugin
classpath libraries.kotlinGradlePlugin
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}
ext {
sconsExt = org.gradle.internal.os.OperatingSystem.current().isWindows() ? ".bat" : ""
supportedAbis = ["armv7", "arm64v8", "x86", "x86_64"]
supportedTargets = ['release': "release", 'debug': "release_debug"]
// 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()
}
/**
* 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) {
dependsOn ':app:assembleDebug'
from('app/build/outputs/apk/debug')
into(binDir)
include('android_debug.apk')
}
/**
* 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) {
dependsOn ':app:assembleRelease'
from('app/build/outputs/apk/release')
into(binDir)
include('android_release.apk')
}
/**
* Copy the Godot android library archive debug file into the app debug libs directory.
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyDebugAAR(type: Copy) {
dependsOn ':lib:assembleDebug'
from('lib/build/outputs/aar')
into('app/libs/debug')
include('godot-lib.debug.aar')
}
/**
* Copy the Godot android library archive release file into the app release libs directory.
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyReleaseAAR(type: Copy) {
dependsOn ':lib:assembleRelease'
from('lib/build/outputs/aar')
into('app/libs/release')
include('godot-lib.release.aar')
}
/**
* 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) {
dependsOn ':generateGodotTemplates'
doFirst {
logger.lifecycle("Generating Godot custom build template")
}
from(fileTree(dir: 'app', excludes: ['**/build/**', '**/.gradle/**', '**/*.iml']), fileTree(dir: '.', includes: ['gradle.properties', 'gradlew', 'gradlew.bat', 'gradle/**']))
include '**/*'
archiveName 'android_source.zip'
destinationDir(file(binDir))
}
/**
* Master task used to coordinate the tasks defined above to generate the set of Godot templates.
*/
task generateGodotTemplates(type: GradleBuild) {
// We exclude these gradle tasks so we can run the scons command manually.
for (String buildType : supportedTargets.keySet()) {
startParameter.excludedTaskNames += ":lib:" + getSconsTaskName(buildType)
}
tasks = []
// Only build the apks and aar files for which we have native shared libraries.
for (String target : supportedTargets.keySet()) {
File targetLibs = new File("lib/libs/" + target)
if (targetLibs != null && targetLibs.isDirectory()) {
File[] targetLibsContents = targetLibs.listFiles()
if (targetLibsContents != null && targetLibsContents.length > 0) {
// Copy the generated aar library files to the custom build directory.
tasks += "copy" + target.capitalize() + "AAR"
// Copy the prebuilt binary templates to the bin directory.
tasks += "copy" + target.capitalize() + "BinaryToBin"
}
}
}
finalizedBy 'zipCustomBuild'
}
/**
* Clean the generated artifacts.
*/
task cleanGodotTemplates(type: Delete) {
// Delete the generated native libs
delete("lib/libs")
// Delete the library generated AAR files
delete("lib/build/outputs/aar")
// Delete the app libs directory contents
delete("app/libs")
// Delete the generated binary apks
delete("app/build/outputs/apk")
// Delete the Godot templates in the Godot bin directory
delete("$binDir/android_debug.apk")
delete("$binDir/android_release.apk")
delete("$binDir/android_source.zip")
}