AndroidStudio下的依赖管理

在开发中用第三方库是很常见的事,如何在AndroidStudio下管理这些依赖呢?这就是这篇文章的目的。

目录

  • Maven/Ivy仓库依赖
  • Module依赖
  • aar文件依赖
  • jar文件依赖
  • 例子完整代码

一、Maven/Ivy仓库依赖

这中依赖在AndroidStudio中应用最广泛,也是相比于Eclipse+ADT开发来说的闪光点之一。先给出一个例子:

dependencies {
  //省略了一下默认配置
    compile ‘com.android.support:appcompat-v7:23.4.0‘
    compile ‘com.jakewharton:butterknife:7.0.1‘
  //其他依赖项
}

上面就是一个Maven仓库依赖的例子,项目依赖于兼容包和jakewharton大大的‘黄油刀’,为了突出重点省略了其他类型的依赖项(后面会讲到)。

1)配置仓库

(这段这是基础概念,可以选择略过)在配置Maven依赖之前我们得明白一下什么是仓库(repositories)和如何配置仓库,那什么是仓库呢?仓库说白了就是存放代码的地方,它能很好的进行版本控制和访问。应用广泛的仓库类型有两种:Ivy和Maven,Ivy在以Ant为构建的系统中应用比较广;相比于Ivy,Maven仓库就比较出名了。现在为广大程序员所知的Maven仓库有Jcenter和Maven Central,它们都是Maven仓库的实现。而这两种类型的仓库在以Gradle为构建工具的AndroidStudio中都能使用,且使用很简单,只需要在相应的配置文件中添加几行代码就行。

a.配置Maven仓库

这AndroidStudio下新建的项目,在项目根目录下的build.gradle里又这样一段代码:

allprojects {
    repositories {
        jcenter()
    }
}

这指定了所有module(包括appilcation module和library module,关于module的概念后面会将到)的默认仓库是Jcenter。这就有疑问了,同样是maven仓库为什么AndroidStudio默认指定不是Maven Central呢?Jcenter和Maven Central都是maven库没错,但是Jcenter是Maven Central的超集,也就是说你能在Maven Central中找到的依赖在Jcenter中也能找到,反之则不然。如果你非要用Maven Central也行,只要把 jcenter() 换成 mavenCentral()就行,但不建议在项目的build.gradle中修改,而是去你的module中修改,这样就能将影响范围控制到单个module。

b.导入依赖

配置好仓库后就可以导入依赖了,同样建议到module的build.gradle文件中导入需要的依赖库,而不是在项目的build.gradle中导入。讲要导入的仓库写进dependencies代码块内就行,类似于开篇的例子。 说说仓库是如何区分不同的库已经同一库的不同版本的,主要通过三个元素来区分:组别:库名:版本号

  • 组名:一般表明了库的开发者,常用倒置的域名来表示,如com.jakewharton
  • 库名:说明了这个库的名称,如butterknife
  • 版本号:库的版本号

这三者用:分隔,一起组成了库的唯一标识,所以我们导入库依赖的格式就是: compile ‘组名:库名:版本号‘ 起始不一定得是compile,也可能是provided、apk、testCompile,androidTestCompile,它们说明了把库加到那部分编译中去,具体是什么,自己google。

#### c.动态版本导入 什么叫动态版本导入呢?就是让Gradle去给你下载最新的库,而不是每次都是自己修改版本号。如下

 dependencies {
   compile ‘com.android.support:support-v4:22.2.+‘
   compile ‘com.android.support:appcompat-v7:22.2+‘
   compile ‘com.android.support:recyclerview-v7:+‘
}

这里面涉及到版本号的命名规则:主版本号.次版本号.debug版本号,不同版本号什么意思也自己google。解释一下上面三个依赖的意思:

  • 要求是最新的debug版本
  • 要求次版本至少大于2
  • 最新的库

2)其他Maven/Ivy仓库的配置

非Jcenter和Maven Central仓库怎么maven仓库怎么配置?Ivy怎么配置?如下:

