You should not depend on the Gradle plugin. You should just depend on the
transform-api artifact 'com.android.tools.transform-api:1.4.0-beta2'

The rest of the API can be access dynamically in groovy anyway.

On Thu, Oct 1, 2015 at 12:59 AM, Michael Rozumyanskiy <
[email protected]> wrote:

> I'm writing a Gradle plugin for Android, which uses new Transform API.
> Unfortunately, I faced a problem with adding Android plugin as a dependency
> to my plugin. A simplified Gradle configuration of my plugin looks like
> this:
>
>
> *plugin/build.gradle:*
>
>
> apply plugin: "groovy"
>
> dependencies {
>     compile gradleApi()
>     compile localGroovy()
>     compile "com.android.tools.build:gradle:1.4.0-beta2"
> }
>
>
> And that's a simplified configuration of an application project that uses
> my Gradle plugin:
>
>
> *application/build.gradle:*
>
>
> buildscript {
>     dependencies {
>         classpath "com.android.tools.build:gradle:1.4.0-beta2"
>         classpath "my-plugin:my-plugin:1.0.0"
>     }
> }
>
> apply plugin: "com.android.application"
> apply plugin: "my-plugin"
>
> android {
>     compileSdkVersion 23
>     buildToolsVersion '23.0.1'
>
>     defaultConfig {
>         applicationId 'com.myapplication'
>         minSdkVersion 16
>         targetSdkVersion 23
>         versionCode 1
>         versionName version
>     }
> }
>
>
> With this configuration everything works fine but I also want my plugin to
> work properly with projects that use previous versions of Android plugin.
> So I tried to change Android plugin version in my application's
> configuration file:
>
>
> *application/build.gradle (with Android plugin 1.3.1):*
>
>
> buildscript {
>     dependencies {
>         classpath "com.android.tools.build:gradle:1.3.1"
>         classpath "my-plugin:my-plugin:1.0.0"
>     }
> }
>
> /* Everything else is the same. */
>
>
> But in this case Android plugin 1.4.0-beta2 is still used. I believe it
> happens because when Gradle resolves classpath dependencies, it prefers
> 1.4.0-beta2 over 1.3.1 so the whole project starts using version
> 1.4.0-beta2 of Android plugin.
>
>
> I've also tried to add Android plugin as a runtime dependency but after
> making this change my plugin stops compiling because of 'unable to resolve'
> errors like this one:
>
>
> Unable to resolve class com.android.build.gradle.api.BaseVariant @ line 19
> , column 1.
> import com.android.build.gradle.api.BaseVariant
>
>
> Is there a way to build my plugin against the latest version of Android
> plugin but at runtime use a version of Android plugin provided by the build
> environment?
>
>
> The  same question on StackOverflow:
> http://stackoverflow.com/q/32756983/170842
>
> --
> You received this message because you are subscribed to the Google Groups
> "adt-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Xavier Ducrohet
Android SDK Tech Lead
Google Inc.
http://developer.android.com | http://tools.android.com

Please do not send me questions directly. Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to