android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题

  • 为什么会用到fat-aar
    • 如何使用
    • 打出来的aarlib中存在多个架构,例如x86\x86_64
    • 我在打包okhttp和retrofit的时候遇到的问题
  • 你遇到其他问题怎么处理?

为什么会用到fat-aar

需要把有个模块打包成aar,直接打包的话,模块中引用的jar、aar、第三方依赖库都不会打包进去。直接生成的aar缺少内部引用的以来,所以要用到fat-aar来把模块中用到的依赖也打包进去。

如何使用

1.首先在项目的gradle加入

classpath 'com.github.kezong:fat-aar:1.3.8'

2.在repositories加入

flatDir {dirs 'libs'}


3. 在需要打包aar的build.gradle中加入

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

4.第三方库需要把依赖implementation改为embed,例如:

implementation('com.squareup.okhttp3:okhttp:4.11.0')
改为:
embed('com.squareup.okhttp3:okhttp:4.11.0')
  1. 本地的aar引入,例如:
implementation files("libs/xxx.aar")
改为:
embed(name: 'animplayer', ext: 'aar')
//需要加上这个
compileOnly fileTree(dir: 'libs', include: ['*.jar', '*.aar'])

打出来的aarlib中存在多个架构,例如x86\x86_64

我们不需要这些so库的话可以过滤掉
在需要打包的模块build中加入要过滤的so

android{//不需要把这些架构打进去packagingOptions {exclude 'lib/x86/*.so'exclude 'lib/x86_64/*.so'}
}

我在打包okhttp和retrofit的时候遇到的问题

我通过这种方式去把okhttp和retrofit打包打aar

embed('com.squareup.okhttp3:okhttp:4.11.0')
embed('com.squareup.okio:okio:3.2.0')
embed('com.squareup.retrofit2:retrofit:2.9.0')
embed('com.squareup.retrofit2:converter-gson:2.9.0')

打包过程中没遇到任何问题,但是在使用的时候却崩溃了。
通过排查定位发现是okhttp依赖了okio,retrofit依赖了google的gson
但是打包aar的时候并没有打包进去

我看fat-aar官网是有说明的:

如果你想将所有远程依赖在pom中声明的依赖项同时打入在最终产物里的话,你需要在build.gradle中将transitive值改为true,例如:
fataar {
transitive = true
}
官网链接可以自己看一下

我加了这个照样没有生效。

解决办法
只好自己把这两个以来手动添加,更改后的代码为:

     //okhttp3 依赖了okioembed('com.squareup.okhttp3:okhttp:4.11.0')embed('com.squareup.okio:okio:3.2.0')embed('com.squareup.okhttp3:logging-interceptor:4.11.0')//retrofit 依赖了gsonembed('com.squareup.retrofit2:retrofit:2.9.0')embed('com.squareup.retrofit2:converter-gson:2.9.0')embed('com.google.code.gson:gson:2.8.5')

你遇到其他问题怎么处理?

我这里只是遇到了这个问题,如果你使用其他依赖有问题,可以看看是否依赖里的依赖没有打进去,可以查看一下aar里面的依赖库,然后跟自己项目依赖树做一下对比,看看有没有缺少库。

欢迎评论,我可以在文章中加上有问题的库

android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题相关推荐

  1. 【Android 安全】DEX 加密 ( 代理 Application 开发 | multiple-dex-core 依赖库开发 | 配置元数据 | 获取 apk 文件并准备相关目录 )

    文章目录 一.multiple-dex-core 依赖库作用 二.配置目录元数据 三.multiple-dex-core 代理 Application 四.获取 apk 文件并准备相关目录 五.相关代 ...

  2. java 手动编译打包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

  3. android安卓实现圆形头像效果(使用第三方开源库)

    实现圆形头像方法有很多,此处使用个人认为最为方便,以及最为快速的一种方法,使用第三方开源库.此开源库提供了一个第三方ImageView的控件:RoundedImageView. 实现步骤: 第一步:引 ...

  4. 【我的Android进阶之旅】NDK开发引入第三方so库(比如assimp和opencv库)常出现的几个问题:missing and no known rule to make it等

    文章目录 一.写这篇博客的原因 二.错误一.ninja: error: 'xxx.so', needed by 'yyy.so', missing and no known rule to make ...

  5. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

  6. Android 模块化编程之引用本地的aar

    转: http://www.stormzhang.com/android/2015/03/01/android-reference-local-aar/ 随着项目越来越多,代码的复用就变得异常重要,这 ...

  7. Android中关于aar打包和集成

    最近项目中需要更新sdk版本,基础库moudle B 依赖sdk版本.更新sdk版本的话->需要替换B中的sdk并将B打包成aar集成到主项目A中,原以为很easy的事情结果修改后运行项目一直报 ...

  8. android studio导入aar包,AndroidStudio导入本地aar文件

    平时写一些Demo玩的时候经常会用到重复的操作,比如打印Log,而Android原生的Log每次使用都要加上tag: Log.e(String tag, String msg); 而我习惯将tag全都 ...

  9. android打包规范包含第三方库aar,Android Studio 打包AAR和第三方静态库(示例代码)

    需求 现在有一个第三方库libstatic_add.a和对应的头文件static.h,要求封装一个Module,该Module依赖这个静态库,要求打包的Module包含该静态库. 方案 创建Andro ...

最新文章

  1. 2014年:这些词都快被玩坏了
  2. sun m5000 snapshot
  3. update core.php 更新_PHP: 更新日志 - Manual
  4. 巧用这些可视化分析工具,让你的工作效率提升50%!
  5. 国嵌视频光盘及源码网盘下载地址-续
  6. debain服务器系统用什么,建站服务器系统用CentOS还是Debian 适合自己才好
  7. Iphone 铃声制作及同步
  8. CSS+DIV实现圆角
  9. 功能测试用例设计方法,一文带你了解用例设计,再也不担心用例了
  10. WSJ0中的wv文件如何转换为wav文件
  11. 微信企业号开发七:JSAPI模式
  12. 非常好用的离线地图手机app
  13. 手把手教你:图像识别的垃圾分类系统
  14. 对网页 ‘’为所欲为‘’ 之手动实现深色模式?
  15. 如何用几何画板画绕点旋转动画
  16. element ui路由配置文件_element-ui使用导航栏跳转路由的用法详解
  17. Newton-Raphson法
  18. Jetpack架构组件 (一)-- Android Jetpack 简介
  19. 《程序员》 -- 说说软件专利
  20. Linux 内核自带的 LED 灯驱动

热门文章

  1. python的算法语句_python-算法基础--1
  2. 【米思米机械设备知识分享】- 游标卡尺使用方法介绍
  3. Pandas数据的导入与导出
  4. Hibernate Pk生成策略
  5. PHPStorm常用快捷键
  6. Bootstrap 警告(Alerts)
  7. win7系统下 OpenGL 不能正常显示解决方法
  8. 居然得了“坐板疮”...
  9. “向上兼容性”的思考
  10. cordova插件的创建