仍然收到警告:配置“编译”已过时并已替换为“实现”
Posted
技术标签:
【中文标题】仍然收到警告:配置“编译”已过时并已替换为“实现”【英文标题】:Still getting warning : Configuration 'compile' is obsolete and has been replaced with 'implementation' 【发布时间】:2018-07-20 11:05:45 【问题描述】:我已将项目的build.gradle
中的implementation
替换为compile
,但我仍然收到此警告:
我试图在整个项目中寻找“编译”,但没有找到匹配项。那么可能是什么原因呢?
【问题讨论】:
你是否还在使用一个仍在使用 'compile' 的本地库? @Devsil 可能......但我怎样才能找出哪一个?我在整个项目中尝试了在路径中查找,但找不到任何出现compile
..
如果您使用的是本地库,您将在 android Studio 窗口右侧的项目查看器中看到其 gradle.build 文件。在那个 build.gradle 文件中,它可能包含一个“编译”而不是实现。如果您看到的任何 build.gradle 文件都不包含该文件。它可能是您正在使用的非本地库,因此无法让您访问更改它。所以这个警告现在可以忽略。
Gradle 应该给出出现问题的行号
试试看:***.com/questions/48623244/… 和Failed to resolve: android.arch.persistence.room:runtime:1.1.1 Open File Show in Project Structure dialog
尝试将版本更改为1.0.0
【参考方案1】:
我已将 com.google.gms:google-services
从 3.1.1
更新为 3.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'
【讨论】:
配置“编译”已过时,已替换为“实施”。它将在 2018 年底被删除要明确我没有使用任何谷歌服务依赖项 classpath 'com.android.tools.build:gradle:3.1.0' 我收到“找不到 com.google.gms:google-services:3.2.0。”当我尝试这个时。更新:当我将其更改回 3.1.1 时,手动更改它会触发 lint 警告,然后 Alt+Enter 应用修复自动将其更改为 com.google.gms:google-services:3.2.0,同步时没有错误。我不确定有什么区别,但这很令人沮丧。 好吧,我相信我理解其中的区别。我已将 Project 和 Module build.gradle gms 类路径更改为 3.2.0 版。这是导致问题的模块更改。仅更改 Project build.gradle gms 类路径版本。 我也错过了 jcenter() 回购!该项目很旧,没有包含那个 repo! 你的意思是我应该手动将该行添加到文件中?【参考方案2】:我对 com.google.gms:google-services 也有同样的警告。
解决方案是在 build.gradle 项目的文件中将 classpath com.google.gms:google-services 升级为 classpath '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 版本 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'
依赖关系OK在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。
访问https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html
详情https://docs.gradle.org/current/userguide/declaring_dependencies.html
【讨论】:
请注意,“testCompile”更改为“testImplementation”。 大多数答案,也是最受欢迎的答案,都集中在 com.google.gms:google-services 上,但都是为了更新两个 gradle 文件中的旧命名样式【参考方案3】:我已将 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。跨度> 谢谢,我更新了错误的类,这就是我得到错误的原因。 我的版本classpath 'com.google.gms:google-services:4.1.0'
不是最新的,但是是的,它大于 3.2.0
。仍然没有解决方案!
@sud007 你能解释一下你面临什么问题或发布你的 build.gradle(项目级别)【参考方案4】:
使用当前最新版本的 google gms 服务为我解决了这个问题。
在项目级build.gradle:
buildscript
...
dependencies
classpath 'com.google.gms:google-services:3.2.1'
...
【讨论】:
【参考方案5】:打开位于此处的 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.+'
【讨论】:
谢谢朋友!这似乎是截至 2019 年 1 月的最新答案 这个答案对第一次遇到这个问题的人有帮助。虽然,OP 有一个不同的问题,即即使进行了这些更改,也会显示错误消息。【参考方案6】:谷歌回复:https://issuetracker.google.com/issues/74048134
会有一些依赖仍然使用编译,仔细检查你的应用依赖和传递依赖。
【讨论】:
我为我的项目删除了所有 build.gradles 中的所有依赖项,但仍然出现错误 编辑:它是由领域引起的,使用旧版本【参考方案7】:https://issuetracker.google.com/issues/72479188 表示插件有时会引入“编译”依赖项,这就是触发警告的原因。可能最简单的方法就是给这个问题加注星标,然后等到他们修复它来指出是哪些插件导致了这个问题。
【讨论】:
【参考方案8】:无需删除该行。正如 Jkrevis 所写,将 com.google.gms:google-services 更新为 3.2.0 并停止警告。
【讨论】:
您是否在项目的 build.gradle(Module:App) 中将每次出现的“compile”替换为“implementation”并更新了 build.gradle(Project) 中的 com.google.gms:google-services ) 到 3.2.0 ?【参考方案9】:在我的情况下,这是由 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'
【讨论】:
“io.realm:realm-gradle-plugin:1.1.0”是我的问题。我更新到最新版本,问题就消失了。【参考方案10】:我在不使用com.google.gms:google-services
的情况下遇到了这个问题。
解决此类问题的解决方案如下:
-
检查所有项目和模块的
build.gradle
文件。或者只是全局搜索关键字“编译”以查找导致此警告的原因。
如果上述方法无法解决此警告,则使用 CLI 命令,
./gradlew assembleDebug -d > gradle.log
将详细的调试信息打印到名为gradle.log
的文件或任何其他文件中,因为信息太多。然后搜索单词“WARNING”找到gradle.log
中的位置,通常可以找到导致警告的依赖或插件。
【讨论】:
我认为这是一般的解决方案。问题可能是由您的任何一个或多个依赖项引起的【参考方案11】:仅更新 google-service 版本对我不起作用。
首先确保所有依赖项compile
都替换为implementation
。
更新项目中的所有依赖项。因为如果您的依赖项之一具有compile
,那么您的项目将显示此错误。所以更新所有依赖版本。
【讨论】:
【参考方案12】:我已尝试在 Android Studio 3.0.1 中将 google gms 服务 更改为最新的 com.google.gms:google-services:3.2.1
,但警告仍然存在。
按照编译器的建议,我将所有 compile
依赖项更改为 implementation
和 testCompile
到 testImplementation
就像这样..
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"
最后警告被删除了!
【讨论】:
【参考方案13】:转到项目级别的 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
【讨论】:
【参考方案14】:在我的例子中,它是一个旧的依赖项,它使用 compile 来传递传递依赖项:com.jakewharton.hugo
从我的 gradle 中删除它后,它编译了。
【讨论】:
【参考方案15】:解决这个问题的解决方法是我使用了旧版本的 Gradle,可以找到 here:
我使用的是 gradle-3.0-rc-1-src 版本,但其他版本也可以,虽然它可能不应该比 3.0 版本更新。
首先将 zip 文件解压缩到您喜欢的任何位置。
然后转到 File -> Settings -> Build, Execution, Deployment -> Gradle 并将设置更改为 Use local gradle distribution。之后确保 Gradle Home-field 指向您刚刚解压缩到的目录中的 .gradle 目录。
重建项目,一切都应该没问题。
【讨论】:
【参考方案16】:当前版本是4.2.0:
构建脚本
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'
【讨论】:
【参考方案17】:Google 最近在 2021 年 9 月更新了它的服务。进行了更新,我遇到了同样的问题,然后我在 android studio 中更新了 build.gradle 文件
有问题的旧版本
classpath 'com.google.gms:google-services:4.3.3'
更新了 build.gradle 中的代码
classpath 'com.google.gms:google-services:4.3.10'
【讨论】:
【参考方案18】:你可以这样做两个选项:
-
在您的项目中添加类路径“com.google.gms:google-services:3.2.0”:build.gradle 依赖项
和
替换你的模块:build.gradle 依赖于编译和实现
并且您不会收到任何警告消息。
【讨论】:
【参考方案19】:只需从build.gradle
添加从build script
classpath 'com.google.gms:google-services:3.2.0'
所有的依赖"compile"
替换为"implementation"
。
这对我有用。
【讨论】:
请注意,如果您使用的是classpath
,则必须在buildscript
块内使用它;此外,不能在 buildscript
块内使用 implementation
。【参考方案20】:
对我来说,将 compile 更改为 implementation 修复了它
之前
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'
【讨论】:
【参考方案21】:我尝试了这里提到的所有解决方案,但没有运气。 我在我的 build.gradle 文件中发现如下:
dependencies
classpath 'com.android.tools.build:gradle:3.3.0'
我只是将其更改如下并保存并尝试构建成功。
dependencies
classpath 'com.android.tools.build:gradle:3.2.0'
【讨论】:
【参考方案22】:希望您受到 build.gradle(app) 的影响 如果这样做,请按照此步骤操作
将 build.gradle 中的 compile 替换为 androidTestImplementation
androidTestImplementation 'com.android.support:appcompat-v7:27.1.1'
androidTestImplementation 'com.android.support:design:27.1.1'
如此简单!希望这能解决
【讨论】:
【参考方案23】:在我的情况下,问题是 Google 服务 gradle 插件在 gradle 文件中有以下行:
应用插件:'com.google.gms.google-services'
删除此问题解决了问题
【讨论】:
【参考方案24】:去找你build.gradle(应用级)
build.gradle module app
并将“编译”这个词替换为“实现”
它将 100% 工作
【讨论】:
这个答案没用。 OP 已经声明这已经完成了,所以它不可能有帮助。 我遇到了同样的问题,我无法生成我的应用 apk bcoz,那个答案解决了我的问题 这是不一样的情况,OP已经说过他已经这样做了(我也在同一条船上)这是由于依赖关系 OP 说“我已经用实现替换了每次出现的编译”。以上是关于仍然收到警告:配置“编译”已过时并已替换为“实现”的主要内容,如果未能解决你的问题,请参考以下文章
警告:API 'variant.getExternalNativeBuildTasks()' 已过时并已替换为 'variant.getExternalNativeBuildProviders()'
Android Gradle 插件(警告)API 'variant.getMergeResources()' 已过时并已替换为 'variant.getMergeResourcesProvider()
警告:API 'variant.getJavaCompile()' 已过时,已替换为 'variant.getJavaCompileProvider()'
警告:API 'variant.getMergeResources()' 已过时,已替换为 'variant.getMergeResourcesProvider()'