安卓将子模块打aar包,并将其远程依赖打包进去

news2024/9/24 21:26:39

生成 AAR 包

在Android Studio Terminal 窗口输入以下命令:

./gradlew :monitor:assembleRelease

monitor 换成你子模块的名称,不出意外的话 就会在下面目录生成相应aar文件
在这里插入图片描述

注意:如果你的Java运行环境是Java 8 则在老一点的AS上 可以运行打包成功,在较新一点的AS上会打包报错,主要是新的AS要求的环境变量 都Java 11 以上了,可以考虑配个环境,再打包或者使用较旧的AS如 2021版本的。

🆗,到这里没什么压力

这时你会发现aar包并不大,甚至只有几十kb,如果你的子moudle 没使用第三方依赖的话,你会发现使用时没什么问题,如果有第三方依赖的话,它还是不大,甚至编译期也不会报错 ,但你运行时就会报错依赖找不到。

其实你在打aar包的时候并没有把第三方库 打包进去,这还搞个🔨

不要慌,继续往下看👇

将远程依赖打包进aar中

介绍下我们的主角:fat-aar-android 链接如下

https://github.com/kezong/fat-aar-android?tab=readme-ov-file

一个gradle插件,它可以将依赖项合并到最终的aar文件中,并与agp3 .+一起工作

由于作者不维护了最终支持版本为 AGP 3.0 - 7.1.0,和 Gradle 4.9 - 7.3

在新项目上会报错,这不是重点,还是有大佬fork版本呢

下面这个库还在继续维护,gradle 版本大于 4.9 - 7.3 可以使用这个库

https://github.com/aasitnikov/fat-aar-android


我照着使用文档搞的,好像报错了,就按着example代码写的,好家伙,源码的和说明文档的写法不一样,懵了,就试着搞了一下,编译通过🤭,如过你照着使用文档弄,可以通过的话就忽略下面代码把!

Step 1: 将下面的代码段添加到root build中:

就是你项目的根build.gradle文件,不是app下的哦

buildscript {
    repositories {
        mavenCentral()
        google()
        jcenter()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath 'com.github.kezong:fat-aar:1.3.8'
    }
}

plugins {
    id 'com.android.application' version '7.0.2' apply false
    id 'com.android.library' version '7.0.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}

这个文件原本只有 plugins 块,把 buildscript 放进去就行

Step 2: 添加插件
在你想要打包的子Moudlebuild.gradle 中 添加 id 'com.kezong.fat-aar'

plugins {
    id 'com.android.library'
    id 'com.kezong.fat-aar'
}

也有可能你项目是这种写法:apply plugin: 'com.kezong.fat-aar' 都一样

Step 3: Embed 依赖
就是把你引入的第三方依赖 从 implementation xxx 换成 embed xxx 效果如下:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    embed 'com.lzy.net:okgo:3.0.4'
    // ffmpeg
    embed 'com.arthenica:ffmpeg-kit-full:6.0-2'

    embed 'com.arthenica:smart-exception-java:0.2.1' 

    embed 'com.arthenica:smart-exception-common:0.2.1'
    // util
    embed 'com.blankj:utilcodex:1.31.1'
    // gson
    embed 'com.google.code.gson:gson:2.8.6'
}

然后运行上面 生成 AAR 包 的指令,就会看下像下面的打印

[fat-aar][embed detected][aar]com.lzy.net:okgo:3.0.4
[fat-aar][embed detected][aar]com.arthenica:ffmpeg-kit-full:6.0-2
[fat-aar][embed detected][aar]com.blankj:utilcodex:1.31.1

然后 BUILD SUCCESSFUL 你会发现aar包 比原来胖了一圈,不出意外你就可以拿着aar包 愉快地玩耍了

当然,不出意外是不可能的,导入, 运行, 啪! 又报错🤦‍♂️

看log又是相关类找不到。我不是都打包进去了吗?怎么还找不到!

以上面 'com.arthenica:ffmpeg-kit-full:6.0-2'举例

如果要在项目中依赖的话,确实没什么问题,因为它如果依赖了别的文件的话,会自动下载的,而打包成aar文件它就不会下载了,这时候就缺少了相关文件,怎么办呢?分析吧

