我有一个结构如下的项目。
+-MyApplication
+-MyLibrayOne
+-MyLibrayTwo
MyApplication
是我的主要应用程序,而MyLibrayOne
和MyLibrayTwo
是导入到项目中的两个库。 MyApplication
使用MyLibrayOne
的某些类,而MyLibrayOne
使用MyLibrayTwo
的某些类。
在.gradle
的{{1}}文件中,我使用了MyLibrayOne
。一切正常。但是,如果我将- compile project(':MyLibrayTwo')
替换为compile
,则无法从implementation
导入类。它给出了MyLibrayTwo
错误。
答案 0 :(得分:2)
使用api
代替implementation
将解决您的问题。即
dependencies {
// Enforce the runtime dependencies
api project(':MyLibrayOne')
api project(':MyLibrayTwo')
}
简单解释一下,api
将让依赖项目查看所有依赖项目的类,但是implementation
无法做到这一点。
答案 1 :(得分:1)
首先,我建议您在Google I/O 2017中查看。 编译和实现不是一回事。 编译使应用程序可以访问子库可以访问的所有子依赖项。这意味着,如果MyLibrayOne依赖于MyLibraryTwo,并且还需要从MyLibrarayTwo访问类,则必须直接使用graile指令使用compile指令从MyLibrayTwo中公开类。 如果不需要,那么实施就足够了。 我只能猜测您的情况是前者,因此您需要继续使用编译。由于现在不建议使用编译,因此请使用api指令。他们是一样的。 另外,请在gradle documentation中查看。