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

我试图打开现有的 android 项目在 android 工作室和它的评级不能建立没有错误的应用程序

错误机器人工作室继续扔

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.

我的编译代码,可以帮助理解我的问题 我的依赖

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"


}

请帮忙解决这个问题

308161 次浏览

implementation代替 compile

compile最近被 不赞成implementationapi所取代

您需要使用至少 3.4级或更新的能够使用 implementation。不建议继续使用已弃用的 compile,因为这可能导致较慢的构建时间。更多细节见官方的 android 开发者指南:

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

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

更新: compile将在2018年底被移除,所以确保你现在只使用 implementation:

警告: 配置“编译”已过时,已替换为 将于2018年底撤销

更改应用程序插件: ‘ java’ 应用插件: ‘ java-library’

Java-library-plugin

在使用“实现”之前,确保你的 Gradle 版本是 3.*.*或更高。

在依赖项下打开项目级别的 Gradle 文件:

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

正如这里提到的,https://stackoverflow.com/a/50941562/2186220,使用级别插件版本3或更高,而使用’实现’。

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

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

这些改变应该能解决问题。

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

classpath代替你的 implementation应该可以。

我将 implementation从根级 build.gradle 移到模块级 build.gradle,它解决了这个问题。

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

对我来说,我把我的依赖关系放在了错误的位置。

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


dependencies {
//Put them here
}

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

正如官方 医生所建议的那样,你需要添加以下内容:

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'
}
}

添加这些代码可以删除我的错误。也可以使用实现代替编译。

通过在应用程序文件夹中添加我的依赖项解决了这个问题

转到 app < Gradle Scripts < Gradle.build (Module: app)并在该文件中添加依赖项,而不是全局 build.Gradle 文件

enter image description here

对我来说,问题在于我写道:

android {
compileSdk 31
…

而不是:

android {
compileSdkVersion 31

所以确保你的 build.gradle是正确的。