Не удалось найти метод "org.gradle.api.tasks.testing.Test.getTestClassesDirs() Lorg/gradle/api/file/FileCollection;

Когда я пытаюсь скомпилировать импортированный проект из github, моя сборка gradle всегда завершается неудачей со следующим исключением.

Unable to find method 'org.gradle.api.tasks.testing.Test.getTestClassesDirs()Lorg/gradle/api/file/FileCollection;'
Possible causes for this unexpected error include:<ul><li>Gradle dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)</li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
Stop Gradle build processes (requires restart)</li><li>Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.</li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes

Я следовал приведенным инструкциям, но это не сработало. Кроме того, я не смог получить дополнительную информацию об ошибке, выполнив поиск в Интернете.

Приложение \build.gradle:

   apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "iammert.com.androidarchitecture"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding {
        enabled = true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    /*androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })*/
    //  testCompile 'junit:junit:4.12'

    //support lib
    implementation rootProject.ext.supportLibAppCompat
    implementation rootProject.ext.supportLibDesign

    implementation rootProject.ext.archRuntime
    implementation rootProject.ext.archExtension
    annotationProcessor rootProject.ext.archCompiler

    implementation rootProject.ext.roomRuntime
    annotationProcessor rootProject.ext.roomCompiler

    implementation rootProject.ext.okhttp
    implementation rootProject.ext.retrofit
    implementation rootProject.ext.gsonConverter

    //dagger
    annotationProcessor rootProject.ext.daggerCompiler
    implementation rootProject.ext.dagger
    implementation rootProject.ext.daggerAndroid
    implementation rootProject.ext.daggerAndroidSupport
    annotationProcessor rootProject.ext.daggerAndroidProcessor

    //ui
    implementation rootProject.ext.picasso

}

\Build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext {
    supportLibVersion = '25.3.1'
    daggerVersion = '2.11'
    retrofitVersion = '2.1.0'
    gsonConverterVersion = '2.1.0'
    okhttpVersion = '3.8.0'
    picassoVersion = '2.5.2'
    archVersion = '1.0.0-alpha1'

    supportLibAppCompat = "com.android.support:appcompat-v7:$supportLibVersion"
    supportLibDesign = "com.android.support:design:$supportLibVersion"
    archRuntime = "android.arch.lifecycle:runtime:$archVersion"
    archExtension = "android.arch.lifecycle:extensions:$archVersion"
    archCompiler = "android.arch.lifecycle:compiler:$archVersion"
    roomRuntime = "android.arch.persistence.room:runtime:$archVersion"
    roomCompiler = "android.arch.persistence.room:compiler:$archVersion"
    dagger = "com.google.dagger:dagger:$daggerVersion"
    daggerCompiler = "com.google.dagger:dagger-compiler:$daggerVersion"
    daggerAndroid = "com.google.dagger:dagger-android:$daggerVersion"
    daggerAndroidSupport = "com.google.dagger:dagger-android-support:$daggerVersion"
    daggerAndroidProcessor = "com.google.dagger:dagger-android-processor:$daggerVersion"
    retrofit = "com.squareup.retrofit2:retrofit:$retrofitVersion"
    gsonConverter = "com.squareup.retrofit2:converter-gson:$gsonConverterVersion"
    okhttp = "com.squareup.okhttp3:okhttp:$okhttpVersion"
    picasso = "com.squareup.picasso:picasso:$picassoVersion"
}

Gradle\gradle-wrapper.properties:

#Thu May 18 17:31:31 EEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-milestone-1-all.zip

Кто-нибудь знает, почему происходит эта ошибка?

Ответы

Ответ 1

Мне пришлось изменить дистрибутивUrl в gradle-wrapper.properties на distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip чтобы снова запустить сборку. Это похоже на аналогичную проблему. Ошибка синхронизации Gradle: невозможно найти метод.

Ответ 2

Если вы получаете эту ошибку после удаления файлов .gradle и .idea, то ошибка возникает из-за того, что файлы Gradle недоступны для этого проекта, и Android Studio не может загрузить одну и ту же версию зависимости Gradle. Вы можете переключиться на более низкую версию Gradle, выбрать здесь, а затем перейти к файлу gradle-wrapper-properties и изменить версию, в моем случае я изменил ее с distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip to distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip. После загрузки более старой версии зависимости Gradle появится диалоговое окно обновления Gradle, с помощью которого можно получить последнюю версию, которая в данном случае является 5.1.1.

Ответ 3

Похоже, вы не можете разрешить свой тест. Вы используете facebook.screenshot api? если это необходимо, вы должны включить его.

В противном случае просто закомментируйте раздел testInstrument и посмотрите, можете ли вы построить без тестов на данный момент, если вас это не волнует. в противном случае вам нужно исправить его использование зависимостей.

* комментарий вне testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

Это приводит к созданию строки в вашем манифесте, и это, вероятно, неправильно разрешается.

Ответ 4

    After 1 hour R&D Not Solution as worked for me...

    But still i have solution follow this its work 100

    step 1: upgrade your build.gradle(Project:<your project name>)
    Example :  classpath 'com.android.tools.build:gradle:2.1.3' // old gradle file
               classpath 'com.android.tools.build:gradle:2.3.1' // upgraded file 

                                OR
               classpath 'com.android.tools.build:gradle:3.1.0'

    Step 2 : Upgrade compileSdkVersion buildToolsVersion 
    Example : compileSdkVersion 23    buildToolsVersion "23.0.3 // old api's
              compileSdkVersion 25    buildToolsVersion "25.0.2" // upgraded api's

   Step 3:  upgrade gradle-wrapper.properties 

Example : distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip // old or any version

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip // new or any version

Шаг 4: наконец-то перейдем к сборке> перестроить проект...

...... Конец @Ambilpura

Ответ 5

для android studio path "папка project/gradle/wrapper/gradle-wrapper.properties" изменение значения URL-адреса файла distributionUrl = https://services.gradle.org/distributions/gradle-4.10.1-all.zip соответствующая (предыдущая) версия с http://services.gradle.org/distributions/

Ответ 6

Я исправляю то же самое, что и эта ошибка, добавляя classpath 'com.android.tools.build:gradle:3.2.1' в проекте build.gradle

buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}