JAVA引用aar_AndroidStudio之如何引入和使用aar包
一. 简介
aar是一个类似于jar的文件格式。但是他们之间是有区别的。jar:仅仅包含class和清单文件,没有资源文件。aar:包含了class文件和资源文件。说白了就是Android的专属“jar”
将代码打包成aar文件,可以在一定程度上加快AndroidStudio的速度。尤其是将Module打包成aar文件,提升的效果很显著。
二. 如何得到aar
1. Module的aar文件
将一个AndroidStudio项目中的Module打包成aar其实很简单。在每一个Module的目录下面都会有这样一个文件夹:build\outputs\aar。这个文件夹下面就放着这个Module对应
的aar文件。一般情况下会有两个aar文件,一个debug版本,一个release版本。我们选择release的就ok。
AAR文件图示
注意:新建的Module是没有这个文件夹的。这时,你可以使用 两种方法 生成这个文件夹
将整个项目运行一遍,这个文件夹会自动生成
执行命令 ** ./gradlew assembleRelease** 也可以生成这个文件夹
Module中的libs目录文件会随着项目的编译被打包进aar文件中,但是build.gradle中的引用库不会打包进aar文件中,这个需要 特别留意。如果你忽略了这个Module的build.gradle中的引用库,很可能引发ClassNotFoundException异常。
2. 远程仓库的aar
在项目里面经常会引用一下远程仓库的依赖库。这时,我们也可以将它以aar的形式引入到项目中。这个依赖库的aar其实也很好找。当你配置好一个依赖库以后,点击 Sync Now 。AndroidStudio会自动下载这个库到C盘(windows)。你找到这个文件就可以了。这里我使用的是Everything进行搜索,很方便就找到这个库的下载文件夹。其他操作系统就自行搜索吧,总之找见这个项目的下载文件夹就ok。这个下载文件夹中包含了这个项目所需要的所有东西:包括aar、jar等文件。
后面会以一个例子详细讲解这个过程
注:Everything是一个搜索软件,可以瞬间搜索全盘。是一个非常实用的软件。但是很可惜只有windows版本。官网地址:https://www.voidtools.com/
三. 如何使用aar
想要使用aar文件,需要经过以下几步:
1. 在app的build.gradle中加入以下配置
repositories {
flatDir {
dirs ‘libs’ // aar目录
}
}
2. 将aar文件拷贝到app/libs目录下
3. 在dependencies中加入aar引用
compile(name: ‘zbar-release’, ext: ‘aar’)
四. LeakCanary项目示例
因为Module的例子比较简单,所以选择远程代码库作为示例。
这里使用一个经常使用的内存检测项目LeakCanary来做一个示例。
我们通常使用依赖来使用这个库:
debugCompile ‘com.squareup.leakcanary:leakcanary-android:1.3’
releaseCompile ‘com.squareup.leakcanary:leakcanary-android-no-op:1.3’
当Sync Now完成后,我们可以在C盘(windows)找见这个项目文件夹。
该项目文件夹截图如下:
LeakCanary项目示例图
这个文件夹下面就有我们需要的两个依赖库:leakcanary-android和leakcanary-android-no-op
点开leakcanary-android文件夹,目录结构如下(1.3是对应的版本号):
leakcanary-android文件夹
打开最里层的文件夹,你会发现文件的类型主要有三种:
jar文件:有的项目是以jar文件形式提供
aar文件:有的项目是以aar文件形式提供
pom文件: (Project Object Model),实际上就是个xml,是对一些必要信息的说明。这里我们只关心一个节点信息::声明依赖列表
我们用文本编辑器打开leakcanary-android文件夹下面的pom文件:
…
com.squareup.leakcanary
leakcanary-analyzer
1.3
compile
…
想更多了解pom文件,点击这里
当我们打开leakcanary-android的pom文件,
我们发现leakcanary-android依赖于leakcanary-analyzer的1.3版本。
同样的的我们打开leakcanary-analyzer 的pom文件,
发现leakcanary-analyzer依赖leakcanary-watcher和haha。
leakcanary-watcher和haha则没有依赖任何东西。
这样整个leakcanary-android导入本地的东西就是四个:
leakcanary-android
leakcanary-analyzer
leakcanary-watcher
haha
同样的方式去一层一层解析leakcanary-android-no-op,将所有需要的文件都导入到AndroidStudio中。这样整个LeakCanary就被我们真正实现本地化了。
两种结果对比如下:
debugCompile ‘com.squareup.leakcanary:leakcanary-android:1.3’
releaseCompile ‘com.squareup.leakcanary:leakcanary-android-no-op:1.3’
debugCompile(name: ‘leakcanary-android-1.3’, ext: ‘aar’)
compile files(‘libs/leakcanary-analyzer-1.3.jar’)
compile files(‘libs/leakcanary-watcher-1.3.jar’)
compile files(‘libs/haha-1.1.jar’)
releaseCompile(name: ‘leakcanary-android-no-op-1.3’, ext: ‘aar’)
这样就将整个LeakCanary项目完全转换成了本地的依赖。
———————
作者:Mr_Duoduo
来源:CSDN
原文:https://blog.csdn.net/maiduoudo/article/details/79217151?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
JAVA引用aar_AndroidStudio之如何引入和使用aar包相关推荐
- 4种Java引用浅解
最近研究Java Cache实现,发现使用到了软引用(SoftReference),不太理解,查阅了JDK文档.代码以及几篇文章.做个小结,如有错误,欢迎指正. 之所以想学习一下Java的几种引用类型 ...
- JAVA引用aar_如何生成并引用aar文件
那么如何生成自己的aar文件呢? 基于android studio,这并不困难. 首先你需要创建一个library模块,当然也可以简单的创建一个普通andriod工程,然后 修改build.gradl ...
- java回收类_Java的内存回收——Java引用的种类
1.Java引用的种类 Java是面向对象的编程语言,一个Java程序往往需要创建大量的Java类,然后对各Java类创建大量的Java对象,再调用这些Java对象的属性和方法来操作它们. 程序员需要 ...
- java弱引用怎么手动释放,十分钟理解Java中的弱引用,十分钟java引用
十分钟理解Java中的弱引用,十分钟java引用 本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,帮助大家理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限 ...
- java引用 弱引用_了解Java弱引用
java引用 弱引用 我最近没来得及关注这个博客,最重要的是,我没有为与技术界的所有人保持联系而致歉. 最近,我偶然发现了自Java 1.2起可用的java.lang.ref软件包,但具有讽刺意味的是 ...
- Java引用和C++引用
Java引用和C++引用区别: public class Tester{ public static void main(String[] args){Integer var1=new Integer ...
- 多线程与高并发 笔记,非面向初学者 二:java引用,高并发多线程容器,线程池
网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容 如果右边没有就找找左边 上一节:JUC锁,一些面试题和源码讲解 1.引用 java引用共4种,强软弱虚 强引用:我们普通的new一个对象,就 ...
- java引用和指针的区别
Java的引用和C++的指针的区别 Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作,就好像风筝的线轴一样,通过线轴总是能够找到风筝,但是它们在实现,原理作用等 ...
- 什么是java引用?
Java属于入门容易,天花板却极高的编程语言.什么是java引用?对于java工程师来说技术的不断发展,需要不断学习java进阶知识.为了帮助大家巩固基础,本文解答了什么是java引用?等相关问题,希 ...
最新文章
- ls -Slh du -h
- 自己手写一个Mybatis框架(简化)
- EF中的Code First
- 今天微软关闭Silverlight官网,Sivlerlight真得要死了吗?
- 树莓派蓝屏_树莓派刷写Windows 10 ARM版后成功运行桌面程序
- 后端技术:Spring Boot 项目打包 + Shell 脚本部署实践,太有用了!
- c matlab.h,用matlab和c写程序,include的mex.h在哪里?
- 我的联想笔记本电脑为啥字母键变成数字键怎么切换过来
- Nacos简介和安装
- 数据结构研究 ----单链表的按序号查找
- Sklearn——Sklearn的介绍与安装
- springboot 启动 退出_springboot怎么停止掉服务器 我启动了springboot,但是我修改了程序,我怎么重启啊...
- 解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置
- bind merge r 和join_R语言数据处理——数据合并与追加
- MTK驱动代码流程介绍:
- 数能一体化物联网感知层路由协议研究
- js页面跳转,参数传递
- 安卓分屏神器_平板机皇!华为MatePad Pro全面评测:这才是安卓生产力标杆
- 多媒体视频开发_(30)使用ffmpeg在视频中进行抽帧
- vue提示音_VueJS 实现管理后台新订单的语音提醒
热门文章
- 传感器阵列波束优化设计与应用_传感器阵列波束优化设计与应用.pdf——马远良...
- go语言调用c指针接口,GoLang之调用C接口的使用方法
- android u盘自动挂载点,Android2.3实现SD卡与U盘自动挂载的方法
- Spring Boot 2 快速教程:WebFlux 集成 Thymeleaf 、 Mongodb 实践(六)
- 玩转 SpringBoot 2 快速搭建 | IntellJ IDEA篇
- 基于JAVA+SpringMVC+MYSQL的鲜花销售平台
- 基于JAVA+Servlet+JSP+MYSQL的教师教学评价系统
- OAuth 2.0 授权码请求
- OTSU_图像二值化分割阈值的算法
- vsCode个人设置