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

使用Hilt编写Android插桩测试时遇编译错误的求助

解决Hilt插桩测试构建错误:Cannot process test roots and app roots in the same compilation unit

这个错误是Hilt插件编译时的冲突问题,核心是插件同时处理了主代码和测试代码的编译单元,导致逻辑冲突。以下是具体解决步骤:

1. 补全模块级build.gradle的Hilt配置

打开你app模块(或测试所在模块)的build.gradle,确保配置完整区分主代码和测试代码的Hilt依赖:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'dagger.hilt.android.plugin'
    id 'kotlin-kapt'
}

android {
    defaultConfig {
        testInstrumentationRunner "com.mayurg.helpers.HiltTestRunner"
    }
}

dependencies {
    // 主代码Hilt依赖
    implementation "com.google.dagger:hilt-android:2.40.5"
    kapt "com.google.dagger:hilt-android-compiler:2.40.5"

    // 测试专用Hilt依赖
    androidTestImplementation "com.google.dagger:hilt-android-testing:2.40.5"
    kaptAndroidTest "com.google.dagger:hilt-android-compiler:2.40.5"
}

kapt {
    correctErrorTypes = true
}

2. 解决版本兼容性问题

你当前用的Gradle 4.2.2版本太老,和Hilt 2.40.5不兼容,建议升级:

  • 把根build.gradle里的com.android.tools.build:gradle改成7.0.4
  • 同步后更新Gradle wrapper(gradle/wrapper/gradle-wrapper.properties里的distributionUrl换成https\://services.gradle.org/distributions/gradle-7.0.2-all.zip)

如果暂时不想升级,也可以在模块build.gradle里添加Hilt编译参数绕过检查:

android {
    defaultConfig {
        testInstrumentationRunner "com.mayurg.helpers.HiltTestRunner"
        // 添加参数禁用模块安装检查
        testInstrumentationRunnerArguments += [
            'dagger.hilt.disableModulesHaveInstallInCheck': 'true'
        ]
    }
}

3. 必要的验证和清理

  • 确认HiltTestApplication存在,没有的话新建:
@HiltAndroidApp
class HiltTestApplication : Application()
  • 执行清理构建命令:
./gradlew clean
./gradlew assembleDebugAndroidTest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:12:29