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

AOSP中Hilt与Jetpack Compose集成启动报错的解决方法

解决AOSP中Hilt Navigation Compose启动时NoClassDefFoundError问题

以下是针对java.lang.NoClassDefFoundError: androidx.hilt.navigation.HiltViewModelFactory报错的具体解决步骤:

  • 补全Android.bp中的依赖配置
    HiltViewModelFactory类属于hilt-navigation库,而hilt-navigation-compose依赖该库但AOSP构建系统不会自动传递依赖,必须显式添加到static_libs中。同时要确保所有Hilt相关依赖版本一致:

    android_app {
        name: "MyApp",
        // 其他配置...
        static_libs: [
            "androidx.hilt_hilt-android",
            "androidx.hilt_hilt-navigation-compose",
            "androidx.hilt_hilt-navigation", // 必须添加这个
            "androidx.hilt_hilt-lifecycle-viewmodel",
        ],
        // 其他配置...
    }
    
  • 验证AAR包的版本与完整性
    检查引入的所有Hilt相关AAR(hilt-android、hilt-navigation、hilt-navigation-compose)是否为同一版本,版本不匹配会导致类加载失败。确保AAR包完整,没有损坏或缺失类文件。

  • 检查混淆规则(若启用)
    如果应用开启了ProGuard/R8混淆,需添加规则避免Hilt核心类被混淆移除:

    -keep class androidx.hilt.navigation.HiltViewModelFactory { *; }
    -keep class androidx.hilt.navigation.compose.HiltViewModelKt { *; }
    -keep class dagger.hilt.android.** { *; }
    

    在AOSP中可通过Android.bp的proguard_flags字段配置这些规则。

  • 验证编译依赖与APK内容
    执行m MyApp -n查看完整编译命令,确认hilt-navigation的AAR被正确引入;也可以解压APK,用dexdump工具检查classes.dex中是否存在androidx.hilt.navigation.HiltViewModelFactory类。

  • 确认Hilt初始化与导航组件使用规范

    1. 确保Application类添加了@HiltAndroidApp注解,并在AndroidManifest.xml中正确声明。
    2. 确认使用hiltNavHost()而非普通NavHost创建导航容器,hiltViewModel()需要依赖前者提供的Hilt兼容ViewModelStoreOwner。

内容的提问来源于stack exchange,提问作者Zappy.Mans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:22:34