关于安卓子模块打包,aar,jar丢失问题

news/2024/5/25 9:42:02/文章来源:https://blog.csdn.net/motosheep/article/details/136596286

背景

项目中,三方依赖是一个本地子module,子module中,又引入了一些aar,jar包。这个时候,如果子module要输入一个aar包给业务侧调用,观察打包结果。

问题

如果直接使用gradle进行打包,会导致子module中引入的aar,jar包导入失败,这个时候,主项目如果有用到这些aar包或者jar包,就会报错,提示找不到这个依赖。
通过打开生成的产物,也可以观察到,lib目录下,是没有引入到这些aar,jar包的。

修复

思路:主要原因,是这个子模块在打包的过程,没有把自己的三方依赖一起打包。
方式:
使用三方库进行导入:fataar
这个库,主要是打包的场景下用到的,专门处理这种打包三方依赖丢失的问题,详情用法,文档中有。
这里简单说明一下:
(1)根build.gradle引入:

buildscript {repositories {mavenCentral()}dependencies {classpath 'com.github.kezong:fat-aar:1.3.8'}
}

(2)需要打包的子module引入(输出aar的module)

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

(3)子module引入三方依赖时的语法处理

dependencies {implementation fileTree(dir: 'libs', include: '*.jar')// java dependencyembed project(path: ':lib-java', configuration: 'default')// aar dependencyembed project(path: ':lib-aar', configuration: 'default')// aar dependencyembed project(path: ':lib-aar2', configuration: 'default')// local full aar dependency, just build in flavor1flavor1Embed project(path: ':lib-aar-local', configuration: 'default')// local full aar dependency, just build in debugdebugEmbed(name: 'lib-aar-local2', ext: 'aar')// remote jar dependencyembed 'com.google.guava:guava:20.0'// remote aar dependencyembed 'com.facebook.fresco:fresco:1.12.0'// don't want to embed inimplementation('androidx.appcompat:appcompat:1.2.0')
}

(4)所有依赖产物都打包进入产出的aar中
这里就要在产出module的build.gradle文件中,声明如下:

fataar {transitive = true
}

同样,如果要忽略,就用exclude语法,和原来一致,示例如下:

embed('com.facebook.fresco:fresco:1.11.0') {// exclude any group or moduleexclude(group:'com.facebook.soloader', module:'soloader')// exclude all dependenciestransitive = false
}

其中,可以看到,是用embed代替implementation的

后续打包步骤,和原生一致,这里就不再叙述了。

that’s all-------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1006863.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java的天然气工程业务管理系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…

Affinity Designer:超越想象,打造独一无二的设计作品!mac/win版

Affinity Designer是一款功能强大的图形设计软件,它拥有广泛的工具和功能,可以满足各种设计需求。无论是平面设计师、UI/UX设计师、插画师还是摄影师,Affinity Designer都能为他们提供所需的工具和支持。 Affinity Designer 软件获取 Affin…

1361:产生数(Produce)

【解题思路】 1、将数字拆分保存在数组中,而后转换每一位。 2、将数字变化规则保存在x、y两个一维数组中,x[i]到y[i]是一种转换规则。 3、从n的初始值开始搜索,对n做数字拆分,将拆分后的各位数字保存在一个数组中。针对数组中的每…

数字化工厂有哪些典型应用?

随着科技的飞速发展,数字化工厂已经成为现代制造业的重要趋势。它将先进的数字化技术应用于制造过程,实现了生产流程的智能化、自动化和高效化,为制造业带来了革命性的变革。本文将深入探讨数字化工厂的典型应用,并揭示其如何推动…

傅立叶之美:深入研究傅里叶分析背后的原理和数学

一、说明 T傅里叶级数及其伴随的推导是数学在现实世界中最迷人的应用之一。我一直主张通过理解数学来理解我们周围的世界。从使用线性代数设计神经网络,从混沌理论理解太阳系,到弦理论理解宇宙的基本组成部分,数学无处不在。 当然&#xff0c…

基于SSM技术的分布式销售平台设计与实现

目 录 摘 要 I Abstract II 1 绪论 1 1.1 课题研究背景与意义 1 1.2 国内外研究现状 1 1.2.1 国外研究现状 1 1.2.2 国内研究现状 2 1.3 本章小结 2 2 工程开发技术介绍 3 2.1 Web前端技术栈 3 2.1.1 HTML&CSS 3 2.1.2 jQuery 3 2.1.3 JSP 3 2.2 服务端开发技术栈 3 2.2.1…

【PHP+代码审计】PHP基础——运算符

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

