从3.0.0版开始,Gradle的Android插件允许您将模块的依赖项导出到其他模块。
据我所知,这意味着,在我的android库模块中,我应该能够使用api <dependency declaration>
声明一个依赖项,并在我的主应用程序项目中访问THAT依赖项作为导出的传递依赖项,我在那里我将我的库模块声明为依赖。
我也在使用静态文件依赖。
举个例子:
我有一个类NeededEverywhere
,它在自己的gradle模块everywhere-module
中定义。该模块与我的库模块位于同一个项目中。
//library module's build.gradle:
dependencies {
api project(':everywhere-module')
}
在我的app的build.gradle(位于不同的Android Studio项目中)中,我声明了我对库的依赖,而不是everywhere-module
。这应该意味着everywhere-module
是导出的传递依赖。
//app project's build.gradle
dependencies {
implementation files("path/to/my/library/file.aar")
}
但是,我无法在我的应用中访问课程NeededEverywhere
。
我做错了什么?
答案 0 :(得分:1)
您正在直接引用AAR。
依赖关系信息不在AAR中,只不过依赖关系信息在JAR中。依赖关系信息保存在工件存储库的元数据中,例如Maven样式存储库的POM文件。
因此,具有库模块的项目需要将其AAR发布到工件库。这可能是您计算机的一个本地设备(例如mavenLocal()
)。然后,需要依赖库模块的项目从存储库执行,而不是通过file()
执行。然后,Gradle可以从存储库中获取传递依赖性信息并使用它。