打开External Libraries文件夹,可以看到 多了 exception-javaexception-common 这两个库
在这里插入图片描述
把这两个库 像上面Step 3 那样 放进去就行了,然后再回到最初 生成 AAR 包

关机 跑路 一气呵成 emm… 跑题了😆

编译 运行 啪!成了😁,特,属予作文以记之。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Stable Diffusion】(基础篇九)—— 扩展

扩展 本系列博客笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 添加一些SD对应的扩展&am…

【前端 22】使用Nginx部署前端项目

使用Nginx部署前端项目 在前端开发中,将项目打包并部署到服务器上是一个常见的需求。Nginx以其高性能、稳定性和丰富的特性成为了前端项目部署的热门选择。下面,我将详细介绍如何使用Nginx部署一个前端项目,并展开讲解Nginx的目录结构以及如何…

第TR4周:Transformer中的位置编码详解

在实施 NLP 解决方案时,循环神经网络(RNN)具有处理序列顺序的内置机制。Transformer则是引入来位置编码机制来保存文本中字符的位置信息。 位置编码定义 位置编码记录了文本中字符的位置信息,这里位置信息的记录不使用单个数字&am…

quartz实现动态定时任务管理

1、需求 配置中,固定周期,单位秒。需要任务每间隔这个秒数 执行进行统计。 2、分析 要实现这个需求,之前一直在用的多线程方案也行。详见 既然前面用quartz 根据cron表达式上一次和下一次的执行时间判断。 本次就用quartz来实现动态任务。…

学生管理系统之数据库设计与开发

学生管理系统之数据库设计与开发 使用SQL创建表格 QT上写逻辑 创建一个类 <

Xilinx FPGA 原语解析(一):IBUFDS_GTE3 差分时钟输入缓冲器

目录 1.使用说明 2.实例化代码 3.参数解释 4.端口连接 1.使用说明 IBUFDS_GTE3 是Xilinx FPGA 中用于高速接口的差分时钟信号输入缓冲器。 BUFDS_GTEx&#xff0c;x2/3/4&#xff08;不同系列的FPGA x的值不同&#xff09;&#xff0c;其中UltraScale使IBUFDS_GTE3…

内网穿透--meterpreter端口隧道

实验背景 通过公司带有防火墙功能的路由器接入互联网&#xff0c;然后由于私网IP的缘故&#xff0c;公网无法直接访问内部主机&#xff0c;则需要通过已连接会话&#xff0c;代理穿透访问内网主机服务。 实验设备 1.路由器一台 2.内网 Win 7一台 3.公网 Kali 一台 4.网络 …

Java算法和集合

1. 排序 1.1. 排序概述 1.2. 冒泡排序 整个数列分成两部分&#xff1a;前面是无序数列&#xff0c;后面是有序数列初始状态&#xff0c;整个数列都是无序的&#xff0c;有序数列为空如果一个数列有n个元素&#xff0c;至多需要n-1趟循环才能保证数列有序每一趟循环可以让无序…

Python:下载数据集

打开网站&#xff1a;搜索 ​​​​​​https://www.kaggle.com 直接下载即可&#xff08;要登陆注册哦&#xff09;,下载完成一定要放到桌面哦&#xff0c;因为读取的是当前目录 在网页上打开上一篇文章所讲的HelloWorld&#xff0c;如果没有安装请跳转 http://t.csdnimg.cn…

视频教程 - 自研Vue3 Tree组件高级功能:虚拟滚动新增节点实现自动滚动

感谢小伙伴们对本套自研vue3 tree组件教程的关注&#xff0c;在前一篇媲美Element Plus JuanTree终极实战&#xff1a;虚拟滚动的功能演示中发现了小bug&#xff0c;特地整理了相关录屏来说明怎么一步步解决bug的&#xff0c;来回馈小伙伴们的支持。 Tree组件高级功能&#xff…

Photoshop Ps2024苹果(mac)版安装下载,(附win/mac下载链接)

