Android将完整项目或Module打包成aar

9,883 阅读4分钟

     由于公司项目需要把完整App打包成一个aar包,提供给其他合作厂商进行集成内嵌,外部厂商需要有自己的壳工程和相应的Application然后调用我们的aar,一波三折踩了不少坑,今天先说把完整项目打成一个独立的SDK包.

一.aar是什么?*.aar,AAR(Android Arehive)包是一个Android库项目的二进制归档文件,aar包含所有资源,class,xml布局文件以及res资源文件全部包含。注意是全部。jar只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。

二.完整项目打包成aar的步骤如下:

1.在App的build.gradle目录下:

a.将apply plugin: 'com.android.application'改为 app plugin:'com.android.library'.截图如下:

b.删除applicationId,截图如下:

2.去清单文件修改AndroidManifest配置:

修改后的清单文件如下图:

三、去项目中操作Android Studio

a. 单击右侧的Gradle图标,展开项目列表如下图:

b.在第二步完成后会在项目的app——build——outputs——aar目录下生成相应的aar文件,如下图所示

c.如果相应打正式的aar包就要先签名,这里我们在App的build.gradle目录下配置签名:

具体设置签名的步骤如下:

d.在app/build.gradle文件中增加 signingConfigs字段,如下图所示:

e.signingConfig做完之后,对于 Release配置,在 buildTypes中必须指定,如下图所示 :

四、说一下jar包和aar包有什么区别?
1.打包之后生成的文件地址:

*.jar:库/build/intermediates/bundles/debug(release)/classes.jar

*.aar:库/build/outputs/aar/libraryname.aar

2.jar包只包含了classes文件,不包含资源文件;aar不仅包含了classes文件,还包含资源文件
并且,aar的这个可以发布到maven库,然后使用者直接通过更改版本号就可以获取到最新的aar文件

五、项目中的某个子module打aar包过程如下:进行下图操作后即可生成aar文件

六、以上就是完整项目或者项目中的子module打包成aar的过程,经过实战后,小伙伴们再也不用担心不能封装SDK了,使用的话很简单,直接将打包成的aar文件复制到新项目的libs路径下:

在App的build.gradle目录下做如下配置引入aar包:

七、引入的名称和libs目录下一致即可,重新构建项目,会发现报错了,错误信息如下:

​ 大致意思就是找不到引入的项目,做如下配置即可解决:

repositories {
    //libs 目录
    flatDir {
        dirs "libs"
    }
}

八、重新构建项目,果然运行成功:

最后放一张运行的效果图:

小伙伴们如有兴趣可以自己去尝试下,这里只是随便放了两个aar包,你可以用自己的库或者小例子、项目等等,以后可以自己封装独立的SDK提供给外部使用,下一篇博客将整理如何把第三方aar和整个项目的aar合并成一个aar,这其中遇到的坑更多。