buildscript { repositories { maven { url '../../../../out/host/gradle/repo' } } dependencies { classpath 'com.android.tools.build:gradle:0.7.0-SNAPSHOT' } } apply plugin: 'android' android { compileSdkVersion 15 buildToolsVersion "18.0.1" } public class GenerateCode extends DefaultTask { @Input String value @OutputFile File outputFile @TaskAction void taskAction() { getOutputFile().text = "package com.custom;\n" + "public class Foo {\n" + " public static String getBuildDate() { return \"${getValue()}\"; }\n" + "}\n"; } } android.applicationVariants.all { variant -> // create a task that generates a java class File sourceFolder = file("${buildDir}/customCode/${variant.dirName}") def javaGenerationTask = tasks.create(name: "generatedCodeFor${variant.name.capitalize()}", type: GenerateCode) { value new Date().format("yyyy-MM-dd'T'HH:mm'Z'", TimeZone.getTimeZone("UTC")) outputFile file("${sourceFolder.absolutePath}/com/custom/Foo.java") } variant.registerJavaGeneratingTask(javaGenerationTask, sourceFolder) }