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

news/2024/10/30 19:37:06/

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里面的依赖库,然后跟自己项目依赖树做一下对比,看看有没有缺少库。

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


http://www.ppmy.cn/news/170790.html

相关文章

【Python】实现一个类似于Thief的摸鱼软件

一 背景说明 之前用Thief摸鱼(Thief官网),觉得挺好用。对于其最基本的TXT摸鱼,准备在Python中扩展一下功能,使其能够通过爬虫,支持爬取热门小说网站的内容。 软件已经开源到:MoFish软件开源地址 功能是&…

台式计算机和笔记本,大一买买笔记本还是台式电脑好?

对于这个问题,我认为大一新生买笔记本电脑更好。 一是笔记本电脑可以随身携带,比如说本地上学的同学每天放学后可以轻松带回家。 二是台式机现在也不便宜,尤其是显卡由于之前的矿潮,涨价严重,一块2499元的RTX3060现在要…

笔记本电脑可以做网站服务器,个人笔记本能做网站服务器吗

个人电脑怎么做服务器?其实个人电脑跟服务器区别不大,只要一般的电脑配置可能没有服务器的配置性能高,如果用个人电脑做服务器的话,不能运行高计算能力要求相关的应用。当然,用于一般的个人网站之类的小应用,还是可以…

笔记本计算机盖,如何在关闭盖子的情况下运行笔记本电脑

很难想象会有这样一个世界,你不能把电脑折叠起来,塞进背包里,带着它去任何地方。但如果你更喜欢桌面电脑的人体工程学,那么笔记本电脑的便利性就不一样了。 你可以在桌子上使用笔记本电脑,但你会弯腰看着一个太低的显示…

利用笔记本无线开热点,手机wireshark抓包

转自:百度经验 1. 开启cmd命令行 2.设置热点,key为热点密码,可自行修改 netsh wlan set hostednetwork modeallow ssidTest key12345678 3.此时去适配器页面,可发现新生成了“无线网络连接2”,如果您是有线网络上网…

如何将Windows 7系统镜像部署到不同的硬件计算机?

案例:将Windows 7系统镜像恢复到另一台电脑 “我有一台运行 Windows 7 的电脑,我已经创建了一个系统镜像并希望将其加载到另一台电脑上。但是,当我运行恢复控制台时,我不断收到错误消息。这让我想知道是否可以创建 Windows 7 系…

fiddler代理手机抓包的设置详解

最近在与第三方公司对接的时候,遇到一个关于证书的问题,然后第三方公司就让我在自己的设备上抓包,一开始认为fiddler只能抓电脑的包,后来才发现fiddler工具也可以代理手机抓包,详细设置如下: 步骤&#xf…

linux笔记本风扇调节,Linux下笔记本的风扇控制问题

题目比较大,实际上只有IBM thinkpad T40和Dell 640m各一台。问题的起因是这台T40近来老是疯狂地转风扇,声音很大。上网搜了下think的风扇控制,发现了lm-sensors这个软件。 Lm看上去像是Linux monitor的意思,是一个监控系统硬件信息…