我有一个名为“ Common”的模块作为库,该模块具有一些依赖项,例如:com.badlogicgames.gdx
,com.squareup.wire
等。并且运行良好,我在此模块中使用了它们。
还有另一个名为“跟踪”的模块,在gradle中,我有:
dependencies {
compile project(':Common')
}
如果我尝试导入模块“ Common”的任何公共类,它都可以正常工作,但是如果我尝试导入库com.badlogicgames.gdx
或com.squareup.wire
的任何类,它会告诉我“无法解决符号...”,并将其高亮显示为红色。而且此类代码不会自动完成代码。
但是项目可以在设备上编译并启动,而不会出现错误。
有人有想法吗?我为项目尝试了“清理并重建”,为Android Studio尝试了“使现金无效并重新启动”。没有任何帮助。
答案 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'
}
答案 1 :(得分:0)
解决方案
将编译更改为api
dependencies {
api project(':Common')
}
原因
由于不建议使用编译,因此将其视为实现。 FYI compile 和 api (用于编译的新关键字)相同,所有内部模块均可见。 但是具有 compile 关键字的新gradle项目将被视为实施。并且在实施中内部模块对主项目不可见。
建议
您应该在gradle中声明依赖关系,因为这样会泄漏内部模块。