Re-architecture of the Godot Android plugin.

This commit is contained in:
fhuya
2019-10-18 09:59:04 -07:00
parent 60ea8aea98
commit f097defba1
28 changed files with 1085 additions and 636 deletions

View File

@@ -65,10 +65,10 @@ task copyReleaseBinaryToBin(type: Copy) {
}
/**
* Copy the Godot android library archive debug file into the app debug libs directory.
* Copy the Godot android library archive debug file into the app module debug libs directory.
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyDebugAAR(type: Copy) {
task copyDebugAARToAppModule(type: Copy) {
dependsOn ':lib:assembleDebug'
from('lib/build/outputs/aar')
into('app/libs/debug')
@@ -76,16 +76,45 @@ task copyDebugAAR(type: Copy) {
}
/**
* Copy the Godot android library archive release file into the app release libs directory.
* Copy the Godot android library archive debug file into the root bin directory.
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyReleaseAAR(type: Copy) {
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) {
dependsOn ':lib:assembleRelease'
from('lib/build/outputs/aar')
into('app/libs/release')
include('godot-lib.release.aar')
}
task copyGodotPaymentPluginToAppModule(type: Copy) {
dependsOn ':plugins:godotpayment:assembleRelease'
from('plugins/godotpayment/build/outputs/aar')
into('app/libs/plugins')
include('GodotPayment.release.aar')
}
/**
* 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')
}
/**
* 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'.
@@ -111,19 +140,24 @@ task generateGodotTemplates(type: GradleBuild) {
startParameter.excludedTaskNames += ":lib:" + getSconsTaskName(buildType)
}
tasks = []
tasks = ["copyGodotPaymentPluginToAppModule"]
// 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"
}
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.")
}
}
@@ -140,6 +174,12 @@ task cleanGodotTemplates(type: Delete) {
// Delete the library generated AAR files
delete("lib/build/outputs/aar")
// Delete the godotpayment libs directory contents
delete("plugins/godotpayment/libs")
// Delete the generated godotpayment aar
delete("plugins/godotpayment/build/outputs/aar")
// Delete the app libs directory contents
delete("app/libs")
@@ -150,4 +190,6 @@ task cleanGodotTemplates(type: Delete) {
delete("$binDir/android_debug.apk")
delete("$binDir/android_release.apk")
delete("$binDir/android_source.zip")
delete("$binDir/godot-lib.debug.aar")
delete("$binDir/godot-lib.release.aar")
}