通常一个AS项目中的依赖关系有三种,一是本地依赖(主要是对本地的jar包),二是模块依赖,三是远程依赖;添加这些依赖的目的在于上我们想要在项目的某一个模块中使用其中的功能,比如okttp这个网络框架库,如果我们想要在项目的app模块下使用这个库的功能,则需要在app模块的build.gradle文件中添加相应的依赖,Gradle插件首先会在本地文件系统上去查找是否存在,如果不存在,然后会到全局的build.gradle文件中指定的代码仓库中去获取,需要联网,下面是指定的项目可以在哪些代码仓库当中去获取开源项目

 
全局的build.gradle文件中的部分

三种依赖关系的添加是在模块中的build.gradle文件中的dependencies闭包下进行添加的

 
模块下的build.gradle文件中的dependencies闭包

implementation fileTree(include: ['*.jar',dir:'libs'])这行语句的作用是一个本地依赖的声明,表示的含义是将当前项目中的libs目录下的所有后缀名为.jar文件都添加到项目的构建路径当中去,可以理解为本地依赖声明,但不是本地依赖的添加;本地依赖的添加较为简单,只需要将jar文件放置到相应模块(哪一个模块想用使用这个jar包提供的功能,就需要在该模块下的build.gradle文件中添加依赖)下的libs目录下,然后同步一下,看个添加本地依赖的例子吧:

首先来看一下没有添加本地依赖前模块的build.gradle文件的dependencies闭包的内容

 
没有添加本地依赖前的闭包的内容

记着它的样子,然后由于我们想要在app模块下使用jar包中的功能,首先我们将jar复制到app模块下的libs目录中,如图

 
将jar包添加到libs目录下\

不知道大家注意到没有,此时jar包是不可以点击开的,表示这个jar包还有添加到当前项目的构建目录当中,可以理解为没有在该模块下添加本地依赖。接下来我们右键单击jar包,找到Add As Library选项,进行同步

 
添加本地依赖

当我们将jar包进行依赖添加后,此时jar文件是可以点击开来的,而且此时我们再次右键jar文件时,Add As Library选项找不到了哦。如果你觉得这样会比较麻烦,那我们可以直接点击同步小按钮,不再右键单击jar包,也可以到达目的,下面是同步小按钮

 
同步小按钮

添加本地依赖之后的jar文件是可以展开的

 
同步之后的jar文件

最后再来看一下dependencies闭包下的内容改变了什么

 
添加本地依赖后的dependencies内容

上面就是本地依赖的添加方式,其实我们可以直接书写多出来的语句添加到dependencies闭包当中。接下来再来学习一下模块依赖的可视化添加,点击Project Structure按钮,出现以下界面

 
Project Structure

然后点击添加模块依赖

 
模块依赖添加

一点击模块依赖,出现以下界面,说当前项目没有可以引用的模块

 
模块依赖添加三

这是为什么呢?我们能够添加的模块依赖智能是当前项目所包含的,即右边的Modules中列出的模块。这个时候我们需要将模块复制到当前项目,比如我们添加CnwinLib模块,首先要将库模块复制到当前项目,然后在setting.gradle文件指明当前项目包含的模块

 
将库模块复制到当前项目

在setting.gradle文件中指明当前项目包含的模块

 
指明当前项目包含的模块

此时我们在来添加模块依赖

 
成功了

然后点击ok,Gradle会帮我同步,此时再来看一下dependencies闭包的内容

 
模块依赖语句

implementation project(':CnwinLib')就是用于添加模块依赖的语句,因此我们可以直接书写这个语句,不需要点击来点击去的,前提是如果你记得语句的格式。对于远程依赖的添加是类似的,就不多说。

总结一下,添加本地依赖的语句是implementation files('file-name'),添加模块依赖的语句implementation project(':模块名'),远程依赖添加的语句implementation '那个依赖地址'。

注意点,如果模块要想使用另一个模块,必须进行模块依赖的引用;远程依赖是在全局的build.gradle文件中的代码仓库当中去获取的,如果我们要添加的远程依赖的开源库所在的托管仓库不在我们项目的全局的build.gradle文件中声明过,那么我们是会依赖添加失败的哦。

作者:拜托科技
链接:https://www.jianshu.com/p/04159a2159b4
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Android Studio项目中三种依赖的添加方式的更多相关文章

  1. 如何在Android Studio项目中导入开源库?

    前两天,谷歌发布了Android Studio 1.0的正式版,也有更多的人开始迁移到Android Studio进行开发.然而,网上很多的开源库,控件等还是以前的基于Eclipse进行开发,很多人不 ...

  2. 深入浅出spring IOC中三种依赖注入方式

    深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...

  3. Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误

    Android Studio 项目中集成百度地图SDK报以下错误: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu ...

  4. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

  5. 【转】ZYNQ中三种实现GPIO的方式

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/husipeng86/article/det ...

  6. Android——Android studio项目中如何查看R.java文件(转)

    Android Studio 是Google推出的一个Android开发环境,它集成了Android 开发工具用于开发和调试,类似 Eclipse ADT.Google公司停止对eclipse的后续支 ...

  7. 【SSH系列】深入浅出spring IOC中三种依赖注入方式

    spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控 ...

  8. spring IOC中三种依赖注入方式

    Spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则,用来消减计算机程序之间的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入 ...

  9. Android Studio 项目中,哪些文件应该忽略而不提交到svn的服务器中?

    Android Studio 中建议过滤的文件: - .idea 文件夹 - .gradle 文件夹 - 所有的 build 文件夹 - 所有的 .iml 文件 - local.properties  ...

随机推荐

  1. 3DSMAX 卸载

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  2. shell中获取本机ip地址

    shell中获取本机ip地址 方法一: /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr ...

  3. java代码混淆

    仅做记录之用. java代码可以反编译,因此有时候要保护自己的知识产权还真得费点心思,一般来说有三个思路: 1.将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密 ...

  4. ruby逻辑判断符号

    puts true and false  #相当于 (puts true) and false Use &&/|| for boolean expressions, and/or fo ...

  5. maven实战迷你版记录

    1.  ~/.m2 文件 默认情况下,该文件夹下放置了 Maven 本地 仓库.m2/repository.所有的 Maven 构件(artifact)都被存储到该仓库中,以方便重用. 默认情况下,~ ...

  6. Ubuntu上的相关问题

    一.解决Ubuntu中vi命令的编辑模式下不能正常使用方向键和退格键的问题 在Ubuntu中,进入vi命令的编辑模式,发现按方向键不能移动光标,而是会输出ABCD,以及退格键也不能正常删除字符.这是由 ...

  7. Mysql显示行号

    SELECT `Name`,(@rowNum:=@rowNum+1) AS rowNo FROM bas_student,(SELECT (@rowNum :=0)) a LIMIT 10;

  8. 14.C#/.NET编程中的常见异常(持续更新)

    1.Object reference not set to an instance of an object. 未将对象引用(引用)到对象的实例,说白了就是有个对象为null,但是你在用它点出来的各种 ...

  9. 函数的返回值 return

    布尔类型返回 return 0:返回假: return 1:返回真:

  10. Windows之CMD查看系统信息

    Windows 系统通过命令行(CMD)查询系统信息有两种方式: 1.图形化界面: 在“运行”中键入CMD,然后输入 dxdiag,回车后弹出图形化界面 ------ DirectX 诊断工具. 2. ...