3

从 3.0.0 版开始,Android Plugin for Gradle 允许您将模块的依赖项导出到其他模块。

据我了解,这意味着在我的 android 库模块中,我应该能够api <dependency declaration>在我的主应用程序项目中声明一个依赖项并使用该依赖项作为导出的传递依赖项进行访问,其中我已将我的库模块声明为依赖项。

我也在使用静态文件依赖项。

举个例子:

我有一个类NeededEverywhere,它是在它自己的 gradle 模块中定义的everywhere-module。该模块与我的库模块在同一个项目中。

//library module's build.gradle:
dependencies {
    api project(':everywhere-module')
}

在我的应用程序的 build.gradle(位于不同的 Android Studio 项目中)中,我声明了我对库的依赖,但不是everywhere-module. 这应该意味着这everywhere-module是一个导出的传递依赖。

//app project's build.gradle
dependencies {
    implementation files("path/to/my/library/file.aar")
}

但是,我无法NeededEverywhere在我的应用程序中访问该课程。

我究竟做错了什么?

4

1 回答 1

3

您正在直接引用 AAR。

依赖信息不在 AAR 中,就像依赖信息在 JAR 中一样。依赖信息保存在工件存储库的元数据中,例如 Maven 样式存储库的 POM 文件。

因此,带有库模块的项目需要将其 AAR 发布到工件存储库。这可能是您机器的一个本地(例如,mavenLocal())。然后,需要依赖库模块的项目从存储库中执行此操作,而不是通过file(). 然后,Gradle 可以从存储库中获取传递依赖信息并加以利用。

于 2018-02-19T17:54:23.453 回答