通常一个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. virtualenv(for python)

    完整: http://docs.jinkan.org/docs/flask/installation.html#installation   virtualenv 你很可能想在开发中用上 virtua ...

  2. Ubuntu瞎胡搞

    ubutnu的几个必不可少的软件: 1.Guake,超级方便的终端 2.Unity tweak tool 3.VLC,本地视频播放器 4.MyPint,简单画图软件 5.GIMP,PS工具 Subli ...

  3. ecshop点击订购、加入按钮没反应的解决方法

    今天做ecshop站的时候,测试数据,发现点击订购.加入按钮都没反应,网上搜索,有些人说是修改了common.js,我将原始版本复原也没反映.后来重新安装ecshop,仔细研究发现,原来头部文件pag ...

  4. Spring Boot集成Reactor事件处理框架的简单示例

    1. Reactor简介 Reactor 是 Spring 社区发布的基于事件驱动的异步框架,不仅解耦了程序之间的强调用关系,而且有效提升了系统的多线程并发处理能力. 2. Spring Boot集成 ...

  5. GitKraken使用教程-基础部分(7)

    8.  本地分支和标签 1) 在提交记录区中查看分支状态 提交记录区中每一个分支都位于一个提交记录所在的行中. 从图 2‑1中可以看到,服务器上的master分支停留在整理格式(把这个提交记录记为or ...

  6. iOS 上滑隐藏导航,下滑显示导航,仿斗鱼导航效果

    UItableView或 UIcollectionView 都是继承UIScrollView 滑动的时候,判断是上滑还是下滑 使用 UIScrollView 的代理方法 func scrollView ...

  7. mysql数据库免安装版的配置过程

    1,从mysql官方网站下载免安装版本与自己电脑位数相同的mysql版本. 链接:https://www.mysql.com/ 2,将包解压到自定义的目录下 (例:D:\mysql-5.7.23-wi ...

  8. Html+CSS--->第一周初探

    html css 学了一周的前端,谈谈我的感想 我一直在使用sublime text 3来编辑我的代码,其中有很多很好用的快捷键和插件大大提高了我的开发效率 在这里我极力推荐使用编辑器来进行学习前端. ...

  9. 函数的返回值 return

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

  10. APK加固之类抽取分析与修复

    0x00 简单介绍   目前我己知的APK加固主要有以下两种方式(或有其它的方式有待发现) 隐藏dex文件:通过对目标DEX文件进行整体加密或压缩方式把整个dex转换为另外一个文件存放在assets文 ...