Android Studio无法解析Java库子模块中的复合includeBuild依赖项的符号

我有一个android项目,其中:app模块使用java库模块:core,其中包含业务逻辑并且没有android代码。 :core模块取决于一个Java库(在我的情况下为Smack),我使用gradle的复合构建功能(includeBuild)替换了该库。

生成和运行应用程序(通过AS以及仅使用gradle)的工作方式都非常吸引人,但是Android Studio抱怨在:core模块中找不到Smack类。因此,当在:core模块中进行编码时,IDE中没有自动完成功能,也没有很多警告。将鼠标悬停在Smack导入上会产生错误消息“无法解析符号”。 依赖性可以通过:app模块来解决。

AS建议在Smack上添加项目依赖项,但是这导致gradle无法再解决它。到目前为止,这也不是我理解复合材料构建的方式。

我怀疑AS将Smack误认为是Android库,因此它只能让:app模块将其解决。代表该理论的是,如果我将:core更改为android库,则可以按预期工作。

如果我在Intellij中构建类似的设置(没有android部件),那么一切都会按预期进行。

我已经尝试在Android Studio中使用不同的gradle和gradle插件版本,但到目前为止没有成功。使缓存无效并删除.AndroidStudioX.X目录也无济于事。现在我正在运行AS 3.6.3。

I also already tried manual substitution as described here.

A minimal (not) working example for you to reproduce the issue can be found here.

任何帮助都非常欢迎:)

评论