Gradle 4.4和4.6不使用依赖项目的依赖项

时间:2018-04-04 07:46:24

标签: android-gradle android-studio-3.1

我有2个gradle项目A和B

在项目A中我有

dependencies {
    ext {
        support_library_version = '26.1.0'
    }
    implementation "com.payu.india:payu-sdk:4.4.1"
    implementation "com.payu.magicretry:magicretry:1.0.4"
    implementation "com.payu.custombrowser:payu-custom-browser:6.1.1"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
}

在项目B中我有

implementation project(':A')

由于某些原因,项目B报告无法找到所有com.payu.*个导入的符号。

将gradle升级到4.4后,我不得不将所有需要的implementation从项目A复制到项目B.我缺少什么?

1 个答案:

答案 0 :(得分:0)

2个答案发布在gradle问题上here

<强> 1

这完全符合预期。这是使用java-library插件时api和实现依赖关系之间的区别:

implementation依赖关系是“内部的”,因此不要泄漏给下游消费者api依赖关系是可传递的,因为它们参与API表面 因此,您需要在A上添加明确的implementation依赖项,以解释您是否也需要依赖项,或者它们应该使用api。我们无法自动为您确定。

<强> 2

顾名思义,implementation依赖项是实现细节,不能用于编译的下游项目。如果依赖项应该是api的一部分,则应使用api配置