欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android 解决aar二次封装问题

程序员文章站 2024-03-15 19:28:48
...

项目要提供给它方使用,但是自己项目中又使用到了别的第三方的aar,又不能提供module的lib,只能在aar的基础上进行二次封装

一、什么是aar

AAR文件是一种Android归档包(类比Jar:Java Archive),这种归档包是由Gradle构建库的Android Library插件产出的。它是一个压缩包,里面的内容可以总结为5个目录和5个文件,如图所示:
android 解决aar二次封装问题

二、aar合并

采用合并的第三方插件是 android-fat-aar
地址:https://github.com/adwiv/android-fat-aar
这个插件 可以兼容到3.0以后,唯一缺点好像是不能合并aidl,
官方文档:
android 解决aar二次封装问题
所以:在自己二次封装的时候尽量避免这些问题(一般不会出现aidl的合并)

合并过程

新建项目工程:

1.在工程的build.gradle中引进插件:

classpath 'com.kezong:fat-aar:1.2.5'

android 解决aar二次封装问题
2.新建androidLibrary:(如图所示)
android 解决aar二次封装问题在新建的library中使用:

apply plugin: 'com.kezong.fat-aar'

android 解决aar二次封装问题
在library中集成第三方aar
android 解决aar二次封装问题
3.生成aar文件即可
如果自己使用新工程需要引进生成的aar,出现引入包重复,去掉重复的即可


最后顺遍说一下 implementationCompileOnlyapi的区别
gradle3.0对gradle2.x的代替:
compile依赖关系已被弃用---->被implementation和api替代,
provided ----->被compile only替代,
apk ------>被runtime only替
解释一下:
implementation、api:

api和compile是一样的效果,implementation有所不同,通过implementation依赖的库只能自己库本身访问,举个例子,A依赖B,B依赖C,如果B依赖C是使用的implementation依赖,那么在A中是访问不到C中的方法的,如果需要访问,请使用api依赖

compileOnly:

compileOnly和provided效果是一样的,只在编译的时候有效, 不参与打包

runtimeOnly:

runtimeOnly 和 apk效果一样,只在打包的时候有效,编译不参与

参考:
合并AAR踩坑之旅
AS 3.1 多library合并打包成aar的正确方式(fat-aar)

相关标签: aar二次封装