robolectric/robolectric-gradle-plugin

Got Error: No signature of method: com.android.build.gradle.AppPlugin.getBootClasspath() is applicable for argument types: () values: []

magx2 opened this issue · 18 comments

I'm trying to test my app with this plugin but I get this error:

No signature of method: com.android.build.gradle.AppPlugin.getBootClasspath() is applicable for argument types: () values: []

this is my gradle file:

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
    }
    dependencies {
        // replace with the current version of the Android plugin
        classpath 'com.android.tools.build:gradle:0.10.+'

        // the latest version of the android-apt plugin
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.1'

        // Crashlitics
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'

        // Robolectric
        classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.10.+'
    }
}
apply plugin: 'android'
//apply plugin: 'crashlytics'
apply plugin: 'android-apt'
apply plugin: 'android-test'

repositories {
    mavenCentral()
    mavenLocal()
    maven { url 'http://download.crashlytics.com/maven' }

}

configurations {
    apt
}

def AAVersion = '3.0.1'
def ORMLiteVersion = '4.46'
def mainPackage = 'pl.grzeslowski.historia_miasta'
def paidPackage = mainPackage + '.paid'
def freePackage = mainPackage + '.free'
def adsenseTagFree = "";
def adsenseTagPaid = "";

android {
    packagingOptions {
        exclude 'LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE'
    }
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }

    signingConfigs {
        debug {
            storeFile file("../../debug.keystore")
        }
    }

    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

            buildConfigField "java.lang.String", "DATABASE_NAME", "\"hstoria_miasta\""
            buildConfigField "int", "DATABASE_VERSION", "1"

            buildConfigField "java.lang.String", "PAID_PACKAGE_NAME", "\"$paidPackage\""
            buildConfigField "java.lang.String", "FREE_PACKAGE_NAME", "\"$freePackage\""
        }

        debug.initWith(buildTypes.release)
        debug {
            debuggable true
            runProguard false
            signingConfig signingConfigs.debug
        }
    }

    productFlavors {
        free {
            packageName freePackage
            buildConfigField mainPackage + ".product_flavors.MonetizationType", "MONETIAZATION_TYPE", mainPackage + ".product_flavors.MonetizationType.FREE"

            buildConfigField "java.lang.String", "AD_SENSE_TAG", "\"" + adsenseTagFree + "\""
        }

        paid {
            packageName paidPackage
            buildConfigField mainPackage + ".product_flavors.MonetizationType", "MONETIAZATION_TYPE", mainPackage + ".product_flavors.MonetizationType.PAID"

            buildConfigField "java.lang.String", "AD_SENSE_TAG", "\"" + adsenseTagPaid + "\""
        }
    }

    sourceSets {
        androidTest {
            setRoot('src/test')
        }
    }
}

androidTest {
    include '**/*Test.class'
    exclude '**/espresso/**/*.class'
}

dependencies {
    repositories {
        mavenCentral()
        maven {
            url 'https://oss.sonatype.org/content/repositories/snapshots/'
        }
    }

    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.android.support:support-v4:19.1.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // Android annotations
    apt "org.androidannotations:androidannotations:$AAVersion"
    compile "org.androidannotations:androidannotations-api:$AAVersion"

    // ORMLite
    compile "com.j256.ormlite:ormlite-android:$ORMLiteVersion"
    compile "com.j256.ormlite:ormlite-core:$ORMLiteVersion"

    // Google Guava
    compile 'com.google.guava:guava:16.0.1'

    // Joda Time
    compile 'joda-time:joda-time:2.3'

    // Crashlitics
    compile 'com.crashlytics.android:crashlytics:1.+'

    // google play
//    compile 'com.google.android.gms:play-services:4.3.23'

    // TESTING
    // Espresso
    androidTestCompile fileTree(dir: 'libs_test', include: ['*.jar'])
    androidTestCompile 'com.squareup.dagger:dagger:1.1.0',
            'org.hamcrest:hamcrest-integration:1.1',
            'org.hamcrest:hamcrest-core:1.1',
            'org.hamcrest:hamcrest-library:1.1'

    androidTestCompile('junit:junit:4.11') {
        exclude module: 'hamcrest-core'
    }
    androidTestCompile('org.robolectric:robolectric:2.3-SNAPSHOT') {
        exclude module: 'classworlds'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-plugin-registry'
        exclude module: 'maven-profile'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'nekohtml'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-http-shared'
        exclude module: 'wagon-provider-api'
    }
    androidTestCompile 'com.squareup:fest-android:1.0.+'
}

