仍在警告:配置“编译”已过时,已由“实现”代替


332

我已经更换的每次出现compileimplementation在我的项目build.gradle,但我仍然得到这样的警告:

在此处输入图片说明

我试图在整个项目中寻找“编译”,但未找到匹配项。那是什么原因呢?


您是否正在使用仍在使用“编译”的本地库?
Devsil

@Devsil可能...但是我怎么找出哪一个呢?我在整个项目中尝试了“在路径中查找”,但是找不到任何出现compile..
罗布

2
如果您使用的是本地库,则会在Android Studio窗口右侧的项目查看器中看到其gradle.build文件。在该build.gradle文件中,它可能包含与实现相反的“编译”。如果您看到任何build.gradle文件,则其中不包含该文件。您使用的图书馆可能不是本地的,因此您无权更改。因此,此警告暂时可以忽略。
Devsil

1
Gradle应该提供发生问题的行号
Yetti99,18年

尝试一下:stackoverflow.com/questions/48623244/…Failed to resolve: android.arch.persistence.room:runtime:1.1.1 Open File Show in Project Structure dialog尝试将版本更改为1.0.0
Saeid '18

Answers:


496

com.google.gms:google-services已从更新到3.1.13.2.0并且警告停止出现。

buildscript {

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

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

    classpath 'com.google.gms:google-services:3.2.0'
    }
}

1
配置“编译”已过时,并已由“实现”代替。它将在2018年底删除。为了清楚
起见,

我收到“找不到com.google.gms:google-services:3.2.0”。当我尝试这个。更新:更改它会在我将其更改回3.1.1时手动触发棉绒警告,然后按Alt + Enter进行自动修复将其更改为com.google.gms:google-services:3.2.0,同步时没有错误。我不确定有什么区别,但是令人沮丧。
jwehrle

好吧,我相信我理解其中的区别。我已将Project and Module build.gradle gms类路径更改为版本3.2.0。导致问题的原因是模块更改。仅更改Project build.gradle gms类路径版本。
jwehrle

我也缺少jcenter()回购!该项目很旧,没有回购!
Yani2000

您是说我应该手动将该行添加到文件中吗?
hellogoodnight

125

我对com.google.gms:google-services发出了同样的警告。

解决方案是将build.gradle项目中文件中的类路径com.google.gms:google-services升级为类路径“ com.google.gms:google-services:3.2.0”。

在此处输入图片说明

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

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.2.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

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

在Android Studio verion 3.1中,依赖词complie替换为实现

android studio 3.1中的警告依赖项

dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            compile 'com.android.support:appcompat-v7:27.1.0'
            compile 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }

Android Studio 3.1中的依赖关系确定

    dependencies {
            implementation fileTree(dir: 'libs', include: ['*.jar'])
            implementation 'com.android.support:appcompat-v7:27.1.0'
            implementation 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    }

由Android Studio 3.1为新项目生成的Gradel。

由Android Studio 3.1为新项目生成的Gradel。

访问 https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

有关详细信息https://docs.gradle.org/current/userguide/declaring_dependencies.html


请注意,“ testCompile”更改为“ testImplementation”。
AJW

大多数答案以及最受欢迎的答案都集中在com.google.gms:google-services上,但这都是关于更新两个gradle文件中的旧命名样式的原因
kommradHomer

32

我已经将com.google.gms:google-services从3.2.0更新为3.2.1,并且警告不再出现。

 buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'com.google.gms:google-services:3.2.1'

    }
}

您只需要更改版本,例如我拥有此“ com.google.gms:google-services:3.2.0”,您只需将3.2.0替换为3.2.1。
Prateek218 '18

谢谢,我更新了错误的类,这就是为什么我得到这个错误。
Jhorra

2
我的版本classpath 'com.google.gms:google-services:4.1.0'不是最新更新,是的,它大于3.2.0。仍然没有解决方案!
sud007 '19

@ sud007您能否解释一下您面临的问题或发布build.gradle(项目级别)
Prateek218

22

使用最新版本的google gms服务为我解决了该问题。

在项目级别build.gradle中:

buildscript {
    ...
    dependencies {
        classpath 'com.google.gms:google-services:3.2.1'
        ...  
    }
}

18

打开位于以下位置的build.gradle文件:

在此处输入图片说明

这是编写依赖库的旧方法(适用于gradle版本2和更低版本):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile files('libs/volley.jar')
    compile 'com.android.support:support-v4:21.+'
}

这是为gradle版本3导入依赖关系的新(正确)方法:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation files('libs/volley.jar')
    implementation 'com.android.support:support-v4:21.+'
}

1
谢谢你,朋友!这似乎是截至2019
NaturalBornCamper

该答案对第一次遇到此问题的人有用。尽管,OP有一个不同的问题,即即使进行了这些更改,也会显示错误消息。
sud007 '19



6

无需删除该行。正如Jkrevis所写,将com.google.gms:google-services更新为3.2.0并停止警告。


