Android开发

Android compile、implementation和a

2021-09-11  本文已影响0人  渐渐懂了吧
最近在优化一个老项目,发现项目当中有一些Module还在使用compile来依赖三方库,所以就想讲讲compile、implementation和api有什么区别

首先我们创建一个Project,然后再生成一个Module,并且Project去引用这个Module


1.png
dependencies {
    XXXXX
    implementation project(path: ':myapplication')
}

这个时候假设Module中引入了一些三方库,比如谷歌的Gson库,首先可以明确一点,就是compile、implementation和api都能将Gson引入到Module当中,那他们到底有什么区别呢?现在假设我们使用的是implementation关键字去引入,然后在Project中去尝试使用Gson,会发现Project中根本找不到Gson对象

dependencies {
    XXXXX
    implementation 'com.google.code.gson:gson:2.8.8'
}
2.png

但是如果换成api关键字去引入,则会发现能找到Gson对象

dependencies {
    XXXXX
    api 'com.google.code.gson:gson:2.8.8'
}
3.png

那么使用compile是什么情况呢?我们会发现它其实已经过时了,并且sync时直接会报错,其实它的作用和api是一致的,可以说api关键字就是用来替代compile关键字的,所以我们现在使用api即可

dependencies {
    XXXXX
    compile 'com.google.code.gson:gson:2.8.8'
}
compile is deprecated; replace with either api to maintain current behavior, or implementation to improve build performance by not sharing this dependency transitively.
总结
同一个Module中

compile(过时)、api、implementation的使用效果相同

不同的Module中

compile(过时)、api关键字引入的包对于其他Module来说是可见的,而implementation关键字引入的包对于其他Module来说是不可见的

上一篇 下一篇

猜你喜欢

热点阅读