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

Android使用Navigation-args时出现Unresolved reference: R问题求助

解决Android Studio更新后Navigation Args构建失败的问题

一、修复SearchNsdFragmentDirections.kt中的「Unresolved reference: R」错误

  • 对齐Navigation插件与AGP版本兼容性:更新Android Studio后AGP版本会同步升级,需确保Navigation Safe Args插件版本与之匹配。比如AGP 8.x对应Navigation 2.7.x及以上版本,在项目根目录的settings.gradle(或build.gradle的pluginManagement块)中调整版本:
    id("androidx.navigation.safeargs.kotlin") version "2.7.6" apply false
    
  • 清理缓存并重构项目:终端执行./gradlew clean,再点击Android Studio菜单栏的「Build」→「Rebuild Project」。生成的Directions文件可能因缓存残留异常,清理后重新生成即可修复R引用问题。
  • 确认模块级插件应用:检查对应模块的build.gradle顶部是否添加了Safe Args插件:
    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
        id("androidx.navigation.safeargs.kotlin") // 确保这一行存在
    }
    
  • 排查资源文件错误:如果模块内布局、字符串等资源文件存在语法错误,会导致R类无法正常生成,进而影响Directions文件。检查Build窗口的错误日志,修复所有资源相关的编译问题。

二、处理「BaseVariant.getApplicationIdTextResource已过时」警告

  • 定位依赖来源:执行./gradlew dependencies查看项目依赖树,或在Build窗口的警告详情中找到使用该过时API的第三方库/插件。
  • 升级依赖版本:找到对应库后,升级到最新版本,官方通常会修复AGP兼容性问题,替换过时API调用。
  • 自定义代码修复:如果是你自己的Gradle脚本或插件使用了该API,直接替换为ApplicationVariant.applicationId:
    // 旧代码
    def appId = variant.getApplicationIdTextResource()
    // 替换为
    def appId = variant.applicationId
    
  • 临时抑制警告(不推荐长期使用):若暂时无法升级依赖,可在模块级build.gradle中配置忽略该警告:
    android {
        lintOptions {
            disable("DeprecatedApi")
        }
    }
    

注意:优先解决「Unresolved reference: R」错误,这是直接导致构建失败的编译错误;过时API警告若被设置为构建失败触发条件,再针对性处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:31:46