自版本3.0.0起,Android 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
。
我哪里做错了?
1条答案
按热度按时间odopli941#
您正在直接引用AAR。
依赖性信息不在AAR中,就像依赖性信息不在JAR中一样。依赖性信息保存在工件存储库的元数据中,比如Maven风格存储库的POM文件。
因此,包含库模块的项目需要将其AAR发布到工件存储库。该存储库可以是您计算机的本地存储库(例如
mavenLocal()
)。然后,需要依赖库模块的项目从存储库(而不是通过file()
)执行此操作。然后,Gradle可以从存储库获取传递依赖关系信息并加以利用。