今天遇到一个需求,需要把项目中的诸多的so封装成一个aar,直接使用这个aar进行调用,因为诸多的so看起来太多了,不太好管理,封装成一个aar也变相的达到了加密的效果。
文章目录
首先,简单来说,aar其实就是一个压缩包,把一个项目或者一个module压缩成一个压缩包,里面可以包含项目中的所有东西,比如图片,布局,类,so等等,在其他项目中直接引入这个aar之后,就可以直接去使用这个aar中的资源了。
这样有一个什么好处呢,可以达到加密,方便管理的效果。这个aar内部的配置,在内部就可以完成了,和外部的配置没有什么关联,简化了配置文件,简化了项目module之间的关系。
把aar后缀改为rar,解压看一下里面的动有什么:
这里总结一下,如何打包aar,然后总结一下如何去把aar导入项目中去使用这个aar。
首先,要确保,打aar之前,项目是OK的,没有报错的,否则这问题点就不太好查找了。下面开始打包aar。
打包aar流程
1,首先,把要打包的东西放在一个module里。这里就以把项目中所有的so打包为aar为例。
Android studio层级管理切换到project,然后右键项目根,new–module—Android library,一路下一步。
OK,这样就建成了一个module,它会自动依赖进主APP ,如果没有依赖进去也没关系,找到APP的build.gradle(app),在dependencies里面增加对这个新建module的引用,也非常简单一句代码:
implementation project(path: ':solibrary')
这样,到此,就新建好了一个module,并且也把这个module关联到了APP这个module上面。
第一步的重点就是:新建一个module并把它关联到APP module。
2.第二步就是,把APP里面要封装成aar的东西全部剪切进这个module里。在这里就是剪切进solibrary这个module里。
但是值得一提的是,so,它是交叉编译生成的,对项目的目录层级包名有要求,所以在剪切过来的时候要和在它之前的地方一样的层次目录和一样的build.gradle配置。
什么意思呢?
就是说,在app module里面,so放的路径是什么,在solibrary module里面也要是同样的路径。在我的项目里,最初所有的so都放在了main/src下面新建了一个libs文件夹,所有的so都在这里,当然在build.gradle(app)里面也给这些so做了路径配置