Android 中的jar包,aar包以及module

Android Studio中引入第三方资源一般有三种方式:jar包,aar包,module.

1.jar包的导入

第一种:
一般用于比较流行的第三方库上,直接将你在GitHub上看到的jar包compile放入build.gradle的dependencies里面,然后sync同步一下就可以了。例如:导入v7包。

1
2
3
4
dependencies{
......
compile ‘com.android.support:appcompat-v7:24.2.1’
}

第二种:
我们已经从网上下好了(或者别人给你的)jar,需要将他导入到AS工程里,首先将jar包放到libs里面,然后还是在build.gradle的dependencies里面添加compile路径,最后sync一下。例如:导入volley。

1
2
3
4
dependencies{
.....
compile files(‘libs/volley.jar’)
}

2.aar包导入
aar包是Android特有的一种引用包,Android Archive,它跟jar包的区别在于:
jar包:只包含class文件和清单文件,不包含资源文件,比如图片等所有的 res下的资源文件;
aar包:class以及res下的所有的资源文件全部包含。
aar包的引用也很简单,以上是一个正常的module(工程应用,而非作为第三方library使用的)引用aar文件为例,首先也是将拿到的aar包放进libs下。然后按如下配置,最后sync一下就可以了,列如,导入一个叫abc.aar的包:

1
2
3
4
5
repositories {  
flatDir {
dirs 'libs'
}
} // 此在android标签下添加

1
2
3
4
dependencies {
.....
compile(name: 'abc.aar, ext: 'aar')
}

注意,以上是一个正常的module(工程应用,而非作为第三方library使用的)引用aar文件需要配置的步骤。

下面说一下当一个library类型的module需要引用aar文件时:
a.在该library中按照上面的代码,在library的module下的bulid.gradle中配置。

b.任何依赖此library的module必须声明在它的build.gradle声明此 aar 的 lib 所在的位置,这个位置根据文件路径所确定

1
2
3
4
5
6
7
android{    //android节点下配置
repositories {
flatDir {
dirs 'libs', '../../../../library_module/libs'
}
}
}

c. 配置完b步骤后,还要在project的build.gradle文件中配置,如下:

1
2
3
4
5
6
7
8
allprojects {
repositories {
jcenter()
flatDir {
dirs '../../../library_module/libs'
}
}
}

梳理一下这里的依赖关系:
aar->library module->依赖此library的module->project

3.module的导入
module的导入在上一篇博客中Android Studio中module的导入 已经讲过。这里主要说一下module是可以打包成aar包的,通过gradle的assembeRelease或assembleDebug可以将module打包成aar包(分别对应release版本和debug版本)。
另外,笔者曾经遇到一个大坑,那就是当aar包引用第三方module的时候,编译不会报错,但是运行时会一直报类找不到的错误,因为在打包aar包时不会将第三方module打包进aar包里面。这里如果将第三方module先打包成aar包,给工程调用就不会出现这样的问题了。

文章目录
|