repositories {
  maven {
    url "http://baidu.com"//这里填写仓库地址
    credentials {         //这里填认证信息
      username ‘user‘
      password ‘secretpassword‘
    }
  }
}

Ivy配置类似,只要把maven改成ivy就行了,再次申明为了将影响范围保持到最小,要将这项配置写到module的build.gradle文件中。

二、Module依赖

在AndroidStudio上,一个应用是由一个或多个Module组成,其中一个application module,零个或多个library module。application module最后可以打包成apk,library module就是每打包的库,它最后可以打包成jar或者aar(两者区别自己google)。这一节我们来讲讲如何导入自己或者别人写的module,下一节讲如何导入打包好的aar。 完成module依赖只需要完成三步:

  • 拷贝库到项目的根目录下,和app module同级
  • 在项目的setting,gradle中加入module名。如下
  include ‘:app‘, ‘:volley‘

经过这个步骤,就就可以在项目导航的Android视图下看到导入的项目了

其中app是Android生成的application module,volley是我导入的library module。但这只是告诉了Gradle去管理者两个module,并不能再app中应用volley中的API,需要完成下面一个步骤才能使用。

  • 添加dependencies声明
dependencies {
    //为了突出重点,省略其他
    compile project(‘:volley‘)
}

这样一来导入module就成功了。 最后再说一下,如何在Android Studio中新建application module 和 library。File->new->new module 在弹出的对话框中选择module类型,module的类型起始是根据它的build.gradle中的插件类型决定的。 application module:

apply plugin: ‘com.android.application‘

library module:

 apply plugin: ‘com.android.library‘

三、arr文件依赖

arr文件是打包好的library module,在说明如何将aar文件引入到项目中,先说说如何打包module生成aar文件,Build->Make Module (module name)等Gradle构件完成后,会在下图所示的路径中生成aar文件

开始讲如何将aar文件加入到项目中,同样需要三个步骤:

  • 拷贝aar文件到module目录下,可以拷贝到libs文件中,或者任何新建的文件夹中

    我这里新建了一个叫aars的文件夹,然后把之前生成的aar文件放了进去
  • 添加文件仓库 在module的build.gradle中添加代码块
repositories{
    flatDir{
        dirs ‘aars‘
    }
}
  • 添加依赖
dependencies {
    //忽略其他
    compile(name:‘volley-debug‘, ext:‘aar‘)
}

至此添加aar文件依赖完成。

四、jar文件依赖

Android Studo文件依赖很简单,把jar包往libs文件里一放就ok了。这得益于AndroidStudio的默认配置:

 compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])

这句话就是将libs目录下所有的jar包一次全倒过来。如果换成compile file(jar文件路径)可以一次只导入一个jar包。

五、例子完整代码

Github-fallblank

时间: 2024-07-29 04:15:34

AndroidStudio下的依赖管理的相关文章

[Linux] ubuntu下yarn依赖管理工具的安装和使用

Yarn 对你的代码来说是一个包管理器, 你可以通过它使用全世界开发者的代码, 或者分享自己的代码.Yarn 做这些快捷.安全.可靠,所以你不用担心什么.通过Yarn你可以使用其他开发者针对不同问题的解决方案,使自己的开发过程更简单. 使用过程中遇到问题,你可以将其上报或者贡献解决方案.一旦问题被修复, Yarn会更新保持同步.代码通过 包(package) (或者称为 模块(module)) 的方式来共享. 一个包里包含所有需要共享的代码,以及描述包信息的文件,称为 package.json

Php学习之依赖管理工具composer详解

本文和大家分享的主要是php中依赖管理工具composer相关用法,一起来看看吧,希望对大家学习php有所帮助. 什么是依赖管理工具 当你引用某个第三方库时,如果这个库使用到了另外一个或若干个第三方库,再或许另外一个第三方库又有其他的依赖,这样的话手动维护你需要下载安装N个包.用来解决由此产生的问题的工具就叫做依赖管理工具. 有哪些常见的依赖管理工具 Java的maven.gradle,NodeJs的npm,IOS的CocoaPods,PHP的composer 大部分编程语言都会有自己的常用依赖

