Initial empty repository
Android build library.

This library allows building Android libraries and
applications in the context of the Android SDK.

It is meant to be usable by various build systems and only
deals with the logic of building Android applications.
While it exposes some configurations and expect from
specific inputs, they are meant to be provided by the
build system itself.

It purposely doesn't include Eclipse or IDEA project
files due to dependencies that are downloaded from Maven
(and due to IDEA's tendency to put local path in its
project paths).
Instead those can be created using
    gradle eclipse
and
    gradle idea

The prebuilts are temporary till we move those libraries
to gradle or figure something else.

Change-Id: Ia95fa9ae3a619c2d9fe68b4cfa3ce72acfb4df3c
Initial prototype of Gradle plugin to build Android applications

This is an initial prototype Gradle plugin that can build Android applications.
This is intended to demonstrate how such a plugin would be wired together. Most
of the tasks are placeholders for a real implementation. See the readme for
details.

Change-Id: I8f25493b9656c3919c0635c0e5363cdd9c8c171d
Separated the prototype into plugin and test apps.

The plugin implementation has moved to the gradle/ directory,
and the test applications have moved under the testapps/
directory. This change means that you now have to run
./gradlew uploadArchives in the root directory to make the
plugin available to the test application builds via a
local repository (in repo/).

See the readme.md for more details about building and using
the test applications.

Change-Id: Id9b268aa1d6d1a5621513fb788b2dc90ca2793e8
Changed plugin group and package names.

Now uses package 'com.android.build.gradle' for source,
and group 'com.android.build'.

The packages for the test applications have not been changed, yet.

Change-Id: Id55eb9ea91295c72d989844b1f1cdee1ca9b58c3
Merge "Initial prototype of Gradle plugin to build Android applications"
Merge "Android build library."
Merge "Separated the prototype into plugin and test apps."
Merge "Changed plugin group and package names."
Start integration of the builder lib in the gradle plug-in

First step: move to the BuildType and ProductFlavor classes
from the builder library.

Change-Id: Ib83c590ff7dbf38774022d7539634835de9f31c0
Merge "Start integration of the builder lib in the gradle plug-in"
Create a Configure<Variant> task.

This task creates and configure the AndroidBuilder that will be
used in the other tasks.

Change-Id: Iedbfcd709287256394c736eacbd7a9597ce2fee0
Create a fat jar that contains the classes of the plugin and all dependencies.

Change-Id: I72c2c6a8942135cf1da809f56373e58bb3864062
Merge "Create a fat jar that contains the classes of the plugin and all dependencies."
Merge "Create a Configure<Variant> task."
Use AndroidBuilder to build basic APK.

Notable changes:
- AndroidBuilder now receives ProjectFlavorHolder and
  BuildTypeHolder. This both contains the flavor/type
  themselves but also implements PathProvider to
  provide the needed path.
- The [ProductFlavor/BuildType]Dimension implements
  the Holder classes to provide those paths
- Moved to using the AndroidBuilder. It is created
  by the ConfigureVariant task and set in the plugin
  through the AndroidBasePlugin (will be used by
  both plugins) and queried by the tasks with a simple
  AndroidBuilderProvider
- Updated the mergeManifest, crunchRes, processRes,
  dex and packageApp tasks to use the AndroidBuilder.

The tasks to create test apps haven't been touched yet.

Known issues:
- AndroidBuilderProvider will not work for builds that
  create more than one APK.
- Because some inputs are not explicit in some tasks
  (they are figured out automatically on the
  AndroidBuilder side, touching some files will not
  trigger new builds. The task's TaskInputs object
  needs to be manipulated to help with this. This
  will be needed for the inputs coming from library
  dependencies as well anyway.

Change-Id: I7f9ca428ce2048ce92ed780367db0aaf01f6350b
Change the way the AndroidBuilder is created and used.

The previous way relied on all tasks of a given
assemble<variant> to happen with no other task
(from another assemble<variant>) to happen in the
middle due to the single AndroidBuilder stored in the
plugin.

This changes this in the following way:
- There is now a map of (variant, builder).
- The configureVariant task is gone and the builder is done
  on demand
- The ApplcationVariant classes are reponsible for creating
  the builder since they own the data needed to initialize it.
- Each task receives both the AndroidBasePlugin and the variant
  in order to ask the variant to create the builder if the base
  plugin doesn't already have one.

Additionally this does the following:
- Removes the default value of the compilation target
- Fixes the runtimeJar given to the compiler. This
  queries the AndroidBuilder which replies with a list of jars
  which is then joined in a colon separated string. This
  is done in the doFirst of the compile task so that this is
  only done when the compile task runs.
- Fixes an issue exporting non signed apks.

Finally this refactors the plugin a bit moving stuff into
the AndroidBasePlugin (now a class) so that the library plugin
can use it later when I get to it.

Change-Id: I5ad05395b8cc7ad9a2aa7242ae635dca5579f8d4
Merge "Use AndroidBuilder to build basic APK."
Merge "Change the way the AndroidBuilder is created and used."
Refactoring to prepare libary work

Change-Id: Ic319eaef33be775c707ea4983d6691addc2eee61