Java Gradle-错误无法找到参数[com.android.support:appcompat-v7:26.0.0]的方法实现()

Java Gradle-错误无法找到参数[com.android.support:appcompat-v7:26.0.0]的方法实现(),java,android,android-studio,android-gradle-plugin,Java,Android,Android Studio,Android Gradle Plugin,我试图在android studio中打开现有的android项目,但gradle无法构建没有错误的应用程序 android studio不断抛出错误 Error:(74, 1) A problem occurred evaluating project ':app'. > Could not find method implementation() for arguments [com.android.support:appcompat-v7:26.0.0] on object of

我试图在android studio中打开现有的android项目,但gradle无法构建没有错误的应用程序

android studio不断抛出错误

Error:(74, 1) A problem occurred evaluating project ':app'.
> Could not find method implementation() for arguments 
[com.android.support:appcompat-v7:26.0.0] on object of type 
org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
我在build.gradle中的代码可以帮助理解我的问题 我的依赖关系

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')

// google & support
implementation "com.android.support:appcompat-v7:$supportVersion"
implementation "com.android.support:cardview-v7:$supportVersion"
implementation "com.android.support:recyclerview-v7:$supportVersion"
implementation "com.android.support:design:$supportVersion"
implementation "com.android.support:palette-v7:$supportVersion"
implementation "com.android.support:customtabs:$supportVersion"
implementation "com.android.support:support-v4:$supportVersion"
implementation 'com.google.android.exoplayer:exoplayer:r2.0.4'

// utils
implementation 'com.github.bumptech.glide:glide:4.0.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
implementation 'com.koushikdutta.ion:ion:2.1.7'
implementation 'com.github.Commit451:bypasses:1.0.4'
implementation 'com.jakewharton:butterknife:8.8.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'
implementation 'com.drewnoakes:metadata-extractor:2.9.1'
implementation "com.orhanobut:hawk:2.0.1"

}

请帮助解决此问题

实现
替换为
编译


compile
最近被
implementation
api
所取代。您需要至少使用Gradle 3.4或更新版本才能使用
implementation
。不建议继续使用不推荐使用的
编译
,因为这会导致生成时间变慢。有关更多详细信息,请参阅官方android开发者指南:

当您的模块配置实现依赖项时,它会让Gradle知道该模块不希望在编译时将依赖项泄漏给其他模块。也就是说,依赖项仅在运行时对其他模块可用。 使用此依赖项配置而不是api或编译可以显著提高构建时间,因为它减少了构建系统需要重新编译的项目数量。例如,如果一个实现依赖项更改了它的API,Gradle只重新编译该依赖项和直接依赖它的模块。大多数应用程序和测试模块都应使用此配置

更新:
编译
将在2018年底前删除,因此请确保您现在只使用
实现

警告:配置“compile”已过时,已替换为 “实施”。将于2018年底拆除


更改应用插件:“java” 应用插件:“java库”


在使用“实现”之前,请确保您的Gradle版本为
3.*.
或更高版本

打开“依赖项”下的项目级渐变文件:

dependencies{
    classpath 'com.android.tools.build:gradle:3.1.2'
}
打开'gradle wrapper.properties'文件并设置
distributionUrl

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
或最新版本

同步项目。我希望这能解决您的问题。

您的代码

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
换成

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')

太可笑了,但我还是想分享我的经验,以防有人像我一样陷入这种境地

请检查您是否更改了:
compileSdkVersion
-->
implementationSdkVersion
错误地更改了

如本文所述,在使用“实现”时使用gradle插件版本3或更高版本

另外,使用
buildscript
中的
google()
存储库

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
    }
}

这些更改应该可以解决这个问题。

确保在android/app/build.gradle中添加这些依赖项,而不是在android/build.gradle中添加这些依赖项。

类路径替换
实现。那应该行。

我将
实现从根级别的build.gradle移动到模块级别的build.gradle。它解决了这个问题。

如果未定义实现,则说明您在错误的文件上写入。在Unity 2019+上,正确的文件是
主模板grandle
,而不是其他一些文件。

对于我来说,我把依赖项放错了位置

buildscript {
  dependencies {
    //Don't put dependencies here.
  }
}

dependencies {
 //Put them here
}

在我的例子中,这是因为我使用了
实现
而不是
实现

,正如官方建议的那样,您需要添加以下内容:

buildscript {
    repositories {
        // Gradle 4.1 and higher include support for Google's Maven repo using
        // the google() method. And you need to include this repo to download
        // Android Gradle plugin 3.0.0 or higher.
        google()
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.0'
    }
}


添加这些可以删除我的错误。也可以使用实现而不是编译。

您使用的是Android Studio 3.0吗?我是Android新手。但是,是的,我更新到了3.0,因为之前的错误一直在抱怨它。不,android studio 2.3.3尝试用
编译
替换
实现
。。谢谢,我已经在Gradle4.4上了,仍然突然有这个问题。你的Gradle插件版本是什么@InfiniteLops插件版本为171.4249.39。tools.build:Gradle版本在Android Studio中是3.0.1,如果您从头开始创建一个新项目:它的Gradle文件是否使用
实现
编译
@对我来说,差别是毫秒。为什么要在未损坏的情况下处理它?“错误”意味着我们不应该从compileSdk更改它。。要实现SDK。。正确的?它应该保持编译版本吗任何读到这篇评论的人的答案都是-是的,这不是一个解决方案!将compile更改为implementation仅适用于依赖项。标题为“找不到方法实现()”,因此使用“实现”而不是“编译”将不会有帮助(除非错误消息完全错误)。我已经在为我们的Artifactory存储库中存在的ivy模块使用“实现”。答案无助于说明除润滑的事实是正确的,但不会导致标题中显示错误消息。查找Sunil Kumar回答:您编辑了错误的文件。如果确认,请否决该答案,因为它具有误导性。TY@GaVaRaVa你这边运气好吗?虽然公认的答案似乎是最受欢迎的,但它不是唯一正确的答案。在我的例子中,正是由于缺少“apply plugin:'java library”,导致了完全相同的异常(当然是不同的对象)。因此,感谢@xiqing lau添加此可能的解决方案。已确认。这是正确的答案。将依赖项添加到错误的build.gradle文件时,会显示如上所述的错误消息。@FrankKrumnow无法确认,因为可能还有其他原因。这是我的问题,因此值得检查您是否添加到了正确的文件中!同意。这个答案应该是正确的。非常感谢!这也是我的问题,在我花了两天时间试图修复它之后。在以前的Cordova版本中,依赖项通常存在于android/build.gradle中,所以这让我很困惑。嗨,Nander,我认为我的答案与公认的答案不太相似。此外,我没有为我工作,这就是为什么我张贴什么工作