android studio gradle依赖解析
Eclipse的依赖
在AndroidStudio出现之前,使用Eclipse开发Android项目的时候,如果需要一个第三方的依赖库,我们必须找到该依赖,然后下载JAR文件并将其拷贝到项目,引用它。通常这些JAR文件在他们的名称中没有版本号,所以需要开发者手动添加JAR的版本,以便知道什么时候更新,同时还需要确保依赖库中存储了源代码管理系统,以便其他开发者在没有手动下载这些依赖库的时候,也可以使用基于依赖的代码。
AndroidStudio依赖管理
依赖管理是Gradle最吸引开发者的特点之一,相较Eclipse而言,使用AndroidStudio进行项目依赖,只需要在app目录下的build.gradle文件中添加一行代码,Gradle从远程仓库下载该依赖库,确保项目能够使用依赖中的类,甚至在我们依赖的项目有其自己的依赖时,Gradle会自动处理并解决这些问题,这种依赖称之为传递依赖
注:一个仓库可以看做是文件的集合
Gradle依赖分析
关键字:compile
一个依赖通常是由三种元素定义的:group、name、version。
group:创建了该依赖库的组织,通常是反向域名
name:依赖库的唯一标识
version:需要使用该依赖库的版本号
使用以上三个元素,就可以在app的build.gradle文件的dependencies代码块中声明一个依赖:
Glide依赖:
dependencies {
compile 'com.github.bumptech.glide:glide:3.8.0'
}
对应Groovy的映射标识:
group:com.github.bumptech.glide
name:glide
version:3.8.0
注:对于一个依赖库来说,其唯一需要的字段是name.group和version都是可选元素,当然为了表示清楚,还是建议添加group,而version可以确保依赖库不会自动更新,因为这可能导致构建失败
动态化依赖版本
在某些情况下,开发者希望在每次构建应用或依赖库时,都希望能够获取到最新的依赖,这时候就可以使用动态化版本,例:
dependencies {
compile 'com.github.bumptech.glide:glide:+'
}
使用动态化版本需要注意的是:如果我们允许Gradle获取最新版本,则很可能Gradle获取的依赖版本并不稳定,会导致构建中断,更糟糕的是,这可能会导致在构建服务器上和我们自己的机器上运行着不同的版本,从而导致应用程序的行为不一致。
使用AndroidStudio添加依赖
1.File -> Project Structure
2.app -> Dependencies -> + ->Library Dependency
3.输入依赖库搜索添加
在某些情况下,开发者仍然需要手动下载JAR文件或原生库,甚至有些开发者会创建自己的依赖库,这样就可以在没有将其发布到共有或私有仓库时在多个项目中复用。这种情况下,没有办法是用任何在线资源,必须通过其他方式来添加依赖:
1.文件依赖
使用Gradle提供的Files方法来添加JAR文件作为一个依赖,例:
项目的app目录libs目录下有一个lbjfan.jar文件,那么我们可以使用如下代码:
dependencies {
compile files('libs/lbjfan.jar')
}
当我们的jar文件很多时,这种方式会变得异常繁琐,因此我们可以一次添加一个完整的文件夹:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
}
注:将libs目录下以jar结尾的文件作为依赖
2.原生依赖库
用C或C++编写的依赖库可以被编译为特定平台的原生代码,这些依赖库通常包含几个.so文件,可用于所有平台。Android插件默认支持原生依赖库,开发者所需要的就是在模块层创建一个jniLibs文件夹,然后为每个平台创建子文件夹,将.so文件放在适当的文件夹中。
当然我们也可以在构建文件中自定义相关位置:
app目录下的build.gradle文件中,Android代码块中:
android {
sourceSets.main{
jniLibs.srcDir 'src/main/libs'
}
}
3.项目依赖
一个依赖项目是一个使用Android APIS或Android资源的依赖库,通常和应用项目类似,不同之处在于应用项目生成一个可被安装运行在Android设备上的APK,依赖项目则生成一个.aar文件
3.1 创建和使用依赖项目模块
不同于应用Android应用插件,构建脚本需要应用Android依赖库插件:
在app目录下的build.gradle文件中
apply plugin: 'com.android.library'
3.2 在应用中包含依赖项目的两种方式
1.在项目中当做一个模块
2.创建一个可在多个项目中复用的aar文件
(1)作为一个模块
使用一个模块作为依赖项目,开发者需要在根目录的setting.gradle文件中添加该模块,在应用模块中将它作为依赖:
Include ':app',':library'
此时,依赖模块被称之为依赖库,并且文件夹的名称与此相同。为了在Android模块中使用依赖库,开发者需要在build.gradle
文件中添加一个依赖库:
dependencies {
compile project(':library')
}
(2)用作.aar文件
如果创建了一个依赖库,并且想在不同的Android引用中复用,开发者可以创建一个.aar文件,然后将其作为一个依赖添加到项目中。在构建依赖库时,模块目录下的build/output/aar/文件夹将会生成.aar文件。添加一个.aar文件作为依赖,开发者需要在应用模块中创建一个文件夹,复制该.aar文件至该文件夹,并添加该文件夹作为依赖仓库:
在根目录的build.gradle文件的repositories代码块中添加
repositories{
flatDir{
dirs 'aars'
}
}
同时,在app的build.gradle文件的dependencies中添加:
dependencies{
compile(name:'libraryname',ext:'aar')
}
告知Gradle查找具有特定名称且扩展名为.aar的依赖库。
小白欢迎大家留言指正
下一篇: 分享php中一些常用的方法知识
推荐阅读
-
Android Studio如何使用aar依赖包?
-
android studio 一直卡在Gradle:Build Running的几种解决办法
-
详解如何使用Android Studio开发Gradle插件
-
详解关于Android Studio中安装和gradle的一些坑
-
android studio 3.0 gradle 打包脚本配置详解
-
Flutter下Android Studio配置gradle的方法
-
Android Studio 中的Gradle构建系统示例
-
Android Studio 3.0 新功能全面解析和旧项目适配问题
-
Android studio怎么为项目添加模块依赖?
-
Android Studio手动配置Gradle的方法