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

配置safeArgs触发nav_graph inflate RuntimeException如何排查

异常说明

运行时抛出异常:RuntimeException: Exception inflating kotlin:navigation/nav_graph
异常触发场景:在navigation graph(导航图)中添加SafeArgs配置时出现崩溃,崩溃日志未提供更多可用于定位修复的有效指引。已按照开发规范校验相关类是否添加@Parcelize注解,确认所有相关类均已正确完成序列化配置,各项配置看似均符合要求,但崩溃问题仍可复现。

排查方向与解决方案
  • 校验组件版本与插件匹配性
    项目级构建文件中配置的SafeArgs插件版本,必须与app模块内引入的navigation-fragment、navigation-ui依赖版本完全一致,小版本号不匹配也会导致导航图解析失败,且不会输出明确的版本不匹配日志。Kotlin项目需使用androidx.navigation.safeargs.kotlin插件,禁止错用Java版本的androidx.navigation.safeargs插件。
  • 校验导航图XML参数配置合法性
    逐节点检查nav_graph.xml内所有<argument>配置:
    • 自定义Parcelable/Serializable类型参数需核对app:type属性填写的全限定类名,类名拼写错误、漏写包名、混淆后类名变更都会导致类加载失败触发inflate异常,Android Studio自动补全偶尔会出现漏填包名的问题,需手动核对。
    • 参数默认值需与声明类型匹配,禁止给基础类型参数传不兼容格式的默认值;若Parcelable类型参数默认值设为null,必须同步添加app:nullable="true"配置,这类语法错误不会在编译期被AS标记,会直接触发运行时崩溃。
  • 校验混淆规则配置
    若debug版本运行正常、release版本触发崩溃,优先排查混淆规则:
    • 新增规则保留所有Parcelable序列化类:
      -keep class * implements android.os.Parcelable {
          public static final android.os.Parcelable$Creator *;
      }
      
    • 新增规则保留Navigation组件相关类与SafeArgs生成类:
      -keep class androidx.navigation.** { *; }
      -keep class **.Directions { *; }
      -keep class **.Args { *; }
      
  • 校验多模块依赖合法性
    多模块项目需确认导航图中引用的跨模块参数类所在模块已通过implementation/api方式正确引入,禁止使用compileOnly方式引入导致运行时类找不到;若使用<include>标签嵌套其他模块的导航图,需确认嵌套导航图的id、参数定义无重名冲突。
  • 清理损坏的构建缓存
    SafeArgs注解处理器生成的中间类缓存损坏也会触发该问题,可按以下步骤清理重建:
    1. 关闭Android Studio
    2. 删除项目根目录下的.gradle、.idea文件夹,删除各模块下的build文件夹
    3. 执行命令./gradlew clean build(Windows环境执行gradlew.bat clean build)重新构建项目
    4. 重启Android Studio后重新运行验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:21:19