Android使用Gradle依赖配置compile、implementation与api的区别介绍
作者:Zachary46 发布时间:2023-09-27 18:11:40
前言
AndroidStudio升级到3.0之后,gradle版本也随之升级到了3.0.0版本。
当gradle插件升级到3.0.0及以上后,我们会发现在gradle中添加依赖的时候,会推荐你使用implementation或者api,而不再推荐你使用compile,今天就来简单介绍下这两者的使用与区别!
classpath 'com.android.tools.build:gradle:3.0.0'
在新建一个Android工程的时候,build.gradle中的依赖默认为implementation,而不是之前的compile。另外,gradle 3.0.0版本以上,还有依赖指令api。本文主要介绍下implementation和api的区别。
新建工程默认生成的app的build.gradle文件中的依赖:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
api 指令
完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。
implementation指令
这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
简单的说,就是使用implementation指令的依赖不会传递。例如,有一个module为testLib,testLib依赖于Glide:
implementation 'com.github.bumptech.glide:glide:3.8.0'
这时候,在testsdk里边的java代码是可以访问Glide的。
另一个module为app,app依赖于testLib:
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和implementation的区别。
建议
compile在3.x版本的gradle中已被废弃,将在2018年底,被google移除,所以不要使用compile了
依赖首先应该设置为implementation,如果没有错误,那就用implementation ,如果有错,那么使用api指令
来源:https://www.jianshu.com/p/c996c9c2d16e
猜你喜欢
- Android超清晰6.0权限申请AndPermission的具体实现代码,供大家参考,具体内容如下前言这是我经常使用的框架,原因:1.思路
- 递归生成一个如图的菜单,编写两个类数据模型Menu、和创建树形的MenuTree。通过以下过程实现:1.首先从菜单数据中获取所有根节点。2.
- 1. matlab的lp2lp函数的作用去归一化 H(s) 的分母2. matlab的lp2lp函数的使用方法[z, p, k]=butta
- 我们讲一下Criteria查询,这个对于不是太熟悉SQL语句的我们这些程序员来说是很容易上手的。 废话不多说,看一下例子:&nbs
- 一、概念 1. 为了能让程序操作数据库,对数据库中的表进行操作,每一种数据库都会提供一套连接和操作该数据库的驱动,而且每种数据库
- 本文实例讲述了Java Web项目部署在Tomcat运行出错与解决方法。分享给大家供大家参考,具体如下:1、在部署Java Web项目的过程
- 前言服务消费者调用服务提供者的时候使用RestTemplate技术存在不便之处:拼接urlrestTmplate.getForObJect这
- ArrayList集合的创建非泛型创建ArrayList集合对象,可以添加任意Object子类元素至集合//非泛型创建的ArrayList集
- Json的简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个
- 我们都知道单精度浮点数(Single,float,Real)由32位0或1组成,它具体是如何来的。浮点数的32位N=1符号位(Sign)+8
- android线程消息机制主要由Handler,Looper,Message和MessageQuene四个部分组成。平常在开发中,我们常用来
- java字段值为null,不返回该字段类上打注解@JsonSerialize(include = JsonSerialize.Inclusi
- 本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下IDE用的是 VS2019先看效果 代码全览game.
- 注意是maven的webapp:选择maven下一步下一步。maven下载过慢在setting中加入镜像。 我也有疑问这是什么鬼格式,但是证
- File类概述File类能新建、删除、重命名文件和目录,但不能访问文件内容本身,如果需要访问文件内容本身,则需要使用后续的输入/输出流。要在
- 一、概述现在大多数的电商APP的详情页长得几乎都差不多,几乎都是上面一个商品的图片,当你滑动的时候,会有Tab悬浮在上面,这样做用户体验确实
- 本文实例讲述了spring mvc 实现获取后端传递的值。分享给大家供大家参考,具体如下:jsp页面怎么获取从后端传递过来的值?JSTL 方
- 因为涉及到 io 流输入问题,如果不关闭会一直占用资源。所以使用过后要及时关闭,防止资源一直被占用。Scanner在使用前要导入 java.
- 介绍Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一
- java web返回中文乱码ajax返回中文乱码问题 在浏览器按F12查看数据包可以看到charset为 iso-8859-1,这是spri