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/m2repositoryANDROID_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 知识要点整理(13)----网络连接

Android 知识要点整理(12)----Animation(动画)

Android知识要点整理----控制相机

Android 知识要点整理(13)----网络连接

Android 知识要点整理(12)----Animation(动画)

Android知识要点整理----文件分享