How do I share dependencies between Android modules

后端 未结 5 1068
长情又很酷
长情又很酷 2020-12-29 02:30

I have an Android application module (app) and an Android library module (library). Both app and library contain these same dependencies:

dependencies {
             


        
5条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2020-12-29 03:17

    As of Gradle Plugin version 3.0.0 there is a nicer way to do this. We can control whether each dependency is available for only the current module, or for the current module AND any modules which depend on it. This will allow us to easily share dependencies across modules within a project.

    Here's how we used to declare dependencies:

    • compile 'example.dependency:1.0.0'

    Here are the new configurations which should replace compile:

    • implementation 'example.dependency:1.0.0' --> this dependency is only used within this module
    • api 'example.dependency:1.0.0' --> this dependency will also be available in any builds that depend on this module

    Here's how to do that with the architecture you mentioned in the question. Assuming that we have a module named 'library' that is consumed by the 'app' module, we can use the api configuration to declare that the dependency should be shared with any module that depends on it.

    library module 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.squareup.retrofit:retrofit:1.9.0'
        api 'io.reactivex:rxjava:1.0.13'
        api 'io.reactivex:rxandroid:0.25.0'
    }
    

    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'
    }
    

    Please see this guide for further information and diagrams.

提交回复
热议问题