aboutsummaryrefslogtreecommitdiff
path: root/gradle/src
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-11-05 15:22:34 -0800
committerXavier Ducrohet <xav@android.com>2012-11-09 11:20:08 -0800
commit3aefe028a57edc41ada24f5cc5a07de881fc7f93 (patch)
tree1329218e1171f4d8ff85546121de8829f9ee3fb8 /gradle/src
parentf6d881b932302bbdd4347a71bf58deda816c99b9 (diff)
downloadbuild-3aefe028a57edc41ada24f5cc5a07de881fc7f93.tar.gz
Continue support for build variant API.
Change-Id: Iec8b33ae0410932aca14ef75f56afe8aff01efdf
Diffstat (limited to 'gradle/src')
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AndroidSourceDirectory.java8
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AndroidSourceFile.java8
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AndroidSourceSet.groovy91
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy21
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy21
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BaseExtension.groovy23
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy114
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BuildVariant.groovy57
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy47
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/ApplicationVariant.groovy30
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/DefaultBuildVariant.groovy55
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/AidlCompileTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/CompileAidlTask.groovy)10
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/AndroidDependencyTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/AndroidDependencyTask.groovy)2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/DexTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/DexTask.groovy)9
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/GenerateBuildConfigTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfigTask.groovy)10
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/InstallTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/InstallTask.groovy)2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PackageApplicationTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplicationTask.groovy)24
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PrepareDependenciesTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/PrepareDependenciesTask.groovy)3
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PrepareLibraryTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/PrepareLibraryTask.groovy)2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessImagesTask.groovy31
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessManifestTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessManifestTask.groovy)6
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessResourcesTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessResourcesTask.groovy)27
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessTestManifestTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessTestManifestTask.groovy)6
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/RunTestsTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/RunTestsTask.groovy)3
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/UninstallTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/UninstallTask.groovy)3
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ZipAlignTask.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/ZipAlignTask.groovy)13
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/AidlCompile.groovy28
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/Dex.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/internal/tasks/BaseManifestTask.groovy)9
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy25
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy39
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessImages.groovy (renamed from gradle/src/main/groovy/com/android/build/gradle/tasks/CrunchResourcesTask.groovy)12
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessManifest.groovy31
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessResources.groovy45
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/ZipAlign.groovy28
-rw-r--r--gradle/src/test/groovy/com/android/build/gradle/AppPluginDslTest.groovy36
-rw-r--r--gradle/src/test/groovy/com/android/build/gradle/LibraryPluginDslTest.groovy122
37 files changed, 719 insertions, 286 deletions
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceDirectory.java b/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceDirectory.java
index 45fc214..8219421 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceDirectory.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceDirectory.java
@@ -29,9 +29,11 @@ public interface AndroidSourceDirectory extends SourceDirectory {
String getName();
/**
- * Sets the location of the directory
- * @param o
+ * Sets the location of the directory.
+ *
+ * @param srcPath The source directory. This is evaluated as for
+ * {@link org.gradle.api.Project#file(Object)}
* @return the AndroidSourceDirectory object
*/
- AndroidSourceDirectory srcDir(java.lang.Object o);
+ AndroidSourceDirectory srcDir(Object srcPath);
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceFile.java b/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceFile.java
index e3a0208..4f5fd35 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceFile.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceFile.java
@@ -35,9 +35,11 @@ public interface AndroidSourceFile {
File getFile();
/**
- * Sets the location of the file
- * @param o
+ * Sets the location of the file.
+ *
+ * @param srcPath The source directory. This is evaluated as for
+ * {@link org.gradle.api.Project#file(Object)}
* @return the AndroidSourceFile object
*/
- AndroidSourceFile srcFile(java.lang.Object o);
+ AndroidSourceFile srcFile(Object srcPath);
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceSet.groovy b/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceSet.groovy
index c9c81b1..5864c34 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceSet.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/AndroidSourceSet.groovy
@@ -95,22 +95,111 @@ public interface AndroidSourceSet {
*/
String getPackageConfigurationName();
+ /**
+ * The Android Manifest file for this source set.
+ *
+ * @return the manifest. Never returns null.
+ */
AndroidSourceFile getManifest();
+
+ /**
+ * Configures the location of the Android Manifest for this set.
+ *
+ * <p>The given closure is used to configure the {@link AndroidSourceFile} which contains the
+ * manifest.
+ *
+ * @param configureClosure The closure to use to configure the Android Manifest.
+ * @return this
+ */
AndroidSourceSet manifest(Closure configureClosure);
+ /**
+ * The Android Resources directory for this source set.
+ *
+ * @return the resources. Never returns null.
+ */
AndroidSourceDirectory getRes();
+
+ /**
+ * Configures the location of the Android Resources for this set.
+ *
+ * <p>The given closure is used to configure the {@link AndroidSourceDirectory} which contains
+ * the resources.
+ *
+ * @param configureClosure The closure to use to configure the Resources.
+ * @return this
+ */
AndroidSourceSet res(Closure configureClosure);
+ /**
+ * The Android Assets directory for this source set.
+ *
+ * @return the assets. Never returns null.
+ */
AndroidSourceDirectory getAssets();
+
+ /**
+ * Configures the location of the Android Assets for this set.
+ *
+ * <p>The given closure is used to configure the {@link AndroidSourceDirectory} which contains
+ * the assets.
+ *
+ * @param configureClosure The closure to use to configure the Assets.
+ * @return this
+ */
AndroidSourceSet assets(Closure configureClosure);
+ /**
+ * The Android AIDL source directory for this source set.
+ *
+ * @return the source. Never returns null.
+ */
AndroidSourceDirectory getAidl();
+
+ /**
+ * Configures the location of the Android AIDL source for this set.
+ *
+ * <p>The given closure is used to configure the {@link AndroidSourceDirectory} which contains
+ * the AIDL source.
+ *
+ * @param configureClosure The closure to use to configure the AIDL source.
+ * @return this
+ */
AndroidSourceSet aidl(Closure configureClosure);
+ /**
+ * The Android Renderscript source directory for this source set.
+ *
+ * @return the source. Never returns null.
+ */
AndroidSourceDirectory getRenderscript();
+
+ /**
+ * Configures the location of the Android Renderscript source for this set.
+ *
+ * <p>The given closure is used to configure the {@link AndroidSourceDirectory} which contains
+ * the Renderscript source.
+ *
+ * @param configureClosure The closure to use to configure the Renderscript source.
+ * @return this
+ */
AndroidSourceSet renderscript(Closure configureClosure);
+ /**
+ * The Android JNI source directory for this source set.
+ *
+ * @return the source. Never returns null.
+ */
AndroidSourceDirectory getJni();
- AndroidSourceSet jni(Closure configureClosure);
+ /**
+ * Configures the location of the Android JNI source for this set.
+ *
+ * <p>The given closure is used to configure the {@link AndroidSourceDirectory} which contains
+ * the JNI source.
+ *
+ * @param configureClosure The closure to use to configure the JNI source.
+ * @return this
+ */
+ AndroidSourceSet jni(Closure configureClosure);
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy b/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy
index 197c6e8..db43f04 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/AppExtension.groovy
@@ -19,7 +19,6 @@ import com.android.builder.BuildType
import com.android.builder.ProductFlavor
import org.gradle.api.Action
import org.gradle.api.NamedDomainObjectContainer
-import org.gradle.api.internal.DefaultDomainObjectSet
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.internal.reflect.Instantiator
@@ -27,23 +26,17 @@ import org.gradle.internal.reflect.Instantiator
* Extension for 'application' project.
*/
public class AppExtension extends BaseExtension {
- private final AppPlugin appPlugin
final NamedDomainObjectContainer<ProductFlavor> productFlavors
final NamedDomainObjectContainer<BuildType> buildTypes
- private final DefaultDomainObjectSet<BuildVariant> buildVariants =
- new DefaultDomainObjectSet<BuildVariant>(BuildVariant.class)
- private final DefaultDomainObjectSet<BuildVariant> testBuildVariants =
- new DefaultDomainObjectSet<BuildVariant>(BuildVariant.class)
List<String> flavorGroupList
String testBuildType = "debug"
- AppExtension(AppPlugin appPlugin, ProjectInternal project, Instantiator instantiator,
+ AppExtension(AppPlugin plugin, ProjectInternal project, Instantiator instantiator,
NamedDomainObjectContainer<BuildType> buildTypes,
NamedDomainObjectContainer<ProductFlavor> productFlavors) {
- super(project, instantiator)
- this.appPlugin = appPlugin
+ super(plugin, project, instantiator)
this.buildTypes = buildTypes
this.productFlavors = productFlavors
}
@@ -59,14 +52,4 @@ public class AppExtension extends BaseExtension {
public void flavorGroups(String... groups) {
flavorGroupList = Arrays.asList(groups)
}
-
- public DefaultDomainObjectSet<BuildVariant> getBuildVariants() {
- appPlugin.createAndroidTasks()
- return buildVariants
- }
-
- public DefaultDomainObjectSet<BuildVariant> getTestBuildVariants() {
- appPlugin.createAndroidTasks()
- return testBuildVariants
- }
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
index 30c57b5..dc5c249 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
@@ -45,8 +45,6 @@ import javax.inject.Inject
class AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradle.api.Plugin<Project> {
static PluginHolder pluginHolder;
- private boolean hasCreatedTasks = false
-
final Map<String, BuildTypeData> buildTypes = [:]
final Map<String, ProductFlavorData<GroupableProductFlavor>> productFlavors = [:]
@@ -73,6 +71,7 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradl
extension = project.extensions.create('android', AppExtension,
this, (ProjectInternal) project, instantiator,
buildTypeContainer, productFlavorContainer)
+ extension.
setDefaultConfig(extension.defaultConfig, extension.sourceSetsContainer)
buildTypeContainer.whenObjectAdded { BuildType buildType ->
@@ -93,10 +92,6 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradl
throw new UnsupportedOperationException(
"Removing product flavors is not implemented yet.")
}
-
- project.afterEvaluate {
- createAndroidTasks()
- }
}
private void addBuildType(BuildType buildType) {
@@ -134,12 +129,8 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradl
productFlavors[productFlavor.name] = productFlavorData
}
- protected void createAndroidTasks() {
- if (hasCreatedTasks) {
- return
- }
- hasCreatedTasks = true
-
+ @Override
+ protected void doCreateAndroidTasks() {
// resolve dependencies for all config
List<ConfigurationDependencies> dependencies = []
dependencies.addAll(buildTypes.values())
@@ -183,8 +174,6 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradl
createTasksForMultiFlavoredBuilds(array, 0, map)
}
}
-
- createDependencyReportTask()
}
private createTasksForMultiFlavoredBuilds(ProductFlavorData[] datas, int i,
@@ -432,7 +421,7 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradl
createProcessManifestTask(variant, "manifests")
// Add a task to crunch resource files
- createCrunchResTask(variant)
+ createProcessImagesTask(variant)
// Add a task to create the BuildConfig class
createBuildConfigTask(variant)
@@ -454,7 +443,7 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradl
}
@Override
- String getTarget() {
+ protected String getTarget() {
return extension.target;
}
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BaseExtension.groovy b/gradle/src/main/groovy/com/android/build/gradle/BaseExtension.groovy
index d70287a..a26da87 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BaseExtension.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BaseExtension.groovy
@@ -25,6 +25,7 @@ import org.gradle.api.Action
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ConfigurationContainer
+import org.gradle.api.internal.DefaultDomainObjectSet
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.internal.reflect.Instantiator
@@ -39,13 +40,21 @@ public abstract class BaseExtension {
final AaptOptionsImpl aaptOptions
final DexOptionsImpl dexOptions
+ private final BasePlugin plugin
+ private final DefaultDomainObjectSet<BuildVariant> buildVariants =
+ new DefaultDomainObjectSet<BuildVariant>(BuildVariant.class)
+ private final DefaultDomainObjectSet<BuildVariant> testBuildVariants =
+ new DefaultDomainObjectSet<BuildVariant>(BuildVariant.class)
+
/**
* The source sets container.
*/
final NamedDomainObjectContainer<AndroidSourceSet> sourceSetsContainer
- BaseExtension(ProjectInternal project, Instantiator instantiator) {
- defaultConfig = instantiator.newInstance(ProductFlavorDsl.class, "main")
+ BaseExtension(BasePlugin plugin, ProjectInternal project, Instantiator instantiator) {
+ this.plugin = plugin
+
+ defaultConfig = instantiator.newInstance(ProductFlavorDsl.class, ProductFlavor.MAIN)
aaptOptions = instantiator.newInstance(AaptOptionsImpl.class)
dexOptions = instantiator.newInstance(DexOptionsImpl.class)
@@ -103,4 +112,14 @@ public abstract class BaseExtension {
void dexOptions(Action<DexOptionsImpl> action) {
action.execute(dexOptions)
}
+
+ public DefaultDomainObjectSet<BuildVariant> getBuildVariants() {
+ plugin.createAndroidTasks()
+ return buildVariants
+ }
+
+ public DefaultDomainObjectSet<BuildVariant> getTestBuildVariants() {
+ plugin.createAndroidTasks()
+ return testBuildVariants
+ }
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
index 2dde88c..e285403 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
@@ -26,21 +26,21 @@ import com.android.build.gradle.internal.ProductFlavorData
import com.android.build.gradle.internal.ProductionAppVariant
import com.android.build.gradle.internal.SymbolFileProviderImpl
import com.android.build.gradle.internal.TestAppVariant
-import com.android.build.gradle.tasks.AndroidDependencyTask
-import com.android.build.gradle.tasks.CompileAidlTask
-import com.android.build.gradle.tasks.CrunchResourcesTask
-import com.android.build.gradle.tasks.DexTask
-import com.android.build.gradle.tasks.GenerateBuildConfigTask
-import com.android.build.gradle.tasks.InstallTask
-import com.android.build.gradle.tasks.PackageApplicationTask
-import com.android.build.gradle.tasks.PrepareDependenciesTask
-import com.android.build.gradle.tasks.PrepareLibraryTask
-import com.android.build.gradle.tasks.ProcessManifestTask
-import com.android.build.gradle.tasks.ProcessResourcesTask
-import com.android.build.gradle.tasks.ProcessTestManifestTask
-import com.android.build.gradle.tasks.RunTestsTask
-import com.android.build.gradle.tasks.UninstallTask
-import com.android.build.gradle.tasks.ZipAlignTask
+import com.android.build.gradle.internal.tasks.AidlCompileTask
+import com.android.build.gradle.internal.tasks.AndroidDependencyTask
+import com.android.build.gradle.internal.tasks.DexTask
+import com.android.build.gradle.internal.tasks.GenerateBuildConfigTask
+import com.android.build.gradle.internal.tasks.InstallTask
+import com.android.build.gradle.internal.tasks.PackageApplicationTask
+import com.android.build.gradle.internal.tasks.PrepareDependenciesTask
+import com.android.build.gradle.internal.tasks.PrepareLibraryTask
+import com.android.build.gradle.internal.tasks.ProcessImagesTask
+import com.android.build.gradle.internal.tasks.ProcessManifestTask
+import com.android.build.gradle.internal.tasks.ProcessResourcesTask
+import com.android.build.gradle.internal.tasks.ProcessTestManifestTask
+import com.android.build.gradle.internal.tasks.RunTestsTask
+import com.android.build.gradle.internal.tasks.UninstallTask
+import com.android.build.gradle.internal.tasks.ZipAlignTask
import com.android.builder.AndroidBuilder
import com.android.builder.AndroidDependency
import com.android.builder.BuilderConstants
@@ -97,6 +97,8 @@ public abstract class BasePlugin {
private DefaultSdkParser androidSdkParser
private LoggerWrapper loggerWrapper
+ private boolean hasCreatedTasks = false
+
private ProductFlavorData<ProductFlavor> defaultConfigData
protected AndroidSourceSet mainSourceSet
protected AndroidSourceSet testSourceSet
@@ -104,13 +106,14 @@ public abstract class BasePlugin {
protected Task uninstallAll
protected Task assembleTest
- abstract String getTarget()
+ protected abstract String getTarget()
protected BasePlugin(Instantiator instantiator) {
this.instantiator = instantiator
}
- protected abstract BaseExtension getExtension();
+ protected abstract BaseExtension getExtension()
+ protected abstract void doCreateAndroidTasks()
protected void apply(Project project) {
this.project = project
@@ -124,11 +127,25 @@ public abstract class BasePlugin {
uninstallAll = project.tasks.add("uninstallAll")
uninstallAll.description = "Uninstall all applications."
uninstallAll.group = INSTALL_GROUP
+
+ project.afterEvaluate {
+ createAndroidTasks()
+ }
+ }
+
+ final void createAndroidTasks() {
+ if (hasCreatedTasks) {
+ return
+ }
+ hasCreatedTasks = true
+
+ doCreateAndroidTasks()
+ createDependencyReportTask()
}
protected setDefaultConfig(ProductFlavor defaultConfig,
NamedDomainObjectContainer<AndroidSourceSet> sourceSets) {
- mainSourceSet = sourceSets.create("main")
+ mainSourceSet = sourceSets.create(defaultConfig.name)
testSourceSet = sourceSets.create("test")
defaultConfigData = new ProductFlavorData<ProductFlavor>(defaultConfig, mainSourceSet,
@@ -286,15 +303,15 @@ public abstract class BasePlugin {
}
}
- protected void createCrunchResTask(ApplicationVariant variant) {
- def crunchTask = project.tasks.add("crunch${variant.name}Res", CrunchResourcesTask)
- variant.crunchResourcesTask = crunchTask
+ protected void createProcessImagesTask(ApplicationVariant variant) {
+ def processImagesTask = project.tasks.add("process${variant.name}Images", ProcessImagesTask)
+ variant.processImagesTask = processImagesTask
- crunchTask.plugin = this
- crunchTask.variant = variant
+ processImagesTask.plugin = this
+ processImagesTask.variant = variant
- crunchTask.conventionMapping.resDirectories = { variant.config.resourceInputs }
- crunchTask.conventionMapping.outputDir = {
+ processImagesTask.conventionMapping.resDirectories = { variant.config.resourceInputs }
+ processImagesTask.conventionMapping.outputDir = {
project.file("$project.buildDir/res/$variant.dirName")
}
}
@@ -343,14 +360,14 @@ public abstract class BasePlugin {
variant.processManifestTask.outManifest
}
- if (variant.crunchResourcesTask != null) {
- processResources.dependsOn variant.crunchResourcesTask
+ if (variant.processImagesTask != null) {
+ processResources.dependsOn variant.processImagesTask
processResources.conventionMapping.preprocessResDir = {
- variant.crunchResourcesTask.outputDir
+ variant.processImagesTask.outputDir
}
processResources.conventionMapping.resDirectories = {
- variant.crunchResourcesTask.resDirectories
+ variant.processImagesTask.resDirectories
}
} else {
processResources.conventionMapping.resDirectories = { config.resourceInputs }
@@ -419,9 +436,9 @@ public abstract class BasePlugin {
protected void createAidlTask(ApplicationVariant variant) {
VariantConfiguration config = variant.config
- def compileTask = project.tasks.add("compile${variant.name}Aidl", CompileAidlTask)
- variant.compileAidlTask = compileTask
- variant.compileAidlTask.dependsOn variant.prepareDependenciesTask
+ def compileTask = project.tasks.add("compile${variant.name}Aidl", AidlCompileTask)
+ variant.aidlCompileTask = compileTask
+ variant.aidlCompileTask.dependsOn variant.prepareDependenciesTask
compileTask.plugin = this
compileTask.variant = variant
@@ -437,8 +454,8 @@ public abstract class BasePlugin {
protected void createCompileTask(ApplicationVariant variant,
ApplicationVariant testedVariant) {
def compileTask = project.tasks.add("compile${variant.name}", JavaCompile)
- variant.compileTask = compileTask
- compileTask.dependsOn variant.processResourcesTask, variant.generateBuildConfigTask, variant.compileAidlTask
+ variant.javaCompileTask = compileTask
+ compileTask.dependsOn variant.processResourcesTask, variant.generateBuildConfigTask, variant.aidlCompileTask
VariantConfiguration config = variant.config
@@ -456,7 +473,7 @@ public abstract class BasePlugin {
compileTask.source = sourceList.toArray()
if (testedVariant != null) {
- compileTask.classpath = project.files({config.compileClasspath}) + testedVariant.compileTask.classpath + testedVariant.compileTask.outputs.files
+ compileTask.classpath = project.files({config.compileClasspath}) + testedVariant.javaCompileTask.classpath + testedVariant.javaCompileTask.outputs.files
} else {
compileTask.classpath = project.files({config.compileClasspath})
}
@@ -504,13 +521,13 @@ public abstract class BasePlugin {
createProcessTestManifestTask(variant, "manifests")
// Add a task to crunch resource files
- createCrunchResTask(variant)
+ createProcessImagesTask(variant)
if (testedVariant.config.type == VariantConfiguration.Type.LIBRARY) {
// in this case the tested library must be fully built before test can be built!
if (testedVariant.assembleTask != null) {
variant.processManifestTask.dependsOn testedVariant.assembleTask
- variant.crunchResourcesTask.dependsOn testedVariant.assembleTask
+ variant.processImagesTask.dependsOn testedVariant.assembleTask
}
}
@@ -570,13 +587,13 @@ public abstract class BasePlugin {
def dexTaskName = "dex${variant.name}"
def dexTask = project.tasks.add(dexTaskName, DexTask)
variant.dexTask = dexTask
- dexTask.dependsOn variant.compileTask
+ dexTask.dependsOn variant.javaCompileTask
dexTask.plugin = this
dexTask.variant = variant
dexTask.conventionMapping.libraries = { project.files({ variant.config.packagedJars }) }
- dexTask.conventionMapping.sourceFiles = { variant.compileTask.outputs.files } // this creates a dependency
+ dexTask.conventionMapping.sourceFiles = { variant.javaCompileTask.outputs.files } // this creates a dependency
dexTask.conventionMapping.outputFile = {
project.file(
"${project.buildDir}/libs/${project.archivesBaseName}-${variant.baseName}.dex")
@@ -623,20 +640,25 @@ public abstract class BasePlugin {
}
def appTask = packageApp
+ variant.outputFile = project.file("$project.buildDir/apk/${apkName}")
if (signedApk) {
if (variant.zipAlign) {
// Add a task to zip align application package
- def alignApp = project.tasks.add("zipalign${variant.name}", ZipAlignTask)
- alignApp.dependsOn packageApp
- alignApp.conventionMapping.inputFile = { packageApp.outputFile }
- alignApp.conventionMapping.outputFile = {
+ def zipAlignTask = project.tasks.add("zipalign${variant.name}", ZipAlignTask)
+ variant.zipAlignTask = zipAlignTask
+
+ zipAlignTask.dependsOn packageApp
+ zipAlignTask.conventionMapping.inputFile = { packageApp.outputFile }
+ zipAlignTask.conventionMapping.outputFile = {
project.file(
"$project.buildDir/apk/${project.archivesBaseName}-${variant.baseName}.apk")
}
- alignApp.sdkDir = sdkDir
+ zipAlignTask.sdkDir = sdkDir
- appTask = alignApp
+ appTask = zipAlignTask
+ variant.outputFile = project.file(
+ "$project.buildDir/apk/${project.archivesBaseName}-${variant.baseName}.apk")
}
// Add a task to install the application package
@@ -670,7 +692,7 @@ public abstract class BasePlugin {
uninstallAll.dependsOn uninstallTask
}
- protected void createDependencyReportTask() {
+ private void createDependencyReportTask() {
def androidDependencyTask = project.tasks.add("androidDependencies", AndroidDependencyTask)
androidDependencyTask.setDescription("Displays the Android dependencies of the project")
androidDependencyTask.setVariants(variants)
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BuildVariant.groovy b/gradle/src/main/groovy/com/android/build/gradle/BuildVariant.groovy
index 81b839b..2fe7531 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BuildVariant.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BuildVariant.groovy
@@ -18,14 +18,14 @@ package com.android.build.gradle
import com.android.annotations.NonNull
import com.android.annotations.Nullable
-import com.android.build.gradle.internal.tasks.BaseManifestTask
-import com.android.build.gradle.tasks.CompileAidlTask
-import com.android.build.gradle.tasks.CrunchResourcesTask
-import com.android.build.gradle.tasks.DexTask
-import com.android.build.gradle.tasks.GenerateBuildConfigTask
-import com.android.build.gradle.tasks.PackageApplicationTask
-import com.android.build.gradle.tasks.ProcessResourcesTask
-import com.android.build.gradle.tasks.RunTestsTask
+import com.android.build.gradle.tasks.AidlCompile
+import com.android.build.gradle.tasks.Dex
+import com.android.build.gradle.tasks.GenerateBuildConfig
+import com.android.build.gradle.tasks.PackageApplication
+import com.android.build.gradle.tasks.ProcessImages
+import com.android.build.gradle.tasks.ProcessManifest
+import com.android.build.gradle.tasks.ProcessResources
+import com.android.build.gradle.tasks.ZipAlign
import com.android.builder.BuildType
import com.android.builder.ProductFlavor
import org.gradle.api.Task
@@ -89,6 +89,15 @@ public interface BuildVariant {
ProductFlavor getMergedConfig()
/**
+ * Returns the output file for this build variants. Depending on the configuration, this could
+ * be an apk (regular and test project) or a bundled library (library project).
+ *
+ * If it's an apk, it could be signed, or not; zip-aligned, or not.
+ */
+ @NonNull
+ File getOutputFile()
+
+ /**
* Returns the build variant that will test this build variant.
*
* Will return null if this build variant is a test build already.
@@ -100,37 +109,37 @@ public interface BuildVariant {
* Returns the Manifest processing task.
*/
@NonNull
- BaseManifestTask getProcessManifestTask()
+ ProcessManifest getProcessManifest()
/**
* Returns the AIDL compilation task.
*/
@NonNull
- CompileAidlTask getCompileAidlTask()
+ AidlCompile getAidlCompile()
/**
- * Returns the Resource crunching task.
+ * Returns the image processing task.
*/
@Nullable
- CrunchResourcesTask getCrunchResourcesTask()
+ ProcessImages getProcessImages()
/**
* Returns the Android Resources processing task.
*/
@NonNull
- ProcessResourcesTask getProcessResourcesTask()
+ ProcessResources getProcessResources()
/**
* Returns the BuildConfig generation task.
*/
@Nullable
- GenerateBuildConfigTask getGenerateBuildConfigTask()
+ GenerateBuildConfig getGenerateBuildConfig()
/**
* Returns the Java Compilation task.
*/
@NonNull
- JavaCompile getCompileTask()
+ JavaCompile getJavaCompile()
/**
* Returns the Java resource processing task.
@@ -142,19 +151,25 @@ public interface BuildVariant {
* Returns the Dex task.
*/
@Nullable
- DexTask getDexTask()
+ Dex getDex()
/**
* Returns the APK packaging task.
*/
@Nullable
- PackageApplicationTask getPackageApplicationTask()
+ PackageApplication getPackageApplication()
+
+ /**
+ * Retursn the Zip align task.
+ */
+ @Nullable
+ ZipAlign getZipAlign()
/**
* Returns the assemble task.
*/
@Nullable
- Task getAssembleTask()
+ Task getAssemble()
/**
* Returns the installation task.
@@ -162,7 +177,7 @@ public interface BuildVariant {
* Even for variant for regular project, this can be null if the app cannot be signed.
*/
@Nullable
- Task getInstallTask()
+ Task getInstall()
/**
* Returns the uinstallation task.
@@ -171,12 +186,12 @@ public interface BuildVariant {
* signing isn't setup.
*/
@Nullable
- Task getUninstallTask()
+ Task getUninstall()
/**
* Returns the task to run the tests.
* Only valid for test project.
*/
@Nullable
- RunTestsTask getRunTestsTask()
+ Task getRunTests()
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy b/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy
index 51f2bcb..9027897 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/LibraryExtension.groovy
@@ -29,8 +29,8 @@ public class LibraryExtension extends BaseExtension {
final BuildType debug
final BuildType release
- LibraryExtension(ProjectInternal project, Instantiator instantiator) {
- super(project, instantiator)
+ LibraryExtension(BasePlugin plugin, ProjectInternal project, Instantiator instantiator) {
+ super(plugin, project, instantiator)
debug = instantiator.newInstance(BuildTypeDsl.class, BuildType.DEBUG)
release = instantiator.newInstance(BuildTypeDsl.class, BuildType.RELEASE)
diff --git a/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy
index e653460..8049a41 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy
@@ -17,6 +17,7 @@ package com.android.build.gradle
import com.android.build.gradle.internal.BuildTypeData
import com.android.build.gradle.internal.ConfigurationDependencies
+import com.android.build.gradle.internal.DefaultBuildVariant
import com.android.build.gradle.internal.ProductFlavorData
import com.android.build.gradle.internal.ProductionAppVariant
import com.android.build.gradle.internal.TestAppVariant
@@ -59,7 +60,7 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
super.apply(project)
extension = project.extensions.create('android', LibraryExtension,
- (ProjectInternal) project, instantiator)
+ this, (ProjectInternal) project, instantiator)
setDefaultConfig(extension.defaultConfig, extension.sourceSetsContainer)
// create the source sets for the build type.
@@ -73,10 +74,6 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
project.tasks.assemble.dependsOn releaseBuildTypeData.assembleTask
createConfigurations()
-
- project.afterEvaluate {
- createAndroidTasks()
- }
}
void createConfigurations() {
@@ -95,7 +92,8 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
}
}
- void createAndroidTasks() {
+ @Override
+ protected void doCreateAndroidTasks() {
// resolve dependencies for all config
List<ConfigurationDependencies> dependencies = []
dependencies.add(debugBuildTypeData)
@@ -103,12 +101,25 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
resolveDependencies(dependencies)
ProductionAppVariant testedVariant = createLibraryTasks(debugBuildTypeData)
- createLibraryTasks(releaseBuildTypeData)
- createTestTasks(testedVariant)
- createDependencyReportTask()
+ ProductionAppVariant nonTestedVariant = createLibraryTasks(releaseBuildTypeData)
+ TestAppVariant testVariant = createTestTasks(testedVariant)
+
+ // add the not-tested build variant.
+ extension.buildVariants.add(
+ instantiator.newInstance(DefaultBuildVariant.class, nonTestedVariant))
+
+ // and add the test variant
+ DefaultBuildVariant testBuildVariant = instantiator.newInstance(
+ DefaultBuildVariant.class, testVariant)
+ extension.testBuildVariants.add(testBuildVariant)
+
+ // and finally the tested variant
+ extension.buildVariants.add(
+ instantiator.newInstance(DefaultBuildVariant.class,
+ testedVariant, testBuildVariant))
}
- ProductionAppVariant createLibraryTasks(BuildTypeData buildTypeData) {
+ private ProductionAppVariant createLibraryTasks(BuildTypeData buildTypeData) {
ProductFlavorData defaultConfigData = getDefaultConfigData();
List<ConfigurationDependencies> configDependencies = []
@@ -158,8 +169,8 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
// jar the classes.
Jar jar = project.tasks.add("package${buildTypeData.buildType.name.capitalize()}Jar", Jar);
- jar.dependsOn variant.compileTask, variant.processJavaResources
- jar.from(variant.compileTask.outputs);
+ jar.dependsOn variant.javaCompileTask, variant.processJavaResources
+ jar.from(variant.javaCompileTask.outputs);
jar.from(variant.processJavaResources.destinationDir)
jar.destinationDir = project.file("$project.buildDir/$DIR_BUNDLES/${variant.dirName}")
@@ -199,6 +210,8 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
}
bundle.from(project.file("$project.buildDir/$DIR_BUNDLES/${variant.dirName}"))
+ variant.outputFile = bundle.archivePath
+
project.artifacts.add(buildTypeData.buildType.name, bundle)
buildTypeData.assembleTask.dependsOn bundle
@@ -223,7 +236,7 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
return variant
}
- void createTestTasks(ProductionAppVariant testedVariant) {
+ private TestAppVariant createTestTasks(ProductionAppVariant testedVariant) {
ProductFlavorData defaultConfigData = getDefaultConfigData();
List<ConfigurationDependencies> configDependencies = []
@@ -249,14 +262,12 @@ public class LibraryPlugin extends BasePlugin implements Plugin<Project> {
def testVariant = new TestAppVariant(testVariantConfig,)
variants.add(testVariant)
createTestTasks(testVariant, testedVariant, configDependencies)
+
+ return testVariant
}
@Override
- String getTarget() {
+ protected String getTarget() {
return extension.target
}
-
- protected String getManifestOutDir() {
- return DIR_BUNDLES
- }
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/ApplicationVariant.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/ApplicationVariant.groovy
index 194fad1..5a1b114 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/ApplicationVariant.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/ApplicationVariant.groovy
@@ -16,15 +16,16 @@
package com.android.build.gradle.internal
import com.android.build.gradle.BasePlugin
-import com.android.build.gradle.internal.tasks.BaseManifestTask
-import com.android.build.gradle.tasks.CompileAidlTask
-import com.android.build.gradle.tasks.CrunchResourcesTask
-import com.android.build.gradle.tasks.DexTask
-import com.android.build.gradle.tasks.GenerateBuildConfigTask
-import com.android.build.gradle.tasks.PackageApplicationTask
-import com.android.build.gradle.tasks.PrepareDependenciesTask
-import com.android.build.gradle.tasks.ProcessResourcesTask
-import com.android.build.gradle.tasks.RunTestsTask
+import com.android.build.gradle.internal.tasks.AidlCompileTask
+import com.android.build.gradle.internal.tasks.DexTask
+import com.android.build.gradle.internal.tasks.GenerateBuildConfigTask
+import com.android.build.gradle.internal.tasks.PackageApplicationTask
+import com.android.build.gradle.internal.tasks.PrepareDependenciesTask
+import com.android.build.gradle.internal.tasks.ProcessImagesTask
+import com.android.build.gradle.internal.tasks.ProcessResourcesTask
+import com.android.build.gradle.internal.tasks.RunTestsTask
+import com.android.build.gradle.internal.tasks.ZipAlignTask
+import com.android.build.gradle.tasks.ProcessManifest
import com.android.builder.AndroidBuilder
import com.android.builder.ProductFlavor
import com.android.builder.VariantConfiguration
@@ -41,17 +42,20 @@ public abstract class ApplicationVariant {
PrepareDependenciesTask prepareDependenciesTask
- BaseManifestTask processManifestTask
- CompileAidlTask compileAidlTask
- CrunchResourcesTask crunchResourcesTask
+ ProcessManifest processManifestTask
+ AidlCompileTask aidlCompileTask
+ ProcessImagesTask processImagesTask
ProcessResourcesTask processResourcesTask
GenerateBuildConfigTask generateBuildConfigTask
- JavaCompile compileTask
+ JavaCompile javaCompileTask
Copy processJavaResources
DexTask dexTask
PackageApplicationTask packageApplicationTask
+ ZipAlignTask zipAlignTask
+
+ File outputFile
Task assembleTask
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/DefaultBuildVariant.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/DefaultBuildVariant.groovy
index e39fc7d..7157e80 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/DefaultBuildVariant.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/DefaultBuildVariant.groovy
@@ -16,14 +16,14 @@
package com.android.build.gradle.internal
import com.android.build.gradle.BuildVariant
-import com.android.build.gradle.internal.tasks.BaseManifestTask
-import com.android.build.gradle.tasks.CompileAidlTask
-import com.android.build.gradle.tasks.CrunchResourcesTask
-import com.android.build.gradle.tasks.DexTask
-import com.android.build.gradle.tasks.GenerateBuildConfigTask
-import com.android.build.gradle.tasks.PackageApplicationTask
-import com.android.build.gradle.tasks.ProcessResourcesTask
-import com.android.build.gradle.tasks.RunTestsTask
+import com.android.build.gradle.tasks.AidlCompile
+import com.android.build.gradle.tasks.Dex
+import com.android.build.gradle.tasks.GenerateBuildConfig
+import com.android.build.gradle.tasks.PackageApplication
+import com.android.build.gradle.tasks.ProcessImages
+import com.android.build.gradle.tasks.ProcessManifest
+import com.android.build.gradle.tasks.ProcessResources
+import com.android.build.gradle.tasks.ZipAlign
import com.android.builder.BuildType
import com.android.builder.ProductFlavor
import org.gradle.api.Task
@@ -81,38 +81,43 @@ public class DefaultBuildVariant implements BuildVariant {
}
@Override
+ File getOutputFile() {
+ return variant.outputFile
+ }
+
+ @Override
BuildVariant getTestVariant() {
return testVariant
}
@Override
- BaseManifestTask getProcessManifestTask() {
+ ProcessManifest getProcessManifest() {
return variant.processManifestTask
}
@Override
- CompileAidlTask getCompileAidlTask() {
- return variant.compileAidlTask
+ AidlCompile getAidlCompile() {
+ return variant.aidlCompileTask
}
@Override
- CrunchResourcesTask getCrunchResourcesTask() {
- return variant.crunchResourcesTask
+ ProcessImages getProcessImages() {
+ return variant.processImagesTask
}
@Override
- ProcessResourcesTask getProcessResourcesTask() {
+ ProcessResources getProcessResources() {
return variant.processResourcesTask
}
@Override
- GenerateBuildConfigTask getGenerateBuildConfigTask() {
+ GenerateBuildConfig getGenerateBuildConfig() {
return variant.generateBuildConfigTask
}
@Override
- JavaCompile getCompileTask() {
- return variant.compileTask
+ JavaCompile getJavaCompile() {
+ return variant.javaCompileTask
}
@Override
@@ -121,32 +126,36 @@ public class DefaultBuildVariant implements BuildVariant {
}
@Override
- DexTask getDexTask() {
+ Dex getDex() {
return variant.dexTask
}
@Override
- PackageApplicationTask getPackageApplicationTask() {
+ PackageApplication getPackageApplication() {
return variant.packageApplicationTask
}
+ ZipAlign getZipAlign() {
+ return variant.zipAlignTask
+ }
+
@Override
- Task getAssembleTask() {
+ Task getAssemble() {
return variant.assembleTask
}
@Override
- Task getInstallTask() {
+ Task getInstall() {
return variant.installTask
}
@Override
- Task getUninstallTask() {
+ Task getUninstall() {
return variant.uninstallTask
}
@Override
- RunTestsTask getRunTestsTask() {
+ Task getRunTests() {
return variant.runTestsTask
}
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/CompileAidlTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/AidlCompileTask.groovy
index e15739a..f65f9ba 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/CompileAidlTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/AidlCompileTask.groovy
@@ -14,16 +14,15 @@
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseTask
+import com.android.build.gradle.tasks.AidlCompile
import org.gradle.api.tasks.InputFiles
-import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
/**
*/
-public class CompileAidlTask extends BaseTask {
+public class AidlCompileTask extends AidlCompile {
@InputFiles
List<File> sourceDirs
@@ -31,9 +30,6 @@ public class CompileAidlTask extends BaseTask {
@InputFiles
List<File> importDirs
- @OutputDirectory
- File sourceOutputDir
-
@TaskAction
void generate() {
getBuilder().compileAidl(getSourceDirs(), getSourceOutputDir(), getImportDirs())
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/AndroidDependencyTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/AndroidDependencyTask.groovy
index 275286f..bb3f8c7 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/AndroidDependencyTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/AndroidDependencyTask.groovy
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
import com.android.build.gradle.internal.AndroidAsciiReportRenderer
import com.android.build.gradle.internal.ApplicationVariant
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/DexTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/DexTask.groovy
index 1128f8d..f62979a 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/DexTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/DexTask.groovy
@@ -13,18 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseTask
+import com.android.build.gradle.tasks.Dex
import com.android.builder.DexOptions
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Nested
-import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
-public class DexTask extends BaseTask {
- @OutputFile
- File outputFile
+public class DexTask extends Dex {
@InputFiles
Iterable<File> sourceFiles
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfigTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/GenerateBuildConfigTask.groovy
index 03ea974..e7bf2e6 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfigTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/GenerateBuildConfigTask.groovy
@@ -13,14 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseTask
+import com.android.build.gradle.tasks.GenerateBuildConfig
import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
-public class GenerateBuildConfigTask extends BaseTask {
+public class GenerateBuildConfigTask extends GenerateBuildConfig {
@Input
String packageName
@@ -31,9 +30,6 @@ public class GenerateBuildConfigTask extends BaseTask {
@Input
List<String> javaLines;
- @OutputDirectory
- File sourceOutputDir
-
@TaskAction
void generate() {
getBuilder().generateBuildConfig(
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/InstallTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/InstallTask.groovy
index 0b9dbdc..ec30f98 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/InstallTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/InstallTask.groovy
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplicationTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PackageApplicationTask.groovy
index 4a20b29..101f111 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplicationTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PackageApplicationTask.groovy
@@ -13,34 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseTask
+import com.android.build.gradle.tasks.PackageApplication
import com.android.builder.packaging.DuplicateFileException
import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.InputDirectory
-import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Optional
-import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
-public class PackageApplicationTask extends BaseTask {
- @InputFile
- File resourceFile
-
- @InputFile
- File dexFile
+public class PackageApplicationTask extends PackageApplication {
@InputFiles
List<File> packagedJars
- @InputDirectory @Optional
- File javaResourceDir
-
- @InputDirectory @Optional
- File jniDir
-
@Input
boolean debugSigned
@@ -59,10 +45,6 @@ public class PackageApplicationTask extends BaseTask {
@Input @Optional
String signingKeyPassword
- @OutputFile
- File outputFile
-
-
@TaskAction
void generate() {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/PrepareDependenciesTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PrepareDependenciesTask.groovy
index fb9c750..77f5182 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/PrepareDependenciesTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PrepareDependenciesTask.groovy
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
import com.android.build.gradle.internal.DependencyChecker
-import com.android.build.gradle.internal.tasks.BaseTask
import com.android.utils.Pair
import org.gradle.api.tasks.TaskAction
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/PrepareLibraryTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PrepareLibraryTask.groovy
index 672d093..e490a93 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/PrepareLibraryTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/PrepareLibraryTask.groovy
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputFile
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessImagesTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessImagesTask.groovy
new file mode 100644
index 0000000..5f0a261
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessImagesTask.groovy
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.build.gradle.internal.tasks
+
+import com.android.build.gradle.tasks.ProcessImages
+import org.gradle.api.tasks.InputFiles
+import org.gradle.api.tasks.TaskAction
+
+class ProcessImagesTask extends ProcessImages {
+
+ @InputFiles
+ Iterable<File> resDirectories
+
+ @TaskAction
+ void generate() {
+ getBuilder().processImages(getOutputDir().absolutePath, getResDirectories())
+ }
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessManifestTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessManifestTask.groovy
index f584207..c829a18 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessManifestTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessManifestTask.groovy
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseManifestTask
+import com.android.build.gradle.tasks.ProcessManifest
import com.android.builder.ManifestDependency
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
@@ -26,7 +26,7 @@ import org.gradle.api.tasks.TaskAction
/**
*/
-public class ProcessManifestTask extends BaseManifestTask {
+public class ProcessManifestTask extends ProcessManifest {
@InputFile
File mainManifest
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessResourcesTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessResourcesTask.groovy
index 69b4679..bb4d876 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessResourcesTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessResourcesTask.groovy
@@ -13,29 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
import com.android.build.gradle.internal.AaptOptionsImpl
-import com.android.build.gradle.internal.tasks.BaseTask
+import com.android.build.gradle.tasks.ProcessResources
import com.android.builder.SymbolFileProvider
import com.android.builder.VariantConfiguration
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputDirectory
-import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Nested
import org.gradle.api.tasks.Optional
-import org.gradle.api.tasks.OutputDirectory
-import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
-public class ProcessResourcesTask extends BaseTask {
-
- @InputFile
- File manifestFile
-
- @InputDirectory @Optional
- File preprocessResDir
+public class ProcessResourcesTask extends ProcessResources {
@InputFiles
Iterable<File> resDirectories
@@ -49,18 +40,6 @@ public class ProcessResourcesTask extends BaseTask {
@Input @Optional
String packageOverride
- @OutputDirectory @Optional
- File sourceOutputDir
-
- @OutputDirectory @Optional
- File textSymbolDir
-
- @OutputFile @Optional
- File packageFile
-
- @OutputFile @Optional
- File proguardFile
-
// this doesn't change from one build to another, so no need to annotate
VariantConfiguration.Type type
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessTestManifestTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessTestManifestTask.groovy
index a1f12ce..1edbe21 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessTestManifestTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ProcessTestManifestTask.groovy
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseManifestTask
+import com.android.build.gradle.tasks.ProcessManifest
import com.android.builder.ManifestDependency
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Nested
@@ -23,7 +23,7 @@ import org.gradle.api.tasks.TaskAction
/**
*/
-class ProcessTestManifestTask extends BaseManifestTask {
+class ProcessTestManifestTask extends ProcessManifest {
@Input
String testPackageName
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/RunTestsTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/RunTestsTask.groovy
index 5302633..e7f605a 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/RunTestsTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/RunTestsTask.groovy
@@ -13,9 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/UninstallTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/UninstallTask.groovy
index 06a6259..42bb30a 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/UninstallTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/UninstallTask.groovy
@@ -13,9 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import com.android.build.gradle.internal.tasks.BaseTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ZipAlignTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ZipAlignTask.groovy
index eff7ca1..e69ce14 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/ZipAlignTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/ZipAlignTask.groovy
@@ -13,24 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.tasks
+package com.android.build.gradle.internal.tasks
-import org.gradle.api.DefaultTask
+import com.android.build.gradle.tasks.ZipAlign
import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.InputFile
-import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
-public class ZipAlignTask extends DefaultTask {
- @OutputFile
- File outputFile
+public class ZipAlignTask extends ZipAlign {
@Input
File sdkDir
- @InputFile
- File inputFile
-
@TaskAction
void generate() {
project.exec {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/AidlCompile.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/AidlCompile.groovy
new file mode 100644
index 0000000..50f938b
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/AidlCompile.groovy
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.build.gradle.tasks
+
+import com.android.build.gradle.internal.tasks.BaseTask
+import org.gradle.api.tasks.OutputDirectory
+
+/**
+ */
+public class AidlCompile extends BaseTask {
+
+ @OutputDirectory
+ File sourceOutputDir
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/BaseManifestTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/Dex.groovy
index 1990f75..f5a6540 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/BaseManifestTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/Dex.groovy
@@ -13,14 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.build.gradle.internal.tasks
+package com.android.build.gradle.tasks
+import com.android.build.gradle.internal.tasks.BaseTask
import org.gradle.api.tasks.OutputFile
-/**
- */
-public abstract class BaseManifestTask extends BaseTask {
+public class Dex extends BaseTask {
@OutputFile
- File outManifest
+ File outputFile
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
new file mode 100644
index 0000000..7f30c8b
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.build.gradle.tasks
+
+import com.android.build.gradle.internal.tasks.BaseTask
+import org.gradle.api.tasks.OutputDirectory
+
+public class GenerateBuildConfig extends BaseTask {
+
+ @OutputDirectory
+ File sourceOutputDir
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy
new file mode 100644
index 0000000..1ebe367
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.build.gradle.tasks
+
+import com.android.build.gradle.internal.tasks.BaseTask
+import org.gradle.api.tasks.InputDirectory
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.Optional
+import org.gradle.api.tasks.OutputFile
+
+public class PackageApplication extends BaseTask {
+ @InputFile
+ File resourceFile
+
+ @InputFile
+ File dexFile
+
+ @InputDirectory @Optional
+ File javaResourceDir
+
+ @InputDirectory @Optional
+ File jniDir
+
+ @OutputFile
+ File outputFile
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/CrunchResourcesTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessImages.groovy
index 46af14a..b273775 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/CrunchResourcesTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessImages.groovy
@@ -16,19 +16,11 @@
package com.android.build.gradle.tasks
import com.android.build.gradle.internal.tasks.BaseTask
-import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
-import org.gradle.api.tasks.TaskAction
-class CrunchResourcesTask extends BaseTask {
+class ProcessImages extends BaseTask {
+
@OutputDirectory
File outputDir
- @InputFiles
- Iterable<File> resDirectories
-
- @TaskAction
- void generate() {
- getBuilder().preprocessResources(getOutputDir().absolutePath, getResDirectories())
- }
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessManifest.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessManifest.groovy
new file mode 100644
index 0000000..e58cf7e
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessManifest.groovy
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.build.gradle.tasks
+
+import com.android.build.gradle.internal.tasks.BaseTask
+import org.gradle.api.tasks.OutputFile
+
+/**
+ * A task that processes the manifest
+ */
+public abstract class ProcessManifest extends BaseTask {
+
+ /**
+ * The processed Manifest.
+ */
+ @OutputFile
+ File outManifest
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessResources.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessResources.groovy
new file mode 100644
index 0000000..4482428
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/ProcessResources.groovy
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.build.gradle.tasks
+
+import com.android.build.gradle.internal.tasks.BaseTask
+import org.gradle.api.tasks.InputDirectory
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.Optional
+import org.gradle.api.tasks.OutputDirectory
+import org.gradle.api.tasks.OutputFile
+
+public class ProcessResources extends BaseTask {
+
+ @InputFile
+ File manifestFile
+
+ @InputDirectory @Optional
+ File preprocessResDir
+
+ @OutputDirectory @Optional
+ File sourceOutputDir
+
+ @OutputDirectory @Optional
+ File textSymbolDir
+
+ @OutputFile @Optional
+ File packageFile
+
+ @OutputFile @Optional
+ File proguardFile
+
+}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/ZipAlign.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/ZipAlign.groovy
new file mode 100644
index 0000000..d41a981
--- /dev/null
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/ZipAlign.groovy
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.build.gradle.tasks
+
+import org.gradle.api.DefaultTask
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.OutputFile
+
+public class ZipAlign extends DefaultTask {
+ @OutputFile
+ File outputFile
+
+ @InputFile
+ File inputFile
+}
diff --git a/gradle/src/test/groovy/com/android/build/gradle/AppPluginDslTest.groovy b/gradle/src/test/groovy/com/android/build/gradle/AppPluginDslTest.groovy
index 593166b..cbccfce 100644
--- a/gradle/src/test/groovy/com/android/build/gradle/AppPluginDslTest.groovy
+++ b/gradle/src/test/groovy/com/android/build/gradle/AppPluginDslTest.groovy
@@ -184,28 +184,36 @@ public class AppPluginDslTest extends BaseTest {
}
private void checkTasks(BuildVariant variant, boolean testVariant) {
- assertNotNull(variant.processManifestTask)
- assertNotNull(variant.compileAidlTask)
- assertNotNull(variant.crunchResourcesTask)
- assertNotNull(variant.processResourcesTask)
- assertNotNull(variant.generateBuildConfigTask)
- assertNotNull(variant.compileTask)
+ assertNotNull(variant.processManifest)
+ assertNotNull(variant.aidlCompile)
+ assertNotNull(variant.processImages)
+ assertNotNull(variant.processResources)
+ assertNotNull(variant.generateBuildConfig)
+ assertNotNull(variant.javaCompile)
assertNotNull(variant.processJavaResources)
- assertNotNull(variant.dexTask)
- assertNotNull(variant.packageApplicationTask)
- assertNotNull(variant.assembleTask)
- assertNotNull(variant.uninstallTask)
+ assertNotNull(variant.dex)
+ assertNotNull(variant.packageApplication)
+
+ assertNotNull(variant.assemble)
+ assertNotNull(variant.uninstall)
if (variant.buildType.debugSigned || variant.mergedConfig.isSigningReady()) {
- assertNotNull(variant.installTask)
+ assertNotNull(variant.install)
+
+ // tested variant are never zipAligned.
+ if (!testVariant && variant.buildType.zipAlign) {
+ assertNotNull(variant.zipAlign)
+ } else {
+ assertNull(variant.zipAlign)
+ }
} else {
- assertNull(variant.installTask)
+ assertNull(variant.install)
}
if (testVariant) {
- assertNotNull(variant.runTestsTask)
+ assertNotNull(variant.runTests)
} else {
- assertNull(variant.runTestsTask)
+ assertNull(variant.runTests)
}
}
diff --git a/gradle/src/test/groovy/com/android/build/gradle/LibraryPluginDslTest.groovy b/gradle/src/test/groovy/com/android/build/gradle/LibraryPluginDslTest.groovy
new file mode 100644
index 0000000..3495219
--- /dev/null
+++ b/gradle/src/test/groovy/com/android/build/gradle/LibraryPluginDslTest.groovy
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.build.gradle
+
+import com.android.build.gradle.internal.BaseTest
+import org.gradle.api.Project
+import org.gradle.testfixtures.ProjectBuilder
+
+/**
+ * Tests for the public DSL of the App plugin ("android-library")
+ */
+public class LibraryPluginDslTest extends BaseTest {
+
+ @Override
+ protected void setUp() throws Exception {
+ BasePlugin.TEST_SDK_DIR = new File("foo")
+ }
+
+ public void testBasic() {
+ Project project = ProjectBuilder.builder().withProjectDir(
+ new File(testDir, "basic")).build()
+
+ project.apply plugin: 'android-library'
+
+ project.android {
+ target "android-15"
+ }
+
+ Set<BuildVariant> variants = project.android.buildVariants
+ assertEquals(2, variants.size())
+
+ Set<BuildVariant> testVariants = project.android.testBuildVariants
+ assertEquals(1, testVariants.size())
+
+ checkTestedVariant("Debug", "Test", variants, testVariants)
+ checkNonTestedVariant("Release", variants)
+ }
+
+ private void checkTestedVariant(String variantName, String testedVariantName,
+ Set<BuildVariant> variants, Set<BuildVariant> testVariants) {
+ BuildVariant variant = findVariant(variants, variantName)
+ assertNotNull(variant)
+ assertNotNull(variant.testVariant)
+ assertEquals(testedVariantName, variant.testVariant.name)
+ assertEquals(variant.testVariant, findVariant(testVariants, testedVariantName))
+ checkLibraryTasks(variant)
+ checkTestTasks(variant.testVariant)
+ }
+
+ private void checkNonTestedVariant(String variantName, Set<BuildVariant> variants) {
+ BuildVariant variant = findVariant(variants, variantName)
+ assertNotNull(variant)
+ assertNull(variant.testVariant)
+ checkLibraryTasks(variant)
+ }
+
+ private void checkTestTasks(BuildVariant variant) {
+ assertNotNull(variant.processManifest)
+ assertNotNull(variant.aidlCompile)
+ assertNotNull(variant.processImages)
+ assertNotNull(variant.processResources)
+ assertNotNull(variant.generateBuildConfig)
+ assertNotNull(variant.javaCompile)
+ assertNotNull(variant.processJavaResources)
+ assertNotNull(variant.dex)
+ assertNotNull(variant.packageApplication)
+
+ assertNotNull(variant.assemble)
+ assertNotNull(variant.uninstall)
+
+ assertNull(variant.zipAlign)
+
+ if (variant.buildType.debugSigned || variant.mergedConfig.isSigningReady()) {
+ assertNotNull(variant.install)
+ } else {
+ assertNull(variant.install)
+ }
+
+ assertNotNull(variant.runTests)
+ }
+
+ private void checkLibraryTasks(BuildVariant variant) {
+ assertNotNull(variant.processManifest)
+ assertNotNull(variant.aidlCompile)
+ assertNotNull(variant.processResources)
+ assertNotNull(variant.generateBuildConfig)
+ assertNotNull(variant.javaCompile)
+ assertNotNull(variant.processJavaResources)
+
+ assertNotNull(variant.assemble)
+
+ assertNull(variant.dex)
+ assertNull(variant.packageApplication)
+ assertNull(variant.zipAlign)
+ assertNull(variant.install)
+ assertNull(variant.uninstall)
+ assertNull(variant.runTests)
+ }
+
+ private BuildVariant findVariant(Collection<BuildVariant> variants, String name) {
+ for (BuildVariant variant : variants) {
+ if (name.equals(variant.name)) {
+ return variant
+ }
+ }
+
+ return null
+ }
+} \ No newline at end of file