You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引入android.arch.navigation导致Program type already present错误求助

解决Android导航组件与AndroidX的依赖冲突问题

这个错误的核心原因是依赖库的版本冲突:你使用的导航组件早期版本(1.0.0-alpha01)基于旧的Android Support库构建,但你的项目已经迁移到了AndroidX库,两者包含了重复的android.support.v4相关类,导致Dex合并时出现冲突。

为什么重构AndroidX提示“未找到使用情况”?

Android Studio的AndroidX重构工具主要检测项目中直接引用的Support库类,而导航组件的旧版本是间接引入Support库的,工具没有识别到这些隐藏的依赖,所以提示没有使用情况,但实际上这些类已经被添加到项目中了。

具体解决方案

1. 替换导航组件依赖为AndroidX版本

旧的android.arch.navigation包是基于Support库的,AndroidX对应的包是androidx.navigation。修改你的应用级build.gradle中的依赖:

// 替换之前的导航组件依赖
def nav_version = "1.0.0-alpha06" // 可选择适配AndroidX的版本,也可以使用更稳定的版本如2.5.3
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

2. 更新项目级gradle的Safe Args插件

同样,把项目级build.gradle中的Safe Args插件换成AndroidX版本:

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-alpha14'
        // 替换旧的插件为AndroidX版本
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

3. 清理缓存并重新构建

完成依赖替换后,执行以下步骤确保缓存被清理:

  • 点击Android Studio菜单栏的 File -> Invalidate Caches / Restart,选择Invalidate and Restart
  • 重启后,执行 Build -> Clean Project
  • 最后执行 Build -> Rebuild Project

这样就能解决因Support库和AndroidX库重复类导致的Dex合并错误了。

内容的提问来源于stack exchange,提问作者Hector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:33