springboot268码头船只货柜管理系统

码头船只出行和货柜管理系统的设计与实现 摘要 针对于码头船只货柜信息管理方面的不规范,容错率低,管理人员处理数据费工费时,采用新开发的码头船只货柜管理系统可以从根源上规范整个数据处理流程。 码头船只货柜管理系统能够实现货柜管理…

数据结构(十)——头插法和尾插法建立单链表

😀前言 在数据结构中,单链表是一种常见的数据结构,它由一个头节点和若干个数据节点组成。创建单链表的过程可以通过头插法或尾插法来实现。头插法是将新节点插入到链表的头部,而尾插法是将新节点插入到链表的尾部。本文将介绍头插…

Java笔记+复习代码

Java: 复习-代码 普通5个数字排序计算5位数字中,各位数字之和swtich/ if esle: 输入10名同学的成绩6门课成绩,平均分和最高分100内奇数之和九九乘法表举行程序大赛两个数整除圆的周长和面积 基本数据类型多线程集合框架Collection实现arraylist接口ArrayList泛型(自定义泛型)ha…

Transformer模型引领NLP革新之路

在不到4 年的时间里,Transformer 模型以其强大的性能和创新的思想,迅速在NLP 社区崭露头角,打破了过去30 年的记录。BERT、T5 和GPT 等模型现在已成为计算机视觉、语音识别、翻译、蛋白质测序、编码等各个领域中新应用的基础构件。因此&#…

Excel下拉自动填充

1、选中需要下拉填充的单元格,按下Ctrl,然后再往下拖动填充。 下拉结果: 2、选中两个连续的单元格,往下拖动填充,可以填充增加两数差。 下拉结果: 本文为学习笔记,所参考文章均已附上链接&#…

复合查询【MySQL】

文章目录 复合查询测试表 单表查询多表查询子查询单行子查询多行子查询IN 关键字ALL 关键字ANY 关键字 多列子查询 合并查询 复合查询 测试表 雇员信息表中包含三张表,分别是员工表(emp)、部门表(dept)和工资等级表&…

Docker_搭建跨服务器网络通讯(swarm 集群)

本文目录 一、如何搭建docker的跨服务器网络1、在主服务器上初始化docker swarm 集群2、其他服务器节点加入到创建好的集群中3、检验集群是否搭建成功4、创建overlay类型的docker网络 二、如何部署服务1、docker部署2、docker-compose部署 一、如何搭建docker的跨服务器网络 1…

蓝桥杯刷题7

目录 1. 字母数 2. 列名 3. 大乘积 4. 最大连通 5. 星期几 1. 字母数 public class Main {public static void main(String[] args) {int num 2023;while(true) {String mInteger.toString(num,16);if(m.matches("^[a-f]$")){System.out.println(num);break;}n…

SpringCloudGateway全局过滤器

文章目录 全局过滤器的作用自定义全局过滤器过滤器执行的顺序 上一篇 Gateway理论与实践 介绍的过滤器,网关提供了31种,但每一种过滤器的作用都是固定的。如果我们希望拦截请求,做自己的业务逻辑则没办法实现。 全局过滤器的作用 全局过滤器的…

【AcWing】蓝桥杯集训每日一题Day1|二分|差分|503.借教室(C++)

503. 借教室 503. 借教室 - AcWing题库难度:简单时/空限制:1s / 128MB总通过数:8052总尝试数:26311来源:NOIP2012提高组算法标签二分差分 题目内容 在大学期间,经常需要租借教室。 大到院系举办活动&…

二 centos 7.9 磁盘挂载

上一步 一 windso10 笔记本刷linux cent os7.9系统-CSDN博客 笔记本有两个盘,系统装在128G的系统盘上,现在把另外一个盘挂载出来使用 lsblk 发现磁盘已经分好了,直接挂载就好了,参考文章:Centos7.9 挂载硬盘_centos7.9挂载硬盘-CSDN博客 永久挂载 lsblk -f分区格式化 mkfs…

PYTHON 自动化办公:更改图片后缀

1、前言 在之前的文章中,介绍了图片的压缩技术,这里讲解如何利用python批量将图片改为指定后缀的格式。当然,也可以为深度学习批量更改文件后缀,例如在分割中,可能需要img和mask的图片名称完全一致等等 PYTHON 自动化…

Thymeleaf 基本使用

介绍 Thymeleaf是一款现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML、XML、JavaScript、CSS甚至纯文本。它的主要目标是将优雅的自然模板带到开发工作流程中,实现高度可维护的模板创建方式。 官网文档:https://www…