模块的Android Studio依赖关系在其他模块中不可见

时间:2018-11-22 14:13:20

标签: android android-studio

我有一个名为“ Common”的模块作为库,该模块具有一些依赖项,例如:com.badlogicgames.gdxcom.squareup.wire等。并且运行良好,我在此模块中使用了它们。

还有另一个名为“跟踪”的模块,在gradle中,我有:

dependencies {
  compile project(':Common')
}

如果我尝试导入模块“ Common”的任何公共类,它都可以正常工作,但是如果我尝试导入库com.badlogicgames.gdxcom.squareup.wire的任何类,它会告诉我“无法解决符号...”,并将其高亮显示为红色。而且此类代码不会自动完成代码。

但是项目可以在设备上编译并启动,而不会出现错误。

有人有想法吗?我为项目尝试了“清理并重建”,为Android Studio尝试了“使现金无效并重新启动”。没有任何帮助。

2 个答案:

答案 0 :(得分:0)

在模块common中,您需要将这些传递依赖项声明为api,以将其传递给其他模块:

例如common / build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    api 'com.squareup.wire'
}

https://jeroenmols.com/blog/2017/06/14/androidstudio3/

答案 1 :(得分:0)

解决方案

将编译更改为api

dependencies {
  api project(':Common')
}

原因

由于不建议使用编译,因此将其视为实现。 FYI compile api (用于编译的新关键字)相同,所有内部模块均可见。 但是具有 compile 关键字的新gradle项目将被视为实施。并且在实施中内部模块对主项目不可见。

建议

您应该在gradle中声明依赖关系,因为这样会泄漏内部模块。