<br />

# Android plugin for Gradle, revision 1.5.0 (November 2015)

Dependencies:
General Notes:
:
    - Integrated the Data Binding plugin into the Android plugin for Gradle. To enable it, add the following code to each per-project `build.gradle` file that uses the plugin:  

    ```groovy
    android {
        dataBinding {
            enabled = true
        }
    }
            
    ```  

    ```kotlin
    android {
        dataBinding {
            enabled = true
        }
    }
            
    ```
    - Added a new [Transform API](https://google.github.io/android-gradle-dsl/javadoc/1.5/) to allow third-party plugins to manipulate compiled `.class` files before they're converted to `.dex` files. The Transform API simplifies injecting custom class manipulations while offering more flexibility regarding what you can manipulate. To insert a transform into a build, create a new class implementing one of the `Transform` interfaces, and register it with `android.registerTransform(theTransform)` or `android.registerTransform(theTransform, dependencies)`. There's no need to wire tasks together. Note the following about the Transform API:
      - A transform can apply to one or more of the following: the current project, subprojects, and external libraries.
      - A transform must be registered globally, which applies them to all variants.
      - Internal code processing, through the Java Code Coverage Library (JaCoCo), ProGuard, and MultiDex, now uses the Transform API. However, the Java Android Compiler Kit (Jack) doesn't use this API: only the `javac/dx` code path does.
      - Gradle executes the transforms in this order: JaCoCo, third-party plugins, ProGuard. The execution order for third-party plugins matches the order in which the transforms are added by the third party plugins; third-party plugin developers can't control the execution order of the transforms through an API.
    - Deprecated the `dex` getter from the `ApplicationVariant` class. You can't access the `Dex` task through the variant API anymore because it's now accomplished through a transform. There's currently no replacement for controlling the dex process.
    - Fixed incremental support for assets.
    - Improved MultiDex support by making it available for test projects, and tests now automatically have the `com.android.support:multidex-instrumentation` dependency.
    - Added the ability to properly fail a Gradle build and report the underlying error cause when the Gradle build invokes asynchronous tasks and there's a failure in the worker process.
    - Added support for configuring a specific Application Binary Interface (ABI) in variants that contain multiple ABIs.
    - Added support for a comma-separated list of device serial numbers for the `ANDROID_SERIAL` environment variable when installing or running tests.
    - Fixed an installation failure on devices running Android 5.0 (API level 20) and higher when the APK name contains a space.
    - Fixed various issues related to the Android Asset Packaging Tool (AAPT) error output.
    - Added JaCoCo incremental instrumentation support for faster incremental builds. The Android plugin for Gradle now invokes the JaCoCo instrumenter directly. To force a newer version of the JaCoCo instrumenter, you need to add it as a build script dependency.
    - Fixed JaCoCo support so it ignores files that aren't classes.
    - Added vector drawable support for generating PNGs at build time for backward-compatibility. Android plugin for Gradle generates PNGs for every vector drawable found in a resource directory that doesn't specify an API version or specifies an `android:minSdkVersion` attribute of 20 or lower in the `<uses-sdk>` element in the app manifest. You can set PNG densities by using the `generatedDensities` property in the `defaultConfig` or `productFlavor` sections of a `build.gradle` file.
    - Added sharing of the mockable `android.jar`, which the plugin generates only once and uses for unit testing. Multiple modules, such as `app` and `lib`, now share it. Delete `$rootDir/build` to regenerate it.
    - Changed the processing of Java resources to occur before the obfuscation tasks instead of during the packaging of the APK. This change allows the obfuscation tasks to have a chance to adapt the Java resources following packages obfuscation.
    - Fixed an issue with using Java Native Interface (JNI) code in the experimental library plugin.
    - Added the ability to set the platform version separately from the `android:compileSdkVersion` attribute in the experimental library plugin.

<br />