1
您是否在项目的build.gradle(Module:App)中将所有出现的“ compile”替换为“ implementation”,并将build.gradle(Project)中的com.google.gms:google-services更新为3.2.0?
汤姆(Tom),

6

我没有使用就会遇到此问题com.google.gms:google-services。解决此类问题的解决方案如下:

  1. 检查build.gradle所有项目和模块的文件。或者只是全局搜索关键字“编译”以查找导致此警告的位置。
  2. 如果以上方法不能解决此警告,则使用CLI命令,将 ./gradlew assembleDebug -d > gradle.log
    详细的调试信息打印到名为gradle.log或其他文件的文件中,因为该信息太多。然后搜索单词“ WARNING”以查找中的位置gradle.log,通常您可以找到引起警告的依赖性或插件。

2
我认为这是一般的解决方案。该问题可能是由您的一个或多个依赖关系引起的
Rasmusob

5

在我的情况下,这是由Realm库引起的,将其更新到Realm的最新版本(到目前为止为5.1.0)后,问题已解决!

这是工作的gradle脚本:

buildscript {
repositories {
    jcenter()
    google()
}

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath "io.realm:realm-gradle-plugin:5.1.0"
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:3.2.1'
  }
}

3

只是更新google-service版本对我不起作用。

  • 首先,请确保将所有依赖项compile替换为implementation
  • 更新项目中的所有依赖项。因为如果您的依赖项之一存在,compile那么您的项目将显示此错误。因此,更新所有依赖项版本。

2

转到项目级别的build.gradle文件,您将找到以下突出显示的行

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.4'  //place your cursor over here 
    //and hit alt+enter and it will show you the appropriate version to select


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

    classpath 'com.google.gms:google-services:4.0.2' //the same as previously
}

2

在我的情况下,这是一个旧的依赖项,正在将compile用于传递性依赖项: com.jakewharton.hugo

从我的gradle中删除后,它编译。


1

解决此问题的方法对我来说是,我使用了较旧的Gradle版本,可以在这里找到:

我使用了gradle-3.0-rc-1-src版本,但其他版本也可以使用,尽管它可能不应该比3.0版本更新。

首先将zip文件解压缩到您喜欢的任何位置。

然后转到文件->设置->构建,执行,部署-> Gradle,并将设置更改为Use local gradle distribution。之后,请确保Gradle Home字段指向刚解压缩到的目录中的.gradle目录。

重建项目,一切都应该正常。


0

我尝试将google gms服务更改为com.google.gms:google-services:3.2.1Android Studio 3.0.1中 的最新版本,但警告仍然存在。

所推荐的编译器,我改变了所有compile依赖关系implementation,并testCompiletestImplementation这样的..

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:mediarouter-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.google.firebase:firebase-ads:12.0.1'
implementation 'com.google.firebase:firebase-crash:12.0.1'
implementation 'com.google.firebase:firebase-core:12.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
implementation 'com.google.firebase:firebase-perf:12.0.1'
implementation 'com.google.firebase:firebase-appindexing:12.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

最后,警告被删除!


0

您可以执行以下两个选择:

  1. 在您的项目中添加类路径“ com.google.gms:google-services:3.2.0”:build.gradle依赖项和
  2. 替换您的模块:build.gradle依赖于实现,您将不会收到任何警告消息。

0

刚刚从加build.gradlebuild script

classpath 'com.google.gms:google-services:3.2.0'

并且所有依赖项都"compile"替换为"implementation"

这对我有用。


请注意,如果要使用classpath,则必须在buildscript块内使用它;而且,不能implementationbuildscript块内使用。
ChumiestBucket

0

当前版本是4.2.0

buildscript {

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

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:4.2.0'
}

}


0

对我来说,将编译更改为实现已修复

之前

compile 'androidx.recyclerview:recyclerview:1.0.0'
compile 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'

-2

希望您会受到build.gradle(app)的影响。如果这样做,请按照以下步骤操作

更换编译androidTestImplementation中的build.gradle

androidTestImplementation 'com.android.support:appcompat-v7:27.1.1'
androidTestImplementation 'com.android.support:design:27.1.1'

很简单 !希望这能解决


-3

就我而言,问题是Google服务gradle插件,在gradle文件中包含以下行:

应用插件:“ com.google.gms.google-services”

删除此问题已解决


-7

转到您的build.gradle(应用级别)

build.gradle模块应用程序

和替换的单词“编译”通过“落实”

它将100%工作


6
这个答案没有用。OP已经声明已完成此操作,因此可能无济于事。
NightOwl888

1
我遇到了同样的问题,我无法生成我的应用apk bcoz,这个答案解决了我的问题
Ayoub

这是不一样的情况,OP已经说过他这样做了(我也在同一条船上),这是由于依赖关系所致
ElliotM

OP说:“我已经用实现取代了每次编译的发生”。
mapo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.