Java Gradle-错误无法找到参数[com.android.support:appcompat-v7:26.0.0]的方法实现()
我试图在android studio中打开现有的android项目,但gradle无法构建没有错误的应用程序 android studio不断抛出错误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
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,我认为我的答案与公认的答案不太相似。此外,我没有为我工作,这就是为什么我张贴什么工作