Android Studio打包AAR
注意
依赖的Android Studio版本为4.2.2
更高的Android Studio版本使用方法可能有所不同,gradle的版本和gradle plugins的版本都会影响使用方式。
基于此,本文只能作为参考,而不能作为唯一答案,如果要完全依赖本文,则Android Studio版本也需要安装成4.2.2.
关于AAR
Android AAR文件是Android Archive文件的缩写,是一种Android应用程序存档文件格式,类似于JAR文件格式。AAR文件包含已编译的代码和资源文件,可以被其他Android应用程序引用和使用。AAR文件可以包含多个类库和资源文件,可以在项目中使用Gradle依赖关系来引用和使用。它在Android Studio中被广泛使用,可以通过Gradle构建系统在Android项目中使用。AAR文件通常用于在Android应用程序中共享代码和资源,提高代码复用性和构建效率。
如何编译生成AAR
要打包Android Archive(AAR)文件,可以按照以下步骤操作:
1. 在Android Studio中,打开要打包为AAR的项目。
如果没有目标项目,可以新建一个空白工程。
2. 选择“File”(文件)菜单,然后选择“New Module”(新建模块)。

或者在根目录(需要切换成project模式)

右键也可以直接新建模块 Module

3. 在“Create New Module”(创建新模块)对话框中,选择“Android Library”(Android库)。

4. 输入模块的名称和其他选项,然后单击“Finish”(完成)。
5. 编辑库项目的代码和资源文件。
创建成功的模块中,可以在build.gradle查看插件是否引用为com.android.library

6. 选择“Build”(构建)菜单,然后选择“Make Module 'library_name'”(生成模块“library_name”)。

此外,也可以直接在gradle构建的工具中进行打包

在android studio中,右侧边栏中gradle工具中,找到目标module,在Tasks中找到other

可以选择自己想要的打包模式(debug和release)
7. 在项目的“build/outputs/aar/”目录下找到生成的AAR文件,以便与其他应用程序或库共享。

这样,您的Android库就可以以AAR文件的形式打包并与其他应用程序或库一起使用了。
8.AAR 文件详解
AAR 文件的文件扩展名为 .aar,Maven 工件类型也是 aar。此文件本身是一个 ZIP 文件。唯一的必需条目是 /AndroidManifest.xml。
AAR 文件还可包含以下一个或多个可选条目:
/classes.jar/res//R.txt/public.txt/assets//libs/name.jar/jni/abi_name/name.so(其中 abi_name 是 Android 支持的 ABI 之一)/proguard.txt/lint.jar/api.jar/prefab/(用于导出原生库)
AAR和JAR的区别
AAR和JAR都是Java的打包格式,但在Android开发中,它们有一些区别:
1. AAR(Android Archive)是一种Android专用的打包格式,它包含了Android库项目的所有资源,例如布局、图片、XML文件等。而JAR(Java Archive)是一种标准的Java打包格式,它只包含Java类文件和一些静态资源文件,例如图标、配置文件等。
2. AAR文件可以包含多个JAR文件,以及单独的资源文件,而JAR文件只能包含Java类文件和静态资源文件。
3. 在Android Studio中,使用AAR格式的库项目可以自动导入库项目的所有资源,从而简化了项目开发和维护的工作量。
4. 另外,AAR格式的库项目还可以指定依赖项,也就是说,如果一个AAR库项目依赖于另一个AAR库项目,那么在使用该库项目时,它所依赖的库项目也会自动被导入。
因此,AAR格式的库项目比JAR格式的库项目更适合Android开发。
如何引用AAR
在Android Studio中,可以通过以下步骤引用aar文件:
1. 将aar文件放置在项目的libs文件夹中。

