Android Studio 在共享测试目录中显示未解析的引用,但执行任务按预期工作

标签 android android-studio gradle intellij-idea

我有一个多模块应用程序,其中测试源文件在模块之间共享。对于访问共享文件的每个模块,我们将以下内容添加到 build.gradle

sourceSets {
    String testDir = '../shared/src/test/java'
    test {
        java.srcDir testDir
    }
}

并使用implementation project(path: ':shared')将共享模块添加为依赖项

使用 gradle 运行测试时,一切正常,但在查看源文件时,Android Studio 错误地显示 Unresolved 引用错误。

奇怪的是,我们名为“feature”的模块之一并没有表现出这种行为。所有其他模块都会这样做,尽管它们具有相同的 build.gradle 文件。

在调查该问题时,我注意到,在项目 View 中,共享模块中的测试目录被标记为 [feature] ,就好像它属于功能模块一样。

此外,我在事件日志中发现了以下内容:

检测到重复的内容根:模块的路径 [/project/shared/src/test/java] [project.feature 已从模块 [project.app、project.network project.wrapper] 中删除

这就好像 Android Studio 故意忽略源代码。

我尝试了重置缓存、删除 .idea 和 .gradle 目录、清理等所有组合。我尝试删除并重新创建模块,但找不到任何导致问题的原因。

所有团队成员都遇到同样的问题。

我还可以看到以下内容出现在 .idea/modules/feature/project.feature.iml 文件中,但没有出现在其他模块的任何 .iml 文件中。

<content url="file://$MODULE_DIR$/../../../shared/src/test/java">
    <sourceFolder url="file://$MODULE_DIR$/../../../shared/src/test/java" isTestSource="true" />
</content>

最佳答案

这是 IDE 的限制:IDEA-214527 项目中的两个模块不能共享相同的内容根

如果您有一个常见于多个模块的代码,最好将其提取到单独的 Gradle 模块中并将其用作依赖项。

关于Android Studio 在共享测试目录中显示未解析的引用,但执行任务按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68471719/

相关文章:

android - 如何在 Android 上设置 Google Drive 访问超时

maven - 将可执行二进制文件放在Gradle项目中的哪里?

groovy - 用Gradle,Groovy和spring-boot加载springspring失败,并出现java.lang.NoSuchFieldException:classCache

java - 有关 Android 定义和概念的帮助

android - 将Android Gradle 3.0更新为5.1在运行时出现错误

android - Android Studio 中的项目不再起作用

android - Gradle存在非零值

gradle - 在执行jar任务之前,使用gradle任务生成要包含在jar中的属性文件

android - 2 ViewPager 在 Android 2.3 中不滚动

android - 安装 Xamarin 后 ADB 无法在 Android Studio 中运行