一、简介 PS2024即Photoshop 2024&#xff0c;是一款由Adobe公司开发的图像处理软件。其部分功能介绍如下&#xff1a; - 生成式AI绘图&#xff1a;将Photoshop和生成式AI两个强大的成像引擎结合&#xff0c;用户可通过文本提示在Photoshop内部生成内容&#xff0c;并使用Phot…

基于cubeMX的STM32开启SPI及DMA

1、打开cubeMX后&#xff0c;设置SPI&#xff0c;如下图 2、设置SPI的DMA中断 3、DMA设置 4、SPI的GPIO设置 5、最后生成代码&#xff0c;可以看到工程文件中有dma.c和spi.c 6、使用举例&#xff1a;如幻彩灯的亮灭使用SPIDMA产生的信号波形来控制&#xff0c;在ws2812.c中调用…

Harbor镜像仓库(v2.10.3)附相关自定义配置

目录 一. 环境准备 二. 部署安装 三. 修改网段的方法 四. 配置开机与伴随docker启动 五. 基础使用 1. 创建一个用户 2. docker登录用户 3. 创建项目 4. 推送镜像 六. 自制证书配置HTTPS 一. 环境准备 Harbor 是一个开源的企业级 Docker 镜像仓库&#xff0c;提供了许…

1.4亿中文知识图谱导入Nebula Graph快速体验

1. 史上最大规模的中文知识图谱 Yener 开源了史上最大规模的中文知识图谱—— OwnThink&#xff08;链接&#xff1a;​​https://github.com/ownthink/KnowledgeGraphData​​&#xff0c;数据量为 1.4 亿条。数据以 ​​(实体, 属性, 值)​​ 和 ​​(实体, 关系, 实体)​​…

AI大模型技术的四大核心架构分析

AI大模型技术的四大核心架构演进之路 随着人工智能技术的飞速发展&#xff0c;大模型技术已经成为AI领域的重要分支。 深度剖析四大大模型技术架构&#xff1a;纯粹的Prompt提示词法、Agent Function Calling机制&#xff0c;RAG&#xff08;检索增强生成&#xff09;及Fine-…

基于若依框架开发的Spring Boot+Vue的MES(生产制造执行系统)是一种专为中小型工厂设计的ERP(企业资源计划)系统

基于若依框架开发的Spring BootVue的MES&#xff08;生产制造执行系统&#xff09;是一种专为中小型工厂设计的ERP&#xff08;企业资源计划&#xff09;系统。这个系统旨在帮助这些工厂实现更有效的生产管理、数据收集与分析、设备监控以及质量管理等&#xff0c;从而提高生产…

VMWare虚拟机如何连接U盘

检查配置 1&#xff09;Win R键&#xff0c;输入services.msc&#xff0c;打开服务。 2&#xff09;将AMware USB Arbitration Services 服务开启&#xff0c;并设置为自动启动&#xff1b; 连接U盘 目前作者了解有两种连接方式&#xff0c;如有其他连接方式&#xff0c;欢…

2024关于日本AI 领域TOP12 的大学介绍

1.东京大学 &#xff08;The University of Tokyo&#xff09; 位于&#xff1a;日本东京都文京区本郷七丁目3 番1 号 网址&#xff1a;東京大学 东京大学也被称为UTokyo 或东大&#xff0c;是日本第一所国立大学。作为领先的研究型 大学&#xff0c;东京大学提供基本所有…

JavaFX布局-SplitPane

JavaFX布局-SplitPane 常用属性orientationpaddingdividerPositionsdisable 实现方式Java实现fxml实现 一个拆分至少两个区域的容器支持水平、垂直布局可以拖动区域的大小初始化大小通过比例设置[0,1] 常用属性 orientation 排列方式&#xff0c;Orientation.VERTICAL、Orien…

k8s学习2

k8s 分成Master 负责整个k8s集群管理 node节点&#xff08;工作&#xff09;运行nginx 节点—服务器 kubernetes 组件 kubernetes集群主要由控制节点(Master)、工作节点(Node)组成 Master组件 集群的控制平面&#xff0c;集群的决策 负责管理k8s 集群管理 apiserver Kuber…