Android知识要点整理(18)----Gradle 之依赖管理
Posted znapast
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android知识要点整理(18)----Gradle 之依赖管理相关的知识,希望对你有一定的参考价值。
Gradle 在依赖管理方面非常出色,要添加依赖有多种方式,每种方式都特别方便。接下来就讲一讲以依赖管理方面的要点。
1.仓库(Repositories)
仓库可以看作文件的集合,它可以用来提供依赖源。Gradle 支持3种类型的仓库,如Maven,Ivy和静态文件及目录等等。Gradle本身不会为项目定义任何仓库。如果项目中要使用仓库,需要在配置文件中添加相关的代码。如下所示:
repositories
mavenCentral()
jcenter()
mavenLocal()
JCenter、Maven Center和local Maven Repository 是Gradle 预先配置的三种Maven仓库,可以选择使用其中的任意一种或多种。Maven Center 和 JCenter 是非常有名的在线公共仓库。JCenter 是 Maven Center 的超集,所以完全没有必要同时使用这两者次仓库。
Local Maven Repository 本质是本地曾经使用过的依赖的集合,同时还可以添加自己的依赖到里面。它的默认目录路径是用户主目录的 .m2
文件夹下。
如果要使用其他类型的远程仓库,可以直接指定远程仓库的url。如下代码所示:
repositories
maven
url "http://repo.acmecorp.com/maven2"
//如果需要验证用户,可以添加验证信息
credentials
username 'user'
password 'secretpassword'
ivy
url "http://repo.acmecorp.com/repo"
同样的,若要要使用本地自建的仓库,比如本地仓库的相对路径是 ../repo
,也可以这样子做:
repositories
maven
url "../repo"
//或者
flatDir
dirs '../repo'
值得一提的是,android 支持库(support library)有两个本地仓库,目录分别是ANDROID_SDK/extras/google/m2repository
和ANDROID_SDK/extras/android/m2repository
2.依赖(Dependencies)
依赖由三个元素确定:group ,name 和version.group 指明创建该库的组织机构,通常是域名反转后的字符串;name 是该库的名称,是库的唯一标识;version是该库的版本号,用于指定想要使用的版本。这三个元素中,只有name元素的必需的,但是通常我们都会写全三个元素。示例如下:
dependencies
//形式1
compile 'com.google.code.gson:gson:2.3'
compile 'com.squareup.retrofit:retrofit:1.9.0'
//形式2
compile group: 'com.google.code.gson', name: 'gson', version:'2.3'
compile group: 'com.squareup.retrofit', name: 'retrofit' version: '1.9.0'
上述的依赖形式支持动态版本号,如下代码所示:
dependencies
compile 'com.android.support:support-v4:22.2.+'//动态补丁版本
compile 'com.android.support:appcompat-v7:22.2+'//动态子版本
compile 'com.android.support:recyclerview-v7:+'//动态主版本
我们还可以添加本地依赖:
dependencies
//单个文件
compile files('libs/domoarigato.jar')
//文件夹
compile fileTree('libs')
//添加过滤的文件夹依赖
compile fileTree(dir: 'libs', include: ['*.jar'])
还可以添加本地库的依赖(Native libray),Android 插件默认支持native library的支持。我们只需要在模块根目录(module level)下建立叫jniLibs
的文件夹,然后创建各个平台的子目录,往子目录中添加so库文件。如下结构所示:
app
├── AndroidManifest.xml
└── jniLibs
├── armeabi
│ └── nativelib.so
├── armeabi-v7a
│ └── nativelib.so
├── mips
│ └── nativelib.so
└── x86
└── nativelib.so
对于从Eclipse移植过来的项目,可能不具备上述目录结构,没关系,我们可以在配置中指定so库文件的路径。代码如下:
android
sourceSets.main
jniLibs.srcDir 'src/main/libs'
除了上述依赖之外,我们还可以建立依赖模块(library project),bibrary project和app project的区别在于前者被后者依赖,前者应用的插件是 apply plugin: 'com.android.library'
,而后者应用的插件是apply plugin ‘com.android.application'
。要将library project 加入依赖管理,需要先在settings.gradle 文件中添加include ':app' ':library'
,然后在dependencies 代码块中添加如下代码:
dependencies
compile project(':library')
上面就是依赖管理的要点知识。
以上是关于Android知识要点整理(18)----Gradle 之依赖管理的主要内容,如果未能解决你的问题,请参考以下文章
Android 知识要点整理(12)----Animation(动画)