Kotlin + Gradle 未解决的引用问题

19

根据这个问题,我正在尝试设置以下项目结构

project/
   settings.gradle
   projectB/  # some common code (using spring-boot)
       build.gradle
       com/
          foo/
             bar/...
   projectA/  # an android app
       build.gradle
       com/
          foo/
             baz/...

settings.gradle 看起来像是

rootProject.name = "project"
include ":projectB"
project(":projectB").projectDir = new File(rootDir, './projectB')
include ":projectA"
project(":projectA").projectDir = new File(rootDir, './projectA')

projectA/build.gradle文件中,我有以下内容:

dependencies {
    implementation project(":projectB")
}

Android Studio似乎很高兴,并将为projectA中的projectB提供代码完成和代码搜索。然而,编译失败并出现错误。

Unsresolved reference: bar

在我尝试导入com.foo.bar.whatever的代码行上。

我已经尝试了多种不同的更改gradle文件的方法,但是没有解决这个错误。

这个设置有什么问题,如何解决?

谢谢


唉,我也尝试了好几次。它既无法在Android Studio中构建,也无法通过从命令行调用./gradelw clean build进行构建。 - Dan
1
打开模块设置,检查您的模块及其依赖项是否被正确列出,查看模块是否存在任何循环依赖关系,并在存在时进行移除。 - blizzard
我在那里没有看到任何异常。然而,这两个模块可用的选项卡不同,图标也不同。projectA 文件夹旁边有一个绿色圆圈和几个选项卡,而 projectB 在树视图和设置中有一个蓝色正方形/杯子,并且只有依赖项选项卡。 - Dan
让我们在聊天中继续这个讨论 - blizzard
4
你的文件夹结构并不是真正的 com/something/something,对吗?除非你特意更改了源目录,否则应该是 src/main/java/com/something/something - Nexcius
显示剩余7条评论
1个回答

2
在Android Studio和IntelliJ IDE中,最好将它们定义为“模块”。
例如:settings.gradle类似于:
include ":projectA", ":projectB"
rootProject.name = "project"

具有类似以下目录结构:

project/
   settings.gradle
   projectB/  # common code
       build.gradle
       src/
          test/
          debug/
          main/
             res/
             assets/
             java/
             kotlin/
                com/
                   foo/
                      bar/...


   projectA/  # android app
       build.gradle
       src/
          test/
          debug/
          main/
             res/
             assets/
             java/
             kotlin/
                com/
                   foo/
                      baz/...

如果想要使用其他目录结构,就需要改变sourceSets配置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接