// file: Android/gradle/sasedev-assets.gradle // version: 2 abstract class StageSasedevAssetsTask extends DefaultTask { @InputDirectory abstract DirectoryProperty getCommonAssetsDirectory() @InputDirectory abstract DirectoryProperty getGameAssetsDirectory() @OutputDirectory abstract DirectoryProperty getOutputDirectory() @TaskAction void stageAssets() { def output = outputDirectory.get().asFile project.delete(output) project.copy { from(commonAssetsDirectory) into(new File(output, "common")) } project.copy { from(gameAssetsDirectory) into(new File(output, "game")) } } } androidComponents { onVariants(selector().all()) { variant -> def capitalizedVariantName = variant.name.substring(0, 1).toUpperCase() + variant.name.substring(1) def stageTask = tasks.register("stage${capitalizedVariantName}SasedevAssets", StageSasedevAssetsTask) { commonAssetsDirectory.set(rootProject.layout.projectDirectory.dir("../assets/common")) gameAssetsDirectory.set(rootProject.layout.projectDirectory.dir("../assets/${project.ext.sasedevGameAssetDirectory}")) outputDirectory.set(layout.buildDirectory.dir("generated/sasedevAssets/${variant.name}")) } variant.sources.assets.addGeneratedSourceDirectory(stageTask) { task -> task.outputDirectory } } }