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表示公开引用,一般用于基础模块和公共模块,一次引用之后,其他模块引用该模块,则无需再引用其他依赖。

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

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

相关文章

8年经验之谈 —— Redis的性能测试与优化!

Redis作为一种高性能的Key-Value数据库,一直受到众多开发者和企业的青睐。然而,在高并发、大数据存储的应用场景中,如何测试并优化Redis的性能,成为了问题。本文将从测试与优化两个方面来讲解如何达到最优的Redis性能。 一、性能…

深入浅出排序算法之计数排序

目录 1. 原理 2. 代码实现 3. 性能分析 1. 原理 首先看一个题目,有n个数,取值范围是 0~n,写出一个排序算法,要求时间复杂度和空间复杂度都是O(n)的。 为了达到这种效果,这一篇将会介绍一种不基于比较的排序方法。这…

K-means(K-均值)算法

K-means(k-均值,也记为kmeans)是聚类算法中的一种,由于其原理简单,可解释强,实现方便,收敛速度快,在数据挖掘、聚类分析、数据聚类、模式识别、金融风控、数据科学、智能营销和数据运…

我和云栖有个约会

云栖大会:聚焦创新,驱动未来 2009年,一场地方网站峰会在中国掀起了技术的浪潮。随着时间的推移,这场峰会逐渐演变成了全球领先的科技盛会——云栖大会。回首历史,云栖大会不仅是中国云计算产业发展的见证者&#xff0c…

高效分割分段视频:提升您的视频剪辑能力

在数字媒体时代,视频剪辑已经成为一项重要的技能。无论是制作个人影片、广告还是其他类型的视频内容,掌握高效的视频剪辑技巧都是必不可少的。本文将介绍如何引用云炫AI智剪高效地分割和分段视频,以提升您的视频剪辑能力。以下是详细的操作步…

2023-11-01 LeetCode每日一题(参加会议的最多员工数)

2023-11-01每日一题 一、题目编号 2127. 参加会议的最多员工数二、题目链接 点击跳转到题目位置 三、题目描述 一个公司准备组织一场会议,邀请名单上有 n 位员工。公司准备了一张 圆形 的桌子,可以坐下 任意数目 的员工。 员工编号为 0 到 n - 1 。…

appium操控微信小程序的坑

appium操控微信小程序的坑 打不开启动页面driver的context只有NATIVE_APP小程序上元素找不到 我打算使用appium操控微信小程序,只要能够获取到小程序的页面元素就算成功。下面都是我遇到的问题。 打不开启动页面 以下是我的appium的配置参数和代码: de…

基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

效果: 功能点: 1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 目的: 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖…

Kubernetes - Ingress HTTP 升级 HTTPS 配置解决方案(新版本v1.21+)

之前我们讲解过 Kubernetes - Ingress HTTP 搭建解决方案,并分别提供了旧版本和新版本。如果连 HTTP 都没搞明白的可以先去过一下这两篇 Kubernetes - Ingress HTTP 负载搭建部署解决方案_放羊的牧码的博客-CSDN博客Kubernetes - Ingress HTTP 负载搭建部署解决方案…

SpringMVC Day 07 : 表单验证

前言 表单验证在Web开发中是非常常见和重要的一部分,它用于确保用户提交的数据符合预期的规则和限制。 通过表单验证,我们可以有效地捕获并处理用户输入中的错误或不正确的数据,从而提高应用程序的数据质量和用户体验。在本教程中&#xff…

Thread

Thread 线程启动线程第一种创建线程线程的第二种创建方式使用匿名内部类完成线程的两种创建 Thread API线程的优先级线程提供的静态方法守护线程用户线程和守护线程的区别体现在进程结束时 多线并发安全问题同步块 线程 启动线程 启动线程:调用线程的start方法,而不是直接调用…

lua-resty-request库写入爬虫ip实现数据抓取

根据提供的引用内容,正确的库名称应该是lua-resty-http,而不是lua-resty-request。使用lua-resty-http库可以方便地进行爬虫,需要先安装OpenResty和lua-resty-http库,并将其引入到Lua脚本中。然后,可以使用lua-resty-h…

【网络协议】聊聊http协议

当我们输入www.baidu.com的时候,其实是先将baidu.com的域名进行DNS解析,转换成对应的ip地址,然后开始进行基于TCP构建三次握手的连接,目前使用的是1.1 默认是开启了keep-Alive。可以在多次请求中进行连接复用。 HTTP 请求的构建…

【k8s】pod详解

一、Pod介绍 1、Pod的基础概念 Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象,一个pod代表着集群中运行的一个进程。kubernetes中其它大多数组件都是围绕着pod来进行支持和扩展pod功能的。 例如,用于管理po…

计算机基础知识41

前端 # 前端是所有跟用户直接打交道 比如:PC页面、手机页面、汽车显示屏,肉眼可以看见的 # 后端:一堆代码,用户不能够直接看到,不直接与用户打交道 常见的后端:Python、Java、Go等 # 学了前端就可以做全栈…

算法题:二叉树的层序遍历

层序遍历,看似简单,实则陷阱很多,怪不得该题目被认定为中等难度题。此处运用了迭代求解法。(完整题目附在了最后) # Definition for a binary tree node. class TreeNode:def __init__(self, val0, leftNone, rightNon…

Vectrosity 插件使用

1 下载 https://download.csdn.net/download/moonlightpeng/88490704?spm1001.2014.3001.5503 2 使用,目前在2020.3.3上测试可以 导入时选5.6 再导入demo

FlinkCDC系列:通过skipped.operations参数选择性处理新增、更新、删除数据

在flinkCDC源数据配置,通过debezium.skipped.operations参数控制,配置需要过滤的 oplog 操作。操作包括 c 表示插入,u 表示更新,d 表示删除。默认情况下,不跳过任何操作,以逗号分隔。配置多个操作&#xff…

四、[mysql]索引优化-1

目录 前言一、场景举例1.联合索引第一个字段用范围查询不走索引(分情况)2.强制走指定索引3.覆盖索引优化4.in和or在表数据量比较大的情况会走索引,在表记录不多的情况下会选择全表扫描5.like 后% 一般情况都会走索引(索引下推) 二、Mysql如何选择合适的索…

(三)上市企业实施IPD成功案例分享之——五菱

2022年对汽车产业而言是极为不平凡的一年。这一年,企业受到疫情反复、芯片短缺、原材料价格上涨等负面因素影响,汽车产业的变革持续加速。面对变革与挑战,五菱汽车仍逆势交出一份超出市场预期的成绩单。上半年,五菱发布2022年财报…