def getSourceSetName(variant) {
    return new File(variant.dirName).getName();
}

android.applicationVariants.all { variant ->
    def aptOutputDir = project.file("build/source/apt")
    def aptOutput = new File(aptOutputDir, variant.dirName)

    android.sourceSets[getSourceSetName(variant)].java.srcDirs += aptOutput.getPath()

    variant.javaCompile.options.compilerArgs += [
            '-processorpath', configurations.apt.getAsPath(),
            '-AandroidManifestFile=' + variant.processResources.manifestFile,
            '-AresourcePackageName=' + mainPackage,
            '-s', aptOutput
    ]

    variant.javaCompile.source = variant.javaCompile.source.filter { p ->
        return !p.getPath().startsWith(aptOutputDir.getPath())
    }

    variant.javaCompile.doFirst {
        aptOutput.mkdirs()
    }
}

apply plugin: 'idea'

idea {
    module {
        testOutputDir = file('build/test-classes/debug')
    }
}
ligi commented

have the same - it is not yet compatible with plugin version 0.10 - have to use 0.9 for now

classpath 'com.android.tools.build:gradle:0.10.+'
->
classpath 'com.android.tools.build:gradle:0.9.+'

mag commented

I thought @erd fixed this problem with either #18 or #19...

We are meant to be compatible with android plugin 0.10. If not, it's a bug.

erd commented

@ligi Are you sure the exception is coming from the gradle-android-test-plugin? I'm pretty sure it's compatible with 0.10.x.

ligi commented

yes - it is reproduceable - just tested again - with 0.9 it tests - with 0.10 it fails - https://github.com/ligi/FAST

this is the stacktrace

:android:testForAmazonDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':android:testForAmazonDebug'.
> No signature of method: com.android.build.gradle.AppPlugin.getRuntimeJarList() is applicable for argument types: () values: []

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':android:testForAmazonDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:289)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
    at org.gradle.execution.taskgraph.ParallelTaskPlanExecutor.process(ParallelTaskPlanExecutor.java:51)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:45)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:42)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.ReturnResult.execute(ReturnResult.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:45)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator.runCommand(DaemonStateCoordinator.java:186)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy.doBuild(StartBuildOrRespondWithBusy.java:49)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.HandleStop.execute(HandleStop.java:36)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.CatchAndForwardDaemonFailure.execute(CatchAndForwardDaemonFailure.java:32)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
    at org.gradle.launcher.daemon.server.exec.DefaultDaemonCommandExecuter.executeCommand(DefaultDaemonCommandExecuter.java:51)
    at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.handleCommand(DefaultIncomingConnectionHandler.java:155)
    at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.receiveAndHandleCommand(DefaultIncomingConnectionHandler.java:128)
    at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.run(DefaultIncomingConnectionHandler.java:116)
    at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
Caused by: groovy.lang.MissingMethodException: No signature of method: com.android.build.gradle.AppPlugin.getRuntimeJarList() is applicable for argument types: () values: []
    at org.robolectric.gradle.AndroidTestPlugin$_apply_closure1_closure5.doCall(AndroidTestPlugin.groovy:170)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:502)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:483)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 66 more


BUILD FAILED

I was getting the same error as OP.

The issue was that App/app/build.gradle had 'org.robolectric:robolectric-gradle-plugin:0.11.+' and 'com.android.tools.build:gradle:0.12.+' as dependencies while App/build.gradle had 'com.android.tools.build:gradle:0.9.+'.

