Android Gradle include module dependencies in another module

前端 未结 2 2024
不思量自难忘°
不思量自难忘° 2021-02-06 10:42

I am using the latest Android Studio 3.0.0-beta6 to build my Android project and there\'s this dependency issue. Gradle encouraged me to replace all compile\'

2条回答
  •  无人共我
    2021-02-06 11:02

    Old question, but it sounds to me like what you're after is simply to use api instead of implementation in your gradle files?

    If a module X declares an api dependency, it's transitively available to any other module that depends on X. If it however declares an implementation dependency, the classes from that dependency is put on the class path for module X, but not for any modules in turn depending on module X.

    From Gradle's documentation:

    Dependencies appearing in the api configurations will be transitively exposed to consumers of the library, and as such will appear on the compile classpath of consumers. Dependencies found in the implementation configuration will, on the other hand, not be exposed to consumers, and therefore not leak into the consumers' compile classpath.

    So to be concrete:

    module 1:

    dependencies {
        ....
        api 'io.reactivex.rxjava2:rxandroid:2.0.1'
        api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
        ...
    }
    

    module 2:

    implementation project(':module1')
    

    Isn't this the simplest solution to what you're trying to do?

提交回复
热议问题