Java项目添加Safe Args库遇变体匹配错误求助
问题场景
已成功在Java Android项目中添加Navigation核心依赖:
def nav_version = "2.7.5" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version"
但添加Safe Args插件的buildscript配置时,未进入下载阶段就触发报错:
buildscript { repositories { google() } dependencies { def nav_version = "2.7.5" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
错误提示:
No matching variant of androidx.navigation:navigation-safe-args-gradle-plugin:2.7.5 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.5' but:
可行解决方案
1. 修正buildscript块的位置
确保上述buildscript代码块放置在项目根目录的build.gradle文件中,而非模块级别的build.gradle。插件类路径属于项目级配置,不能在模块内声明。
2. 改用Gradle插件DSL声明方式(推荐)
针对Gradle 7.0+版本,官方推荐使用plugins块替代传统buildscript,可避免版本匹配冲突:
在根项目的build.gradle中添加:
plugins { id 'androidx.navigation.safeargs' version '2.7.5' apply false }
随后在模块级build.gradle中应用插件:
plugins { // 保留原有插件(如com.android.application) id 'androidx.navigation.safeargs' }
3. 校验AGP与Gradle版本兼容性
Navigation 2.7.5要求Android Gradle Plugin(AGP)版本至少为7.4.0,且Gradle版本需与AGP对应:
- AGP 7.4.x 适配 Gradle 7.5+
- 若当前AGP版本低于7.4.0,需同步升级AGP和Gradle版本,或降级Navigation版本至与现有AGP兼容的范围。
4. 统一Java版本配置
确保项目全局Java版本一致为11:
在模块级build.gradle中添加:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } }
同时在gradle.properties中指定JDK路径:
org.gradle.java.home=/path/to/your/java11/jdk
(替换为本地Java 11 JDK的实际路径)
5. 清理缓存并重新同步
执行以下操作重置缓存:
- 点击Android Studio菜单栏
File > Invalidate Caches... > Invalidate and Restart - 删除项目根目录下的
.gradle、build文件夹,以及模块内的build文件夹 - 重新点击工具栏的
Sync Project with Gradle Files
内容的提问来源于stack exchange,提问作者Reza

