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 也可以生成这个文件夹

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文件夹

打开最里层的文件夹,你会发现文件的类型主要有三种:

  1. jar文件 :有的项目是以jar文件形式提供
  2. aar文件 :有的项目是以aar文件形式提供
  3. pom文件 : (Project Object Model),实际上就是个xml,是对一些必要信息的说明。这里我们只关心一个节点信息: <dependencies>:声明依赖列表

我们用文本编辑器打开 leakcanary-android文件夹 下面的pom文件:

...
<dependencies>
 <dependency>
 <!--包组 id,通常是发布者拥有的域名的反向,以免跟别人的重复-->
 <groupId>com.squareup.leakcanary</groupId>
 <!--包 artifactId,其实就是组以下应该有一个更小的归类-->
 <artifactId>leakcanary-analyzer</artifactId>
 <!--版本号-->
 <version>1.3</version>
 <scope>compile</scope>
 </dependency>
</dependencies>
...

想更多了解pom文件, 点击这里

当我们打开 leakcanary-android 的pom文件,

我们发现 leakcanary-android 依赖于 leakcanary-analyzer 的1.3版本。

同样的的我们打开 leakcanary-analyzer 的pom文件,

发现 leakcanary-analyzer 依赖 leakcanary-watcher 和 haha 。

leakcanary-watcher 和 haha 则没有依赖任何东西。

这样整个leakcanary-android导入本地的东西就是四个:

  1. leakcanary-android
  2. leakcanary-analyzer
  3. leakcanary-watcher
  4. 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项目完全转换成了本地的依赖。

http://www.jianshu.com/p/59efa895589e

(0)

相关推荐

  • AndroidStudio利用android-support-multidex解决64k的各种异常

    64k的各种异常 当你的应用程序和库引用达到一定规模,你遇到构建错误显示你的应用已经达到了一个Android应用程序构建体系结构的限制.早期版本的构建系统报告这个错误如下: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 或者 UNEXPECTED TOP-LEVEL EXCEPTION:  java.lang.IllegalArgumentExcepti

  • 打造酷炫的AndroidStudio插件

    前面几篇文章学习了AndroidStudio插件的基础后,这篇文章打算开发一个酷炫一点的插件.因为会用到前面的基础,所以如果没有看前面系列文章的话,请先返回.当然,如果有基础的可以忽略之.先看看本文实现的最终效果如下(好吧,很多人说看的眼花): 虽然并没有什么实际用途,但是作为学习插件开发感觉挺有意思的. 1. 基本思路 基本思路可以归结如下几步: 1).通过Editor对象可以拿到封装代码编辑框的JComponent对象,即调用如下函数:JComponent component = edito

  • Android Studio 报错failed to create jvm error code -4的解决方法

    安装完 Android Studio 后启动,却报错如下: 复制代码 代码如下: failed to create jvm error code -4 这一般应是内存不够用所致,解决方法参考如下. 打开 Android Studio 安装目录下的bin目录,查找并打开文件 studio.exe.vmoptions,修改代码: 复制代码 代码如下: -Xmx512m 为 -Xmx256m 保存后应即可正常打开了.

  • Android IPC进程间通信详解最新AndroidStudio的AIDL操作)

    前言 前面梳理了Android的线程间的通信<Thread.Handler和HandlerThread关系何在?> ,这些都是在同一个进程中,那进程间的通信,或者说不同的应用间的通信该如何实现呢?这个时候就要用到AIDL(Android Interface Definition LanguageAndroid接口定义语言 ). 使用方法(AndroidStudio) 我发现现在AIDL的教程基本上还是eclipse的,但是在AndroidStudio里面使用AIDL还是有一些不同的,来看看怎么

  • Android Studio的中文乱码问题解决方法

    Android Studio安装后发现所有的中文,不管是界面上的还是输出的log中的中文都变成小框框  可以肯定是字体的问题 解决:菜单File->settings对话框,切换到Appearance标签  选择override default fonts by, 先随便选择一个中文字体(PS:小框框都是中文字 呵呵),保存,重启软件,即可.

  • 图解Windows环境下Android Studio安装和使用教程

    鉴于谷歌最新推出的Android Studio备受开发者的推崇,所以也跟着体验一下. 一.介绍Android Studio  Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试. 最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环

  • 使用AndroidStudio上传忽略文件至SVN Server的解决办法

    在同组项目进行共享时,容易把本地的配置文件比如*.iml等文件上传至共享服务器,这样会对队友造成巨大的麻烦,为了解决这个问题,可以使用下面方法解决,下面以上传到服务器的app.iml文件为例. 一.在AS的Setting中取消忽略文件后缀".iml": 二.在Windows目录中找到当前项目下的"app.iml"文件,右键该文件,选中TortoiseSVN,如下图2位置: 图2 在该项下选择Delete,删除该文件,如下图3所示: 图3 三.删除该文件后,在当前目录

  • 分享Android开发自学笔记之AndroidStudio常用功能

    相关下载: Android Studio v1.3 官方最新版(apk应用开发工具) http://www.jb51.net/softs/83206.html Android Studio 官方最新版下载地址(支持国内下载)http://www.jb51.net/softjc/83204.html 一.界面区介绍 1.项目组织结构区,用于浏览项目文件,默认Project以Android组织方式展示. 2.设计区,默认在打开布局文件时为设计模式,可直接拖动控件到界面上实现所见即所得,下方的Desi

  • AndroidStudio 实现加载字体资源的方法

    AndroidStudio 实现加载字体资源的方法 在android中字体的格式总是不能尽善尽美的显示出来 ,  于是要求我们使用一些有美感的字体,加载的方式(就像HTML的字体一样),我们需要通过加载字体的方式来使用android中不曾提供的字体; 首先在androidstudio中找到assets文件夹 , (位于serc/main/java下,与res在同一个文件里面) , 找到之后将字体文件(*.ttf)放入这个文件夹下(当然为了规范起见,我们可以再asseets下建立一个font文件夹

  • AndroidStudio 使用过程中出现的异常(Gradle sync failed)处理办法

    AndroidStudio使用过程中出现的异常 异常信息: Gradle sync failed: Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For example, an unrecognized jvm option is used. Please refer to the user guide chapter on th

随机推荐