(转)【Android】AAR文件的生成与使用

news/2024/4/24 5:01:09/

文章目录
前言
一、AAR是什么?
二、使用步骤
1.生成AAR
2.AAR使用
总结
前言
现在App开发模块化技术已是常态,有很多的功能模块都被抽出来供给开发者使用。为了开发者使用,这些模块都会被打包,就和java中的库一样。在java中,一个模块可以被打包为Jar包,而在Android中,不仅仅有java文件,还有一些其他的资源文件,所以就出现了AAR文件(一种打包格式),本文通过一个demo来介绍如何打包一个Library文件,生成AAR。

一、AAR是什么?
aar一种压缩格式(打包的Library),相当于Android里面的Jar包,不过里面可以包含Android相关的一些资源,比如说:layout, drawable等res资源。

二、使用步骤
包括生成和使用两大部分,话不多说,让我们开始吧。

1.生成AAR
首先我们创建一个Android Project,然后在里面new一个Library,这里我们就使用它默认的名字吧。


然后就会生成这样的一个Library,我们今天的目标就是在这个Library实现一些功能,然后打包成AAR文件,可以提供给其他工程调用。

在这个Library中,我们就写一个叫DoSomething的类,然后里面有一个printSomething的方法,这里我使用的语言是Kotlin。

package com.example.mylibrary

class DoSomething {
    public fun printSomething(){
        println("你好,你想要输出一些东西!")
    }
}
做完这一切准备工作,就要开始打包了!我是直接在当前Library目录下的build.gradle文件中,添加的如下代码。当然了,也可以自己重新创建一个***.gradle文件,然后在build.gradle里面去调用(apply {‘***.gradle’}),添加如下代码:

apply plugin: 'maven-publish'
afterEvaluate {
    publishing {
        publications {
            debug(MavenPublication) {
                // Applies the component for the debug build variant.
                from components.debug
                groupId = 'com.gloomy'
                artifactId = 'myLibrary'
                version = '1.0.0'
            }
        }
        publishing {
            repositories {
                maven {
                    // change to point to your repo, e.g. http://my.org/repo
                    url = "file:///Users\\******\\Desktop\\AndroidStudy\\AAR"
                }
            }
        }
    }
}
在以上代码中,使用了maven-publish插件,之前我看网上也有很多使用maven插件的,但是现在新版本的AS里已经使用不了了,大家要注意!maven-publish的更多使用,可以去官网了解一下(https://developer.android.com/studio/build/maven-publish-plugin?hl=zh-cn#kts)。其中debug表示是一个发布渠道,你可以取任何名字,而在这个闭包中的groupId,artifactId,version分别表示公司的域名,项目名称以及项目版本号。分别对应生成的aar名称中的这些。

然后再往下,repositories闭包里面写的是我们想要输出AAR文件的位置,这里我们先生成到本地。Synchronize以下,点开右侧的Gradle文件夹,双击publish就开始生成我们的AAR文件了。


如果没有Tasks文件,需要到Preference里面去,把Gradle设置一下,去掉这个勾勾就好了。

最后在我们指定的路径里可以看到我们已经打包好的AAR文件了,如果我们需要打包到远程代码仓库上,可以将本地的生成好的AAR使用git,push上去,或者在设置文件输出位置的时候,直接设置为远程代码仓库的位置。

2.AAR使用
接下来,介绍一下如何在其他工程中使用AAR文件,使用AAR有好几种方式,这里介绍一种灵活性比较高的方式。首先在根目录下的build.gradle里面添加如下代码,其中那个url就是我们存放AAR文件的位置,不管是本地的还是远程代码仓库的都可以。

buildscript {
    repositories {
        google()
        mavenCentral()
        maven {url "file:///Users\\*****\\Desktop\\AndroidStudy\\AAR"}
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven {url "file://Users\\*****\\Desktop\\AndroidStudy\\AAR"}
    }
}
如果这个时候Synchronize失败了,要注意去settings.gradle文件里面看一下,要保证两边的代码仓库设置一致,另外,需要把repositoriesMode设置为RepositoriesMode.PREFER_SETTINGS(好像只有新版本的AS里面有这些问题,老版本没有)。
这时候就可以去我们app模块的build.gradle里面去声明依赖了, 这里可以看到我们的依赖名称就是由之前设置的groupId,artifactId,version组成的,如果我们在之前的库上进行了修改,只需要将其打包的版本号进行修改,然后在这里也随之修改就可以了,非常的方便!

implementation 'com.gloomy:myLibrary:1.0.0'
1
声明好依赖后,我们就可以来玩一把了,看看之前打包好的库到底能不能用,来到MainActivity里添加如下代码,然后运行。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val d = DoSomething()
        d.printSomething()
    }
}
最后在Logcat里面可以看到,我们的函数调用成功了!


