运行gradlew app:dependencies报错,无法查看依赖树排查冲突
解决Gradle依赖树查看失败的问题
看来你被这三个Gradle错误折腾得够呛,我来帮你拆解根源,一步步解决:
核心问题分析
你遇到的三个错误本质是Java版本与旧版Gradle/Android Gradle插件(AGP)不兼容:
javax/xml/bind/annotation/XmlSchema:Java 9+移除了JAXB默认模块,旧版Gradle工具依赖它Could not initialize class com.android.sdklib.repository.AndroidSdkHandler:旧AGP版本不支持Java 9+的环境Could not determine java version from '9.0.4':Gradle 4.1完全不识别Java 9的版本号
下面是两种解决方案,优先推荐第一种(最稳妥):
方案一:降级Java版本到8(优先选择)
旧版Android构建工具(AGP 3.0.1 + Gradle 4.1)只兼容Java 8,这是最不容易引入新问题的方案:
- 安装JDK 8(如果没装的话)
- 在Android Studio中打开
File > Project Structure > SDK Location,把JDK location指向JDK 8的安装路径 - 重启IDE后,重新执行
./gradlew app:dependencies
方案二:升级工具链适配Java 9+(适合长期维护)
如果你不想降级Java,需要同步升级Gradle和AGP到支持Java 9的版本:
1. 修改项目级build.gradle
升级AGP和Google Services插件到兼容版本:
buildscript { ext.objectboxVersion = '1.5.0' repositories { jcenter() google() // 优先使用google()仓库,替代旧的maven.google.com } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' // AGP 3.2.x是支持Java 9的最低版本 classpath 'com.google.gms:google-services:4.3.10' // 升级到与AGP兼容的版本 classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion" } }
2. 修改gradle-wrapper.properties
升级Gradle到对应AGP 3.2.x的版本(Gradle 4.6):
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
3. (可选)添加JAXB依赖
如果还是遇到JAXB相关错误,在项目级build.gradle的buildscript.dependencies中添加:
classpath 'javax.xml.bind:jaxb-api:2.3.1' classpath 'com.sun.xml.bind:jaxb-core:2.3.0.1' classpath 'com.sun.xml.bind:jaxb-impl:2.3.2' classpath 'javax.activation:activation:1.1.1'
验证与依赖冲突排查
完成上述修改后,执行命令验证:
./gradlew app:dependencies
如果需要更详细的错误日志,加上--stacktrace参数:
./gradlew app:dependencies --stacktrace
当依赖树成功生成后,要找出使用com.google.gms的模块,可以用过滤命令快速定位:
./gradlew app:dependencies | grep "com.google.gms"
或者查看某个具体依赖的完整依赖链:
./gradlew app:dependencyInsight --dependency com.google.gms:play-services-auth --configuration implementation
内容的提问来源于stack exchange,提问作者Khemraj Sharma
相关产品推荐
相关产品推荐

