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

开启混淆后Jetpack Compose Navigation在Release构建抛出异常

Debug构建运行正常,但Release版本抛出如下异常,使用的Navigation版本为:implementation "androidx.navigation:navigation-compose:2.5.3"

异常信息

Fatal Exception: java.lang.IllegalArgumentException: navigation destination screen_dashboard is not a direct child of this NavGraph
       at androidx.navigation.NavGraphNavigator.navigate(NavGraphNavigator.kt:72)
       at androidx.navigation.NavGraphNavigator.navigate(NavGraphNavigator.kt:49)
       at androidx.navigation.NavController.navigateInternal(NavController.kt:260)
       at androidx.navigation.NavController.navigate(NavController.kt:1719)
       at androidx.navigation.NavController.onGraphCreated(NavController.kt:1161)
       at androidx.navigation.NavController.setGraph(NavController.kt:1086)
       at androidx.navigation.NavController.setGraph(NavController.kt:100)
       at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:118)
       at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:67)

已尝试在proguard-rules.pro中添加规则-keep class androidx.navigation.** { *; },但异常仍未解决。


解决方案

1. 检查导航图层级结构

确认screen_dashboard是否为当前NavGraph的直接子节点:

  • 若该目的地嵌套在子NavGraph中,导航时需使用完整路径(如parent_graph/screen_dashboard),或通过子图定义的Action跳转,而非直接引用目的地ID。

2. 优化ProGuard混淆规则

原规则覆盖范围不足,补充以下规则到proguard-rules.pro:

# 保护Navigation Compose核心类
-keepnames class androidx.navigation.compose.** { *; }
# 保护自定义导航相关类(替换为你的项目导航包路径)
-keepnames class com.yourproject.navigation.** { *; }
# 保留Navigation内部Companion对象
-keep class androidx.navigation.**$Companion { *; }
# 保留NavDestination注解相关方法
-keepclasseswithmembers class * {
    @androidx.navigation.NavDestination.* <methods>;
}
# 保留资源ID中的导航目的地ID
-keepclassmembers class **.R$id {
    public static <fields>;
}

3. 清理缓存并重新构建

执行命令清理项目缓存,重新生成Release包:

./gradlew clean assembleRelease

4. 检查Safe Args配置(若使用)

如果用了Safe Args生成导航代码,补充规则保留生成类:

-keep class com.yourproject.navigation.**Args { *; }
-keep class com.yourproject.navigation.**Directions { *; }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:06:25