Android Studio 3.1:未使用compile却收到其过时警告如何定位
嘿,这个问题我之前也踩过坑!明明自己没写半行compile配置,却弹出这个警告,确实有点摸不着头脑。别慌,咱们一步步来定位根源:
定位触发警告的具体代码行方法
1. 全面排查所有build.gradle文件(包括子模块和外部脚本)
- 别只盯着app模块的
build.gradle!根目录的build.gradle、其他子模块的配置文件,甚至是你引入的外部gradle脚本(比如单独抽离的dependencies.gradle)都要检查一遍。有时候根目录的buildscript或者allprojects块里的依赖配置,可能悄悄用了compile。 - 比如根目录
build.gradle里的buildscript.dependencies,如果有旧写法用了compile,也会触发警告。
2. 通过依赖树找出间接依赖的compile配置
很多时候是你引入的第三方库,它自己的gradle配置里用了compile,导致传递过来警告。可以用gradle命令生成依赖树排查:
- 在Android Studio的Terminal中执行(Windows系统把
./gradlew换成gradlew.bat):./gradlew app:dependencies - 生成的依赖树里,仔细查找带有
compile标记的依赖项,它会清晰显示是哪个第三方库带进来的这个配置。
3. 启用gradle详细日志,追踪警告的精确来源
如果上面的方法还没找到,就打开gradle的详细日志,看警告的堆栈信息:
- 点击Android Studio右上角的
Gradle面板,找到你的项目,右键选择Run Gradle Tasks,输入clean build,然后勾选--info选项(--debug太冗余,--info足够定位)。 - 运行完成后,在日志里搜索
WARNING: Configuration 'compile' is obsolete,下面的堆栈信息会明确告诉你是哪个脚本文件的哪一行触发了这个警告。
4. 检查旧版本的gradle插件
有些第三方gradle插件(比如旧版的APT插件、打包插件)内部还在使用compile配置。可以尝试把这些插件更新到最新版本,或者查看插件文档,确认是否有替换compile的新配置项。
内容的提问来源于stack exchange,提问作者Sir Codesalot