I updated App/build.gradle to 'com.android.tools.build:gradle:0.12.+' and all is testing as it should.

looks like this is back again:

    classpath 'com.android.tools.build:gradle:1.1.0'
    classpath 'org.robolectric:robolectric-gradle-plugin:0.14.1'

Same exception

Gradle sync failed: No signature of method: build_9w1f9g667qvbpe1swf3gmg0vn.android() is applicable for argument types: (build_9w1f9g667qvbpe1swf3gmg0vn$_run_closure2) values: [build_9w1f9g667qvbpe1swf3gmg0vn$_run_closure2@600119e1]
Consult IDE log for more details (Help | Show Log) (1 s 517 ms)

I am having this error too.
No signature of method: build_4g4nionoxdsfjvimnc5vamra2.android() is applicable for argument types: (build_4g4nionoxdsfjvimnc5vamra2$_run_closure1) values: [build_4g4nionoxdsfjvimnc5vamra2$_run_closure1@7fb46bf2]

Same issue:

Caused by: groovy.lang.MissingMethodException: No signature of method: build_f35z24472dajc81k3f4ymz7rp.android() is applicable for argument types: (build_f35z24472dajc81k3f4ymz7rp$_run_closure1) values: [build_f35z24472dajc81k3f4ymz7rp$_run_closure1@4e2c2247]

Please share if anyone has fix for this issue.

same issue Caused by: groovy.lang.MissingMethodException: No signature of method: build_8hyklikaf5k81p0xidszepp8e.android() is applicable for argument types: (build_8hyklikaf5k81p0xidszepp8e$_run_closure1) values: [build_8hyklikaf5k81p0xidszepp8e$_run_closure1@49b68da7]

happened to me after upgrading android studio and gradle, tried going back to the gradle version i was using but hasnt fixed it

adadi commented

same issue
No signature of method: build_echiic8j4z69mgnzjvg9el8d3.android() is applicable for argument types: (build_echiic8j4z69mgnzjvg9el8d3$_run_closure7) values: [build_echiic8j4z69mgnzjvg9el8d3$_run_closure7@4c7e434c]

adadi commented

done
add abortOnError false; in lintOptions
android {
///
lintOptions {

  abortOnError false;
}

done
add abortOnError false; in lintOptions
android {
///
lintOptions {

  abortOnError false;
}

What file does this go into?

having the same problem
No signature of method: build_7gh0v6ecbjii5k1qn2xoc9qhu.android() is applicable for argument types: (build_7gh0v6ecbjii5k1qn2xoc9qhu$_run_closure1) values: [build_7gh0v6ecbjii5k1qn2xoc9qhu$_run_closure1@6a02e8d4]

build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.jazaresort.jazaresort"
minSdkVersion 19
targetSdkVersion 29
versionCode 1.0
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
//noinspection GradleCompatible
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha10'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.facebook.android:facebook-login:5.5.1'
implementation 'com.google.android.gms:play-services-auth:17.0.0'
}

having the same problem
No signature of method: com.android.build.gradle.internal.variant.ApplicationVariantData.getVariantConfiguration() is applicable for argument types: () values: []

having the same problem

No signature of method: com.android.build.gradle.internal.variant.ApplicationVariantData.getVariantConfiguration() is applicable for argument types: () values: []

@amit-harjani did you manage to find a solution?

def flavorString = variant.getFlavorName()
def mergedFlavor = variant.getMergedFlavor()

Worked for me.

  • What went wrong:
    A problem occurred evaluating project ':app'.

No signature of method: build_5t8fdh6osupqy6zsl9n7kf0wp.android() is applicable for argument types: (build_5t8fdh6osupqy6zsl9n7kf0wp$_run_closure2) values: [build_5t8fdh6osupqy6zsl9n7kf0wp$_run_closure2@58530fa6]