您的位置 首页 > 德语词汇

implementation的?[短文速读]Gradle中implementation和api的区别

本篇文章给大家谈谈implementation的,以及[短文速读]Gradle中implementation和api的区别对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

1、最近突然问自己一个问题:对于Gradle来说,implementation和api区别是什么?…呃,管他什么区别,老夫写代码不管这么多为什么….

implementation的?[短文速读]Gradle中implementation和api的区别

2、不过既然Google爸爸推出了新的Gradle编译依赖模式,了解一下还是有必要的。免得以后吹逼的时候都不知道怎么张嘴。

3、自己随便Google搜了一篇文章,感觉写的特别通俗易懂,很适合“科普”一般的阅读。所以自己就“厚颜无耻”的翻译过来。

4、「短文速读」重载有暗坑,重载重写你真的了解么

5、一文解释清楚:final?finally?finalize?

6、假设我们项目需要用到下边4个依赖库:

7、classClassD{\nfuntellMeAJoke():String{\nreturn"Youarefunny:D"\n}\n}\n

LibraryC:

8、classClassC{\nfuntellMeAJoke():String{\nreturn"Youarefunny:C"\n}\n}\n

LibraryB:

9、classClassB{\nfuntellMeAJoke():String{\nreturn"Youarefunny:B"\n}\n}\n

LibraryA:

10、classClassA{\nfuntellMeAJoke():String{\nreturn"Youarefunny:A"\n}\n}\n

从上面的类文件可以看出,库A和库B分别依赖于库C和库D。在build.gradle中,我们区别对待一下关于他们的依赖:我们让LibraryD的依赖使用api,LibraryC的依赖使用implementation。

11、api关键字与旧的compile关键字完全相同。因此,如果用api替换了所有的compile,是完全ojbk的。

12、//lobraryB的build.gradle\ndependencies{\n//...\napiproject(path:':libraryD')\n}\n//App的build.gradle\ndependencies{\n//...\napiproject(path:':libraryB')\n}\n

这种方式下,我们可以很自然的使用libraryB和libraryD的内容。

13、@Override\nprotectedvoidonCreate(BundlesavedInstanceState){\nsuper.onCreate(savedInstanceState);\nClassBb=newClassB();\nClassDd=newClassD();\n}\n

implementation

14、当我们使用implementation去依赖我们所需的库会发生什么呢?

15、//lobraryA的build.gradle\ndependencies{\n//...\nimplementationproject(path:':libraryC')\n}\n//App的build.gradle\ndependencies{\n//...\nimplementationproject(path:':libraryA')\n}\n

这种依赖下,如果我们想去newClassC(),我们的ide会“友好”的告诉我们:

16、也就是说,在implementation方式下,我们没办法访问到依赖(libraryA)的依赖(libraryC)。那这里就有疑问了?这有什么好处呢?

17、首先咱们先明确api方式的不好:以api的形式去依赖,我将依赖你依赖的所有内容。也就是我们上边demo中,虽然我只apiproject(path:':libraryB'),但我也可以引用到libraryD。这种情况下,只要libraryD发生了变化,那么相关api的库都会重新编译。

18、需要重新编译libraryD、libraryB以及导入libraryB的所有其他模块,因为任何其他模块都可能使用libraryD的实现。

19、但是implementation则相反。假设libraryC变了,但是由于只有libraryB直接依赖了它,所以只需要重新编译B、C即可。

20、如果当我们A依赖B,B依赖C。假如我们A不需要直接依赖C,那么我们就用implementationB就好。这样可以加快编译速度。

关于本次implementation的和[短文速读]Gradle中implementation和api的区别的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023