Gradle实战教程之依赖管理

这是从我个人网站中复制过来的,原文地址:http://coolshell.info/blog/2015/05/gradle-dependency-management.html,转载请注明出处. 简要概述依赖管理 不算完美的依赖管理技术 自动管理依赖的重要性 自动依赖管理面临的挑战 声明依赖 外部模块依赖 文件依赖 配置远程仓库 这一章我将介绍Gradle对依赖管理的强大支持,学习依赖分组和定位不同类型仓库.依赖管理看起来很容易,但是当出现依赖解析冲突时就会很棘手,复杂的依赖关系可能导致构建中依

Golang官方依赖管理工具:dep

在这里声明一下,百度或者google看到的godep不是我这篇博文说的dep,那它们是什么关系呢?按照Peter Bourgon博文来说,它们的作者都有相同的人,但是一个是dep是官方版本,godep是第三方工具.我今天介绍的是dep,之前也有介绍过glide,有兴趣的可以到Golang依赖管理工具:glide从入门到精通使用看看. 现在还有一个疑问是为什么官方现在要支持依赖管理了呢?我个人认为有如下原因(勿喷,如果不同或者遗漏欢迎留言补充): 第三方依赖管理很多,虽然很好用,但是很少可以兼容的

依赖管理

在使用继承的时候会有一个问题 通过抽取 A.B 的共性,抽取出了父工程 C,但是在今后新添加的子模块中,不一定会用到父工程 C 的全部依赖. Maven 提供dependencyManagement元素,让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性 dependencyManagement元素下的依赖声明,不会引入实际的依赖 类似的,使用pluginManagement元素管理插件

Spring mvc 4系列教程(二)——依赖管理(Dependency Management)和命名规范(Naming Conventions)

依赖管理(Dependency Management)和命名规范(Naming Conventions) 依赖管理和依赖注入(dependency injection)是有区别的.为了将Spring的优秀特性(如依赖注入)带到你的应用中,需要在编译时或运行时部署所需要的库(jar包).这些依赖不是虚拟的构件,而是文件系统上的物理资源.依赖管理的过程涉及到定位这些资源.存储资源.加入classpath.依赖可以是直接的(例如Spring运行时),也可以是间接的(例如commons-dbcp).间接

Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突) (转)

本文为作者原创,转载请注明出处:http://www.cnblogs.com/gzdaijie/p/5296624.html 目录 1.添加依赖包名1.1 依赖类型1.2 声明依赖1.3 添加java依赖1.4 查找依赖包名1.5 完整的例子2.添加依赖仓库3.依赖常见问题3.1 依赖传递性3.2 版本冲突3.3 动态依赖3.4 更多设置 开发任何软件,如何管理依赖是一道绕不过去的坎,软件开发过程中,我们往往会使用这样那样的第三方库,这个时候,一个好的依赖管理就显得尤为重要了.作为一个自动构建工

Composer PHP依赖管理的新时代

对于现代语言而言,包管理器基本上是标配.Java有Maven,Python有pip,Ruby有gem,Nodejs有npm.PHP的则是PEAR,不过PEAR坑不少: 依赖处理容易出问题 配置非常复杂 难用的命令行接口 好在我们有Composer,PHP依赖管理的利器.它是开源的,使用起来也很简单,提交自己的包也很容易. 安装Composer Composer需要PHP 5.3.2+才能运行. $ curl -sS https://getcomposer.org/installer | php

Gradle笔记——依赖管理基础

1. 什么是依赖管理 依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件:二是发布,即构建完成后上传到某个地方. 1.1 依赖 大部分的项目都需要第三方库类或项目文件,这些文件就是项目的依赖了.比如JDBC的jar包,junit的jar包等等.Gradle需要你告诉它工程的依赖是什么,在哪里可以找到,然后它帮你加入构建.在依赖中,可能需要去远程仓库下载文件,如maven或Ivy,本地仓库,甚至是另一个项目,这个过程我们称之为依赖解决. 另外,我们所依赖的文件自身可能也有依赖,当