总结
以上就是打包一个AAR文件的过程以及使用的过程,在此记录一下,欢迎大家一起交流学习。
————————————————
版权声明:本文为CSDN博主「Mizt_pp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42788340/article/details/125190519


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

相关文章

C# net6使用ImageSharp绘图并展示

目录 winform实现1.新建窗体程序,使用net 6框架2.使用Nuget安装相关程序包,SixLabors.ImageSharp和SixLabors.ImageSharp.Drawing(这个使用的是预发行版)3.在项目根目录中放置字体文件(*.ttf,设置文件属性—复制到输出目录—始终复制&#xf…

外包实在是太坑了,干了三年,感觉人都废了

先说一下自己的情况,专科生,19年通过校招进入杭州某个外包软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了3年的功…

智能排班系统 【管理系统功能、操作说明——上篇】

文章目录 功能设计共有功能系统管理员企业管理员门店管理员门店员工 页面与功能展示用户登录企业注册系统首页系统管理员首页企业管理员首页门店管理员首页 个人中心菜单管理日志管理登录日志 功能设计 不同的角色关注的任务和功能不同,针对不同的角色,…

sentinel原理分析及源码剖析

sentinel功能 sentinel功能可参考官网 可以从sentinel的dashboard中了解到sentinel的核心功能包括 流控规则 阈值类型:QPS、并发线程数流控模式:直接,关联,链路流控效果:快速失败(滑动时间窗算法Default…

SQL注入 - Part 2

SQL注入 - Part 2 1.sql注入自动化工具--sqlmap配置环境变量/快捷方式一些sqlmap的常用语句前置SQL知识batch批量注入 2.sql注入靶场——sqlilabs3.布尔盲注4.基于时间的盲注5.基于报错的注入总结 1.sql注入自动化工具–sqlmap 配置环境变量/快捷方式 最终效果: …

AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路

本教程收集于:AIGC从入门到精通教程 AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路 本篇没有什么长篇大论,全部都是实用心得总结。接下来,我们将分享关于Midjourney绘画AI的实用心得总结,包括构图指令结构、常用指令、操作技巧、常用风格词汇和构图词汇。 如果…

线程池总结

1.JDK Executors线程池 2.JDK提供哪些默认的实现 newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor 3.为什么不允许使用默认实现 会OOM 4.介绍一下自定义线程池的几个常用参数,几个参数的值怎么定 5.线程池里的任务是IO密集型还是计算密集型 6…

Docker实战1-运行前端Vue项目

本次运行了两个项目,一个是开源的镜像,一个是自己的前端项目镜像 1 在docker中运行 keycloak docker run -p 8080:8080 -e KEYCLOAK_ADMINadmin -e KEYCLOAK_ADMIN_PASSWORDadmin quay.io/keycloak/keycloak:21.1.1 start-dev 这个最简单了&#xff0c…

audio标签事件

audio在音乐播放上用的频率极高,后来自己就查阅资料和度娘来总结了一下audio的JS事件: play:音频或视频文件已经就绪可以开始播放时触发 playing:音频或视频已开始播放时触发 ended:音频或视频文件播放完毕后触发 pause:音频或视频文件暂停时触发 ratech…

ospf的rip和ospf互通以及配置stub区域和totally stub

1. ospf与rip如何互通 我们需要在两台路由器上互相引入,如上图 AR5和AR6运行了rip,但AR5也运行了ospf要想路由器能够互相学习到路由,就需要在AR5上配置路由协议引入 什么是stub区域如何配置stub区域 Stub区域的功能:过滤4类LSA和5类LSA,对外产生缺省的…

java运算符

文章目录 一、Java 运算符1、算术运算符2、关系运算符3、位运算符4、逻辑运算符5、赋值运算符6、条件运算符(?:)7、Java运算符优先级 总结 一、Java 运算符 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符1、算术运算符 算术运算符…

爱创科技携UDI解决方案亮相CMEF盛会!

2023年5月14日-17日,第87届中国国际医疗器械博览会(简称“CMEF”)在上海圆满举行。来自全世界20余个国家和地区品牌代表,近5000家企业参展,千余位业界大咖、意见领袖共聚盛会。 CMEF被业界看作全球医疗器械产业风向标&…

书评 | 《新程序员005:开源深度指南 新金融背后的科技力量》

目录 书评 | 《新程序员005:开源深度指南 & 新金融背后的科技力量》 内容介绍 书籍优点 书评 书评 | 《新程序员005:开源深度指南 & 新金融背后的科技力量》 内容介绍 《新程序员005:开源深度指南&新金融背后的科技力量》特…

Spring Boot 多环境配置

Spring Boot 多环境配置 在实际开发中,应用程序通常需要在不同的环境中运行,例如开发环境、测试环境和生产环境。每个环境可能需要不同的配置,包括数据库连接、日志级别、接口地址等等。Spring Boot 提供了多种方法来处理多环境配置&#xf…

支持导入 Eolink 插件,别小看这个开源 API 管理工具了

Postcat 有多达 30 款支持数据迁移、主题、API 安全等方面的插件。 导入 Eolink 插件。 使用 导入功能有多个入口,你可以在 API 分组处点击加号导入 API: 也可以换种方式,在首页里导入Eolink 如果你日常会用到 api 管理工具的话&#xff0c…

如何使用C++ 在Word文档中创建列表

列表分类是指在Word文档中使用不同格式排序的列表,来帮助我们一目了然地表达出一段文字的主要内容。比如,当我们描述了某个主题的若干点,就可以用列表把它们一一表达出来,而不是写成完整的段落形式。同时,列表也可以帮…

火车票和机票已支持数电票,泛微齐业成提供数电票全流程管理方案

数电票已经成为趋势 01扩大全面数字化的电子发票试点范围 2023年以来,河南、深圳等多省市税务局发布《关于开展全面数字化的电子发票试点工作的公告》,进一步扩大了全面数字化的电子发票试点范围,在政府公告、文件描述中,“数电…

Android热缓解策略

1、基础理论 Android 热缓解框架解析 2、调试方法 2.1 查看温升状态 adb shell dumpsys thermalservice IsStatusOverride: false ThermalEventListeners: callbacks: 2 killed: false broadcasts count: -1 ThermalStatusListeners: call…

论推动问题,情绪管理,归纳总结,会议主持

第一个问题,推动问题 第一个场景:单点推动 在推动问题的过程中,你首先要想的是, 1:是对方部门的职责么? 如果是,将问题推给对方即可。 如果对方没有时间,有其他可替代人选么&#xf…

深入解析 TypeScript 中的 .d.ts 语法

深入解析 TypeScript 中的 .d.ts 语法:完全掌握类型声明文件的编写 1. 引言 在现代的软件开发中,静态类型检查和类型推断已成为提高代码可靠性和开发效率的关键要素。TypeScript 是一种静态类型的超集,它为 JavaScript 添加了类型系统&#…