一. 简介

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包相关推荐

  1. 4种Java引用浅解

    最近研究Java Cache实现,发现使用到了软引用(SoftReference),不太理解,查阅了JDK文档.代码以及几篇文章.做个小结,如有错误,欢迎指正. 之所以想学习一下Java的几种引用类型 ...

  2. JAVA引用aar_如何生成并引用aar文件

    那么如何生成自己的aar文件呢? 基于android studio,这并不困难. 首先你需要创建一个library模块,当然也可以简单的创建一个普通andriod工程,然后 修改build.gradl ...

  3. java回收类_Java的内存回收——Java引用的种类

    1.Java引用的种类 Java是面向对象的编程语言,一个Java程序往往需要创建大量的Java类,然后对各Java类创建大量的Java对象,再调用这些Java对象的属性和方法来操作它们. 程序员需要 ...

  4. java弱引用怎么手动释放,十分钟理解Java中的弱引用,十分钟java引用

    十分钟理解Java中的弱引用,十分钟java引用 本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,帮助大家理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限 ...

  5. java引用 弱引用_了解Java弱引用

    java引用 弱引用 我最近没来得及关注这个博客,最重要的是,我没有为与技术界的所有人保持联系而致歉. 最近,我偶然发现了自Java 1.2起可用的java.lang.ref软件包,但具有讽刺意味的是 ...

  6. Java引用和C++引用

    Java引用和C++引用区别: public class Tester{ public static void main(String[] args){Integer var1=new Integer ...

  7. 多线程与高并发 笔记,非面向初学者 二:java引用,高并发多线程容器,线程池

    网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容 如果右边没有就找找左边 上一节:JUC锁,一些面试题和源码讲解 1.引用 java引用共4种,强软弱虚 强引用:我们普通的new一个对象,就 ...

  8. java引用和指针的区别

    Java的引用和C++的指针的区别 Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作,就好像风筝的线轴一样,通过线轴总是能够找到风筝,但是它们在实现,原理作用等 ...

  9. 什么是java引用?

    Java属于入门容易,天花板却极高的编程语言.什么是java引用?对于java工程师来说技术的不断发展,需要不断学习java进阶知识.为了帮助大家巩固基础,本文解答了什么是java引用?等相关问题,希 ...

最新文章

  1. ls -Slh du -h
  2. 自己手写一个Mybatis框架(简化)
  3. EF中的Code First
  4. 今天微软关闭Silverlight官网,Sivlerlight真得要死了吗?
  5. 树莓派蓝屏_树莓派刷写Windows 10 ARM版后成功运行桌面程序
  6. 后端技术:Spring Boot 项目打包 + Shell 脚本部署实践,太有用了!
  7. c matlab.h,用matlab和c写程序,include的mex.h在哪里?
  8. 我的联想笔记本电脑为啥字母键变成数字键怎么切换过来
  9. Nacos简介和安装
  10. 数据结构研究 ----单链表的按序号查找
  11. Sklearn——Sklearn的介绍与安装
  12. springboot 启动 退出_springboot怎么停止掉服务器 我启动了springboot,但是我修改了程序,我怎么重启啊...
  13. 解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置
  14. bind merge r 和join_R语言数据处理——数据合并与追加
  15. MTK驱动代码流程介绍:
  16. 数能一体化物联网感知层路由协议研究
  17. js页面跳转,参数传递
  18. 安卓分屏神器_平板机皇!华为MatePad Pro全面评测:这才是安卓生产力标杆
  19. 多媒体视频开发_(30)使用ffmpeg在视频中进行抽帧
  20. vue提示音_VueJS 实现管理后台新订单的语音提醒

热门文章

  1. 传感器阵列波束优化设计与应用_传感器阵列波束优化设计与应用.pdf——马远良...
  2. go语言调用c指针接口,GoLang之调用C接口的使用方法
  3. android u盘自动挂载点,Android2.3实现SD卡与U盘自动挂载的方法
  4. Spring Boot 2 快速教程:WebFlux 集成 Thymeleaf 、 Mongodb 实践(六)
  5. 玩转 SpringBoot 2 快速搭建 | IntellJ IDEA篇
  6. 基于JAVA+SpringMVC+MYSQL的鲜花销售平台
  7. 基于JAVA+Servlet+JSP+MYSQL的教师教学评价系统
  8. OAuth 2.0 授权码请求
  9. OTSU_图像二值化分割阈值的算法
  10. vsCode个人设置