升级Android Studio 3.1 Canary 9后compile过时警告的解决求助
嗨,我刚把Android Studio升级到3.1 Canary 9,结果弹出了这个烦人的警告:
Warning:Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018
我知道目前这不会影响项目运行,但不想留着这个隐患等着以后出问题。可翻遍了自己app模块的build.gradle,里面全是用implementation配置依赖的,根本找不到半条compile的语句!
问题根源
其实这个警告不一定来自你自己写的代码,很大概率是第三方插件或者依赖库在内部使用了旧的compile配置。比如你最后应用的com.google.gms.google-services插件,低版本的这个插件可能就还在依赖旧的Gradle配置语法。
解决办法
1. 升级第三方插件版本
先去项目根目录的build.gradle文件里,检查google-services插件的版本,比如原来的配置可能是这样的:
buildscript { dependencies { classpath 'com.google.gms:google-services:3.1.2' // 旧版本 } }
把它升级到和你的Firebase依赖(11.8.0)匹配的版本,比如3.2.1(这个版本是当时对应11.8.0的稳定版),或者直接升级到最新兼容版本。升级后同步Gradle,再看看警告是否消失。
2. 强制替换旧配置(兜底方案)
如果升级插件还是没用,可以在你的app模块build.gradle里添加这段配置,强制把所有依赖的compile配置替换成implementation:
android { // 你的原有配置... } // 新增这段配置 configurations.all { resolutionStrategy.eachDependency { details -> def requested = details.requested // 替换compile为implementation if (details.requested.configuration == 'compile') { details.useTarget( configuration: 'implementation', group: requested.group, name: requested.name, version: requested.version ) } } } dependencies { // 你的原有依赖... }
不过这个方法是兜底用的,优先建议升级插件和依赖版本,因为强制替换可能会带来潜在的兼容性问题。
3. 清理并重构项目
不管用了上面哪种方法,最后都记得执行:
- 点击顶部菜单栏
Build -> Clean Project - 然后执行
Build -> Rebuild Project
这样能确保Gradle重新生成所有配置,彻底清除旧的缓存。
4. 定位具体依赖(进阶操作)
如果还是想找到到底是哪个依赖在搞鬼,可以通过Gradle任务查看完整依赖树:
- 打开右侧的
Gradle面板 - 展开你的app模块,找到
Tasks -> help -> dependencies - 双击运行这个任务,在控制台里就能看到所有依赖的详细配置,从中找出还在使用
compile的那个依赖,然后针对性升级或替换它。
内容的提问来源于stack exchange,提问作者user6308160

