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

问题描述 投票:57回答:6

我试图在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"

}

请帮忙解决问题

java android android-studio android-gradle
6个回答
77
投票

compile替换implementation

compile最近是deprecated,由implementationapi取代


22
投票

在使用“实施”之前,请确保您的gradle版本3 ..或更高版本。

在依赖项下打开项目级gradle文件

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

open gradle wrapper-properties使用分发URL作为

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

或最新版本

synk项目,希望这解决了你的问题


21
投票

你需要至少使用Gradle 3.4或更新才能使用implementation。建议不要继续使用已弃用的compile,因为这会导致构建时间变慢。有关更多详细信息,请参阅官方android开发者指南

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

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations

更新:compile将在2018年底之前删除,因此请确保您现在只使用implementation

警告:配置'compile'已过时,已替换为'implementation'。它将在2018年底删除


3
投票

更改apply plugin:'java'应用插件:'java-library'

java-library-plugin


1
投票

你的守则

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

替换它

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

1
投票

这太荒谬了,但我仍然想分享我的经验,以防有人陷入像我这样的境地。

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

© www.soinside.com 2019 - 2024. All rights reserved.