0

我有 2 个 gradle 项目 A 和 B

在项目 AI 中有

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}"
}

在项目 BI 中有

implementation project(':A')

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

在我将 gradle 升级到 4.4 之后,我不得不将所有需要implementation的东西从项目 A 复制到项目 B。我错过了什么?

4

1 回答 1

0

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

1

这正是它应该做的。这就是使用 java-library 插件时 api 和 implementation 依赖项之间的区别:

implementation依赖是“内部的”,所以不要泄露给下游消费者api,另一方面,依赖是传递性暴露的,因为它们参与 API 表面所以要么你需要添加implementation对 A 的显式依赖,以说明你也需要依赖,或者他们应该使用 api。我们无法自动为您确定。

2

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

于 2018-04-04T18:21:35.220 回答