找不到Gradle DSL方法:'implementation()'

时间:2017-08-23 11:14:01

标签: android android-gradle

我有这个错误

Error:(45, 0) Gradle DSL method not found: 'implementation()'
Possible causes:<ul><li>The project 'LaTaxi2' may be using a version of the Android Gradle plug-in that does not contain the method (e.g. 'testCompile' was added in 1.1.0).
<a href="fixGradleElements">Upgrade plugin to version 2.3.3 and sync project</a></li><li>The project 'LaTaxi2' may be using a version of Gradle that does not contain the method.
<a href="open.wrapper.file">Open Gradle wrapper file</a></li><li>The build file may be missing a Gradle plugin.
<a href="apply.gradle.plugin">Apply Gradle plugin</a></li>

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'
        }
//        google()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        /* CHANGE to classpath 'com.android.tools.build:gradle:2.3.3'  for STABLE BUILD TOOL VERSION*/
//        classpath 'com.android.tools.build:gradle:3.0.0-alpha7'
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.google.gms:google-services:3.1.0'
        // We recommend changing it to the latest version from our changelog:
        // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin

        classpath 'io.fabric.tools:gradle:1+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}


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

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

build .gradle模块应用

apply plugin: 'com.android.application'

apply plugin: 'io.fabric'

repositories {
    maven {
        url 'https://maven.google.com'
    }
//    google()
    maven { url 'https://maven.fabric.io/public' }
}

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.0'
    defaultConfig {
        applicationId "in.techware.lataxi"
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 5
        versionName "1.0.4"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    /* Remove This to remove Crashlytics and Fabric */

    compile('com.crashlytics.sdk.android:crashlytics:2.6.7@aar') {
        transitive = true;
    }
/*    compile('com.digits.sdk.android:digits:2.0.6@aar') {
        transitive = true;
    }*/
    implementation 'com.android.support:appcompat-v7:25.4.0'
    implementation 'com.android.support:design:25.4.0'
    implementation 'com.android.support:recyclerview-v7:25.4.0'
    implementation 'com.squareup.okhttp3:okhttp:3.8.1'
    implementation 'com.android.support:cardview-v7:25.4.0'
    implementation 'com.github.bumptech.glide:glide:3.8.0'
    implementation 'com.google.android.gms:play-services-maps:11.0.2'
    implementation 'com.google.android.gms:play-services-location:11.0.2'
    implementation 'com.google.android.gms:play-services-places:11.0.2'
    implementation 'com.google.firebase:firebase-auth:11.0.2'
    implementation 'com.google.firebase:firebase-messaging:11.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta1'
    implementation 'com.google.code.gson:gson:2.8.0'
    testCompile 'junit:junit:4.12'
}







apply plugin: 'com.google.gms.google-services'

9 个答案:

答案 0 :(得分:25)

或者如果您不想更新到最新的Gradle,请返回使用DSL方法compile()而不是implementation()

答案 1 :(得分:21)

要使用DSL implementation(),您必须使用:

  • Android 3.0.0更新的gradle插件
  • gradle版本3.4或更高版本

然后在build.gradle中你必须使用:

buildscript {
    repositories {
        ...
        // You need to add the following repository to download the
        // new plugin.
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta1'
    }
}

gradle-wrapper.properties

distributionUrl=\
  https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip

更详细info here

答案 2 :(得分:7)

作为一个初学者,我发现有2个build.gradle文件

值得检查的是,您没有在错误的文件中添加该行。 我在项目文件中添加了我的,而我应该在模块一中添加了它。

You can see here the 2 build in the android view

答案 3 :(得分:4)

您使用土耳其语工作区, 变革之下解决了问题

testImplementation -> testİmplementation,
androidTestImplementation -> androidTestİmplementation
androidTestImplementation -> androidTestİmplementation

答案 4 :(得分:2)

在我看来,这只是一个错字。一排后是一个加号“ /”

答案 5 :(得分:0)

implementation()取代了compile()配置,该配置将于2018年底淘汰。

为了纠正错误并使用它,您必须更新为 Android Gradle Plugin 3.0.0 (或更高版本)。作为此更新的结果,您还需要将Gradle更新为 4.1版(或更高版本)。您还需要使用 Build Tools 26.0.2 (或更高版本),这意味着要在buildToolsVersion中更新build.gradle,或从那里完全删除它(因为3.0.0,默认情况下使用最低要求版本。您还需要更新到 Android Studio 3 (或更高版本)才能使用这些高级版本。

您可以在此处阅读有关android gradle插件3.0.0的更新日志,改进的编译时间等信息: https://developer.android.com/studio/releases/gradle-plugin#3-0-0

那么如何更新Android Gradle插件和Gradle?

选项1:手动

在您的build.gradle中找到gradle类路径,并将版本更新为gradle 3.0。另外,应添加google()maven的存储库:

buildscript {
    repositories {
        jcenter()
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

在gradle-wrapper.properties中找到您的distributionUrl并更新为:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

选项2:通过项目属性 (但是请注意,手动配置将覆盖它)

转到文件→项目结构→项目

enter image description here

最后一件事,您还可以选择是用Implementation()还是api()替换compile()。默认情况下,我建议只使用Implementation()。您可以在这里阅读更多有关差异的信息: https://developer.android.com/studio/build/dependencies

答案 6 :(得分:0)

我有一个很简单的原因无法解决这个问题,所以我必须发表我的回答,以防止其他人对此进行审查。

不要将存储库和依赖项放在名为build.gradle (Projet: YourProjectName)的文件中!该文件中有一条注释,内容为:

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

把那张纸条放在那里的人做得很好。取而代之的是,将您的存储库和依赖项放置在名称相似的模块文件build.gradle (Module: app)中。

应该已经有一个dependencies函数。您可能需要添加存储库功能。就我而言,是:

repositories {
    maven { url "https://jitpack.io" }
}

这应该使您可以同步并识别implementation

答案 7 :(得分:0)

我遇到了类似的错误。当我尝试使用可能的代码从may build.gradle(Module:app)包含recyclerview依赖项时。

//other build.gradle(Module: App) code above
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
    implementation 'com.android.support:recyclerview-v7:25.3.1'
}

所以我解决此问题的简单方法是将代码更改为此,在保留所有其他代码及其版本号的同时,我更改了要编译的实现。

//other build.gradle(Module: App) code above
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:recyclerview-v7:25.3.1'
}

我希望这对遇到类似问题的人有所帮助。 PS:实际错误是由implementation 'com.android.support:recyclerview-v7:25.3.1'引起的,将代码更改为compile 'com.android.support:recyclerview-v7:25.3.1'可以解决此问题。

答案 8 :(得分:0)

就我而言,我添加了这些行并解决了问题

\Illuminate\Session\Middleware\StartSession::class,