正确使用“实施”

时间:2018-10-02 05:53:39

标签: android android-studio gradle

我有一个结构如下的项目。

+-MyApplication
+-MyLibrayOne
+-MyLibrayTwo

MyApplication是我的主要应用程序,而MyLibrayOneMyLibrayTwo是导入到项目中的两个库。 MyApplication使用MyLibrayOne的某些类,而MyLibrayOne使用MyLibrayTwo的某些类。

.gradle的{​​{1}}文件中,我使用了MyLibrayOne。一切正常。但是,如果我将- compile project(':MyLibrayTwo')替换为compile,则无法从implementation导入类。它给出了MyLibrayTwo错误。

2 个答案:

答案 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中查看。