通常一个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. 深入学习webpack(三)

    在前面两篇博客中,主要讲了webpack的使用和webpack的核心概念,他们都是非常重要的,在这篇博客中,讲主要讨论webpack配置相关问题. 参考文章:https://webpack.js.or ...

  2. LeetCode 870.优势洗牌(C++)

    给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述. 返回 A 的任意排列,使其相对于 B 的优势最大化. 示例 1: 输入: ...

  3. Redis学习1

    Redis 学习记录 简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zs ...

  4. mysql 使用 unix 方式显示日期和时间

    1.UNIX中文为时间戳.该方式显示从1970年1月1日开始经过的秒数. 2.函数 UNIX_TIMESTAMP() 返回时间戳格式的时间, FROM_UNIXTIME() 将时间戳格式的时间转换为普 ...

  5. iOS重用宏定义

    iOS 多快好省的宏(转) 原文地址:http://my.oschina.net/yongbin45/blog/150149 // 字符串: #ifndef nilToEmpty #define ni ...

  6. Controller的使用

  7. spring笔记3-AOP

    一.概述 AOP:(Aspect Oriented Programming)即:面向切面编程.把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法 ...

  8. hibernate 初印象

    将要学习的内容: 1.HelloWorld a) xml b) annotation2.Hibernate 原理模拟 - 什么是 O/R Mapping 以及为什么要有 O/RMapping3.常见 ...

  9. git 因线上分支名重复导致无法拉取代码

    有时 git pull 或 git fetch 时发现 git 报了个异常,说法像是无法将线上某个分支与本地分支合并,由于分支是...(很长的hash)但是分支却是...(很长的hash) 仔细查查后 ...

  10. reactjs--父组件调用子组件的内部方法(转载)

    reactjs--父组件调用子组件的内部方法 发表于2016/10/11 9:21:37  965人阅读 1.引入相关js <script src="js/react.js" ...