android中aar集成方式

时间:2024-04-05 21:12:51

前言:过了年来到公司就是开始干活了,由于依赖部门的支持方式的修改,我的项目这边需要修改为使用aar的方式来集成登陆的模块了,借着这个机会也对aar使用的集成梳理了一下,这虽然不是难的东西,但是也是写出来吧,万一哪个伙伴可以用上呢,就算没白写了。

这篇文章对aar使用的介绍,是分为aar是什么,aar怎么生成,aar怎么使用这几个方面来写的。

不啰嗦了,下面就开始吧。。。


aar是什么?


*.aar,AAR(Android Archive)压缩包是一个Android库项目的二进制归档文件。我们随便找一个aar文件,然后修改后缀名为‘zip’或者‘rar’格式,然后解压该文件,打开解压后的文件夹会得到一些文件,*.aar文件中包含项目的所有资源,class以及res资源文件。


截图如下所示:(每个aar解压后的内容可能不完全一样,但是都会包含AndroidManifest.xml,classes.jar,res,R.txt

android中aar集成方式


aar如何生成?


aar压缩包的生成很简单,就是在Android Studio中,在你需要生成aar的Module的Gradle脚本开头声明:(也就是将其修改为类库)

apply plugin: 'com.android.library'


接着编译该Module,编译完成之后会在Module的build-->outputs-->aar-->xxxxx.aar ,如下图所示:

android中aar集成方式



aar怎么集成使用?(这个地方我讲的是aar压缩包在项目本地加载的使用


(1)把aar文件放在一个文件目录内,比如就放在工程的libs目录内;

(2)在app的build.gradle文件添加如下内容:(该配置和dependencies配置是一个位置级别

     repositories {
                flatDir { dirs 'libs' }
                           }


(3)最后需要在dependencies添加一句gradle依赖就算是引用了该aar文件:

    compile(name:'ufosdk2.3.1-20170826-release', ext:'aar')


友情提示两点:

1.  如果*.aar文件中引用了其他Maven 仓库的包,那么需要在gradle中添加依赖,否则在运行的时候,可能会报“Caused by: Java.lang.ClassNotFoundException”!


2.  如果实在项目的类库中做aar的集成,和其他类库有依赖,需要在项目的根gradle里面做一个配置:(就是在repositories里面做flatDir的添加)

allprojects {
    repositories {
                    flatDir {
                           dirs project(':lib-common:lib-account').file('libs')
                              }
                       }
                 }

如果不做这个根配置文件的修改,就会出现某些类库无法找到你引入的aar文件的报错。


最后的小结:在什么情况下使用*.jar文件?在什么情况下使用*.aar文件呢?

如果你只是一个简单的类库那么使用生成的*.jar文件即可;如果你的是一个UI库,包含一些自己写的控件布局文件以及字体等资源文件那么就只能使用*.aar文件。


文章就到此为止了,see you