implementation 表示依赖,即 只依赖不打包进来。 api 表示打包,即 不仅依赖还打包进来,这样上层就不用重复依赖。 注意:这里的打包是便于理解,是指打包依赖关系而不是打包源代码,也就是说将依赖暴露给上层。 下面举例说明: app主模块下的依赖: dependencies { implementation project(path: ':home') } //依赖home...
Gradle具有两种可用于代替compile范围的配置:implementation和api。前者适用于所有应用Java插件的项目,而api仅适用于专门应用Java库插件的项目。 在大多数情况下,只需使用implementation配置,尤其是在构建应用程序或网络应用程序时。但是,如果您要构建Java库,则可以在构建Java库的部分中了解使用api声明哪些依赖项。 runtime ...
implementation project(':MyLibrary') } 使用这个implementation依赖配置在应用中无法调用InternalLibrary.giveMeAString()。如果 MyLibrary 使用api依赖 InternalLibrary,无论主 module 使用api还是implementation依赖配置,主 module 中都可以访问InternalLibrary.giveMeAString()。 使用这种封箱策略,如果你只修改了 InternalLib...
这将会加快多模块依赖的项目整体编译速度,因为通过implementation引入的依赖模块,如果依赖模块内部有进行过Api的改动,由于其对其他上层模块不可见,因此只需重新编译依赖模块自身以及使用到此改动的Api的当前模块即可。 2,api: 等同于原有的compile,此依赖配置,使Gradle意识到,其引入的依赖模块,无论在编译期还是在运行时,...
implementation project(':testLib') 这时候,因为testsdk使用的是implementation 指令来依赖Glide,所以app里边不能引用Glide。 但是,如果testLib使用的是api来引用Glide: api 'com.github.bumptech.glide:glide:3.8.0' 则与gradle3.0.0之前的compile指令的效果完全一样,app的module也可以引用Glide,这就是api和implementa...
Gradle新版本里面依赖的写法支持implementation和api,下面简单解释两者的区别: implementation 表示依赖,即 只依赖不打包进来。 api 表示打包,即 不仅依赖还打包进来,这样上层就不用重复依赖。 注意:这里的打包是便于理解,是指打包依赖关系而不是打包源代码,也就是说将依赖暴露给上层。
implementation:当其他模块依赖此模块时,此模块使用implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。 api:跟 2.x 版本的 compile完全相同 implementation:使用了该命令编译的依赖,它仅仅对当前的Module提供接口。例如我们当前项目结构如下 LibraryA 中引用了 LibraryC 的库,如果对 LibraryC 的依赖用的...
api 指令 完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。 implementation指令 这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
api:用于声明API依赖项(参见API vs implementation部分)。在这里声明传递给消费者的依赖项,用于编译和链接。 implementation扩展自api:用于声明主组件所有变体的实现依赖项(参见API vs implementation部分)。在这里声明纯粹为内部使用且不暴露给任何变体的消费者的依赖项。 mainVariantImplementation(例如mainDebugImplementation...
api- 本地依赖时依赖不隔离,但是编译慢 implementation- 本地依赖时依赖隔离,编译快 我们从依赖隔离|编译速度2个角度来看api|implementation 依赖隔离 实际开始中我们有2种依赖方式:本地 project 依赖|远程 maven 依赖 我们举这样一个例子 app module A 依赖 module B ,module B 又依赖了 module C ,module C 又...