白信纸

导航

 

api 相当于原来的 compile,
implementation 相当于有特殊功能的 compile。
比如:

3个Module:A, B, app

app 的 build.gradle

dependencies {
    implementation project(':A')
}

A 的 build.gradle

dependencies {
    implementation project(':B')
}

当使用 implementation 来引用其他模块时,如上例,在 app 模块中将不能使用 B 模块的文件,如果需要在 app 文件中引用 B 模块的文件,那么需要在 app 的 build.gradle 引用B 模块,

implementation project(':B')

当时用 api 来引用模块时:

app 的 build.gradle

dependencies {
    api project(':A')
}

A 的 build.gradle

dependencies {
    api project(':B')
}

功能相当于原来的 compile,在 app 模块中能引用 B 模块的文件。

综上

一般情况下不建议使用 api,因为会向外暴露引用的依赖,倒置 gradle 编译时需要频繁遍历所有嵌套依赖,影响推荐速度,所以更推荐使用 implementation。

引申问题之 support 文件冲突

必须使用 api 时,有时候会出现引用文件版本冲突的问题,可以通过 exclude 来解决。
当出现 support 文件冲突的时候, 可以通过 api 与 exclude 的搭配使用来处理


    implementation 'com.android.support:appcompat-v7:27.0.2'
    implementation 'com.android.support:recyclerview-v7:27.0.2'
    api("...") {
        exclude group: 'com.android.support'
    }
总结

最近在看这个,感觉自己落伍好多了,文笔好差劲
如果有人看,如果有人发现问题
终于有了目标,一切向qian看

posted on 2017-11-30 10:32  Depiesuis000  阅读(325)  评论(0)    收藏  举报