如何在Android应用程序及其库之间共享gradle依赖关系?

时间:2018-10-29 22:10:50

标签: android gradle android-gradle google-play

在我的Android应用程序中,我有google play计费实现,我在build.gradle中将其定义为:

  

实现'com.android.billingclient:billing:1.2'

此外,我还有自己创建的库,用于将一些共享代码集成到我的项目中。在该库中,我想实现google play计费实现代码。为此,我还在库的build.gradle文件中定义了计费库。

我正在使用gradle版本:

  

'com.android.tools.build:gradle:3.2.0'

是否可以选择仅在一个位置(build.gradle)定义库并在两个位置都使用它?

1 个答案:

答案 0 :(得分:2)

从Gradle插件版本3.0.0开始,有一种更好的方法可以做到这一点。我们可以控制每个依赖项仅适用于当前模块,还是适用于当前模块以及依赖于此模块的任何模块。这将使我们能够轻松地共享项目中各个模块之间的依赖关系。

这是我们过去用来声明依赖项的方式:

compile 'com.android.billingclient:billing:1.2'

以下是应替换编译的新配置:

implementation 'com.android.billingclient:billing:1.2'

此依赖项仅在此modAPI中使用

api 'com.android.billingclient:billing:1.2' 

此依赖项在依赖于此模块的任何内部版本中也将可用。假设我们有一个名为“ library”的模块,该模块由“ app”模块使用,则可以使用api配置声明该依赖项应与任何依赖它的模块共享。

图书馆模块build.gradle

  dependencies {

        // dependencies marked 'implementation' will only be available to the current module    implementation 'com.squareup.okhttp:okhttp:2.4.0'


        // any dependencies marked 'api' will also be available to app module

api 'com.android.billingclient:billing:1.2' 

    }
    app module build.gradle:

    dependencies {

        // declare dependency on library module
        implementation project(':library')

        // only need to declare dependencies unique to app 
        implementation 'example.dependency:1.0.0'
    }

请参阅此以获得更多信息和图表。 https://medium.com/@julesrosser/handling-gradle-dependencies-in-multiple-module-android-projects-9e590c3d20dc