如何在android库

时间:2018-02-19 17:50:25

标签: android android-studio gradle transitive-dependency gradle-dependencies

从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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您正在直接引用AAR。

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

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