由于公司项目需要把完整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'改为 apply 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,这其中遇到的坑更多。