2. 在项目的build.gradle文件中添加以下代码:
repositories {flatDir {dirs 'libs'}
}dependencies {implementation(name:'XXXXXX_1.1.0', ext:'aar')
}
3. 在项目的Gradle sync后,就可以使用这个库中的类、方法等了。
如果你使用的是Android插件3.0或更高版本,则需要将 implementation 改为 api。
api files('libs/XXXXXXX_1.2.0_release.aar')
关于implementation和api,简单理解就是类里面 public和private的区别
implementation表示该引用只对当前module生效,其他模块即使依赖了该module,也无法使用implementation引用的其他依赖。是module私有依赖的关键字。
api表示公开引用,一般用于基础模块和公共模块,一次引用之后,其他模块引用该模块,则无需再引用其他依赖。
相关文章:
Android Studio打包AAR
注意 依赖的Android Studio版本为4.2.2 更高的Android Studio版本使用方法可能有所不同,gradle的版本和gradle plugins的版本都会影响使用方式。 基于此,本文只能作为参考,而不能作为唯一答案,如果要完全依赖本文,则…...
【Python基础知识四】控制语句
Python基础知识:控制语句 1 条件控制1.1 if语句1.2 match...case语句 2 循环语句2.1 for循环2.2 for...else语句2.3 while循环2.4 while 循环使用 else 语句2.5 无限循环2.6 break 和 continue 语句及循环中的 else 子句2.6.1 break语句2.6.2 continue语句 2.7 pass…...
Jmeter压测 —— 1秒发送1次请求
场景:有时候测试场景需要设置请求频率为一秒一次(或几秒一次)实现方法一:1、首先需要在线程组下设置循环次数(可以理解为请求的次数) 次数设置为请求300次,其中线程数跟时间自行设置 2、在设置…...
目标检测YOLO实战应用案例100讲-基于改进YOLOv4算法的自动驾驶场景 目标检测
目录 前言 国内外目标检测算法研究现状 传统目标检测算法的发展现状...
Spring Cloud智慧工地源码,利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术开发,微服务架构
智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…...
AI视频 | Runway的史诗级更新真的那么震撼吗?来看我的试用体验!
就在昨天,Runway,这个生成式AI的领头羊,正式在X上发布了他们史诗级更新 看下视频 【视频2】 这个确实看起来太棒了 注册个账号,看下效果咋样 地址百度哈,注册登录也比较方便 直接邮箱即可 不过我是直接google账号登录的…...
【动作模式识别】实现复合动作模式识别(离线控制模块)
一、思路 一般来说,要实现摸脸动作,需要采集手臂的以下肌肉的肌电信号: 肱二头肌:控制肘关节的屈曲肱三头肌:控制肘关节的伸展前臂屈肌群:控制手腕和手指的屈曲前臂伸肌群:控制手腕和手指的伸…...
Python基础学习009——类的封装
# 面向对象是一种编程思想,还有另一种是面向过程 # 面向过程,具体步骤的实现,所有功能都自己书写 # 面向对象,使用一个个工具(函数),帮助完成各项任务 # 类:对多个特性相同或相似的食物的统称,根据特征不同一个事物可以属于多个类 # 对象:由类实例化的一个事物,指代1个 # 类的组…...
前端开发和后端开发,你更倾向于哪一种?
作为一个Web开发者,你是否曾经面临过这样的选择:是专注于前端开发,还是转向后端开发?前端开发和后端开发是Web开发中的两个不同的领域,它们各有各的特点和优势,也各有各的挑战和难点。那么,你应…...
Selenium 基本功能
#driver.quit()from selenium import webdriver from selenium.webdriver.chrome.service import Service# 尝试传参 s Service("chromedriver.exe") driver webdriver.Chrome(services)driver.get(https://www.baidu.com/) input()#1/导入Selenium库 from seleniu…...
智能井盖传感器有哪些?万宾科技智能井盖效果
在城市治理过程之中,小小的井盖却成为影响民生的一个重要方面,因为井盖一旦出现问题,会严重影响市民的生命安全,并且传统的井盖一般都会采用人工巡检的方式,这就导致了巡检的难度较大,从而不能对城市各个角…...
视频增强和修复工具 Topaz Video AI mac中文版功能
Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频,包括低分辨率视频、老旧影片、手机录制的视频等。 使用Topaz Video AI非常简单,…...
0基础学习PyFlink——使用datagen生成流式数据
大纲 可控参数字段级规则生成方式数值控制时间戳控制 表级规则生成速度生成总量 结构生成环境定义行结构定义表信息 案例随机Int型顺序Int型随机型Int数组带时间戳的多列数据 完整代码参考资料 在研究Flink的水位线(WaterMark)技术之前,我们可…...
vue使用Web Speech API实现语音播报
SpeechSynthesisUtterance对象用于表示要播放的语音内容,SpeechSynthesis对象则用于控制语音的播放、暂停、停止等操作。 const synth window.speechSynthesis const msg new SpeechSynthesisUtterance() // 语音播放 const playVoice (text) > {synth.canc…...
MVC5_Day1(Razor视图引擎)
MVC提供了两种不同的视图引擎:Razor视图引擎、Web Forms视图引擎。 1.代码表达式 1.1 转换字符:核心转换字符,用作标记<>代码之间相互转换的字符。 1.2 两种基本转换:代码表达式、代码块。都是求出值,再写入响…...
超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能脚本error报错…...
vscode开启emmet语法
需要在setting.json中添加配置 首先进入设置,然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…...
07、vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。
目录 问题解决: 问题 vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。 在使用 VSCode 时,创建 Vue 项目报的错 创建不了 Vue 项目 解决: 因为在此系统上禁止运行该脚本࿰…...
利用移动互联、物联网、智能算法、地理信息系统、大数据分析等信息技术开发的智慧工地云平台源码
智慧工地是指利用移动互联、物联网、智能算法、地理信息系统、大数据挖掘分析等信息技术,提高项目现场的“人•机•料•法•环•安”等施工要素信息化管理水平,实现工程施工可视化智能管理,并逐步实现绿色生态建造。 技术架构:微…...
海康多相机同步取流保存图片
话不多说,直接上代码。代码里包含了多窗口显示图像和保存图片。 #"rtsp://admin:123456qq192.168.10.192/stream1" # rtsp://admin:Admin123192.168.100.103:554/Streaming/Channels/101 #rtsp://admin:Admin123192.168.100.103:554/cam/realmonitor?ch…...
字节跳动(抖音公司)GR3-Fourier V15.0 工业机械臂 | 运动学逆解+离线应急控制 纯C底层开源代码
GR3-Fourier V15.0 底层绝密技术密档 一、六轴机械臂逆运动学完整求解源码 #include "inverse_kinematic.h" #define PI 3.1415926535f #define L1 0.185f #define L2 0.210f //笛卡尔坐标转关节角度逆解 uint8_t IK_Solve(float x,float y,float z,float pitch,fl…...
企业信息化架构(业务架构、应用架构、数据架构、技术架构)方案:四横五纵框架 、元模型+视图 、业务、应用、数据、技术四大架构
该方案提出了企业信息化架构的“四横五纵”框架,涵盖业务、应用、数据、技术四大架构及架构管控,通过元模型定义元素关系,以多层级视图实现从战略到实施的可视化与落地,支撑企业架构全生命周期管理。 四横五纵框架清晰划分了企业架…...
大模型应用开发:从需求分析到上线的全流程指南
一、需求分析:锚定测试视角下的开发方向对于软件测试从业者而言,大模型应用开发的需求分析阶段,核心是跳出传统功能测试的思维局限,从“验证功能正确性”转向“定义AI能力边界”。首先要明确业务场景的核心诉求,比如开…...
从一次线上故障复盘:如何用 nlohmann::json 的 `value()` 和 `get_to()` 优雅处理缺失字段
从一次线上故障复盘:如何用 nlohmann::json 的 value() 和 get_to() 优雅处理缺失字段 上周五晚上10点,我们的算法服务平台突然收到大量错误告警。一个核心接口在解析上传的算法包时频繁报错,日志里满是[json.exception.type_error.302] type…...
TDD 工作流深度实践:测试驱动开发遇上 AI 智能体
作者注:本文基于 ECC 项目的 TDD 工作流 Skill,展示如何在 AI 编码助手的辅助下严格执行测试驱动开发。项目开源地址:github.com/affaan-m/ECC摘要 测试驱动开发(TDD)是保障代码质量的金标准,但在实际落地中…...
避开这3个坑,你的SAR影像预处理效率翻倍:ENVI SARscape实战心得
避开这3个坑,你的SAR影像预处理效率翻倍:ENVI SARscape实战心得 在遥感数据处理领域,SAR影像因其全天候、全天时的独特优势,已成为地质灾害监测、海洋观测等领域不可或缺的数据源。然而,许多从业者在初次接触ENVI SARs…...
基于Trinket与NeoPixel的声控LED色彩风琴制作全攻略
1. 项目概述:让声音驱动光效色彩风琴,一个听起来有些复古的名字,在七八十年代的迪斯科舞厅和家庭派对上,它曾是营造氛围的明星。本质上,它就是一个声控灯光系统,能够将音乐的节奏和强度实时转化为绚丽的光影…...
【每日一题】排序
📌 写在前面:排序是算法竞赛中最基础也最核心的技能之一。它不仅是快速查找、去重、贪心等算法的前置步骤,更是自定义比较策略、多关键字排序、排序后贪心等高级技巧的基石。本文基于蓝桥杯官方课程与真题,从基础排序到竞赛实战&a…...
KRTS实时内核开发环境搭建:手把手教你配置隔离CPU与Visual Studio联调
KRTS实时内核开发环境搭建:手把手教你配置隔离CPU与Visual Studio联调 在工业自动化、机器人控制和高频交易等硬实时应用领域,毫秒级的延迟差异可能导致整个系统失效。KRTS(Kithara RealTime Suite)作为Windows平台上的实时扩展解…...
分支管理(二):解决合并冲突,处理“代码打架”
1. 问题场景 你已经学会了创建分支和合并分支。在上一篇文章里,合并过程顺滑得像切黄油——Git 自动完成了所有工作。但真实世界里,你和一个同事可能同时修改了同一个文件的同一处代码。当你试图把两个分支合并在一起时,Git 会停下来…...
