Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件

分别存储位置:

*.jar:库/build/intermediates/bundles/debug(release)/classes.jar

*.aar:库/build/outputs/aar/libraryname.aar

 

jar 和 aar 联系

arr能带资源文件,jar不能带资源

二者都是lib库文件,能被其他工程所引用

 

jar 和 aar 区别

*.jar:只包含了class文件与清单文件,不包含资源文件,如图片,字体等所有res中的文件。

*.aar:包含所有资源,class以及res的全部资源文件

如果你只是一个简单的类库,那么使用生成的*.jar文件即可;

如果你的是一个UI库,包含一些自己写的控件布局文件,图片,字体等资源文件,那么就只能使用*.aar文件。

 

jar 使用方式

*.jar:拷贝到:libs目录,eclipse直接导入即可,Android Studio项目中添加:

dependencies {  
    compile fileTree(include: ['*.jar'], dir: 'libs')  
}  

重新编译一次项目既可完成加载。

 

aar 使用方式

*.aar:有两种方式,分别为本地加载以及网络加载,由于网络加载涉及到发布到maven Central托管的问题这里不做讨论;另外eclipse很久没有使用了也不做讨论;在这里给大家说一种本地加载的方式,简单快捷。

这里演示的aar文件为:”genius.aar“

第一步:拷贝到 libs目录

第二步:build.gradle 配置文件中更改为

repositories {  
    flatDir {  
        dirs 'libs'  
    }  
}  

dependencies {  
    compile(name:'genius', ext:'aar')  
}  

分别添加了”repositories“与更改了”dependencies“,然后重新编译一次项目就可以正常使用了。

这时打开你的项目地址”\build\intermediates\exploded-aar\“你会发现下面多了一个文件夹”genius“打开后能看见里边包含了一个”classes.jar“文件与一些资源文件和”R.txt“文件。

difference-between-android-aar-and-jar-01

这就是Android Studio自动解析了aar文件后出现的东西。

 

Android Studio引入aar包接入方式

1..File —> New —> New Module —> Import .JAR/.AAR Package 

2.Open Module Settings—>Dependencies  添加依赖

完成aar包的引入

 

Android Eclipse 开发如何 使用 (*.aar)文件

1. (*.aar)几乎是Android Studio的东西,所以你要用eclipse来使用基于“IntelliJ IDEA”的Android Studio,必须要了解这个玩意里面是什么!

2. 说退一万步,既然Android Studio使用的(*.aar),你就好好的去学使用Android Studio,为何要使用eclipse 来弄这(*.aar)呢?

3. 什么?因为github的开源项目用 “Gradle ” 构建项目来依赖这些包 (*.aar)。 

4. Android Studio本来就用Gradle ,所以直接github的URL一导入,花上一两分钟就能跑起项目了。

哎,没有办法了。看来eclipse以后都不知道怎么怎么办。(如果新开的Android项目的话,要大力建议使用Android Studio,毕竟别人github上的大牛都用Gradle 了,更别说Android Studio)

 

看完上面的吐槽,还想自找麻烦使用Eclipse 使用 (*.aar)包的话,就继续看下面吧。

前提:假设 (*.aar)的包是从“%ANDROID_HOME%\extras\android\m2repository” 中的 v4 或者 v7中获取到的。

什么? 你的SDK没有 更新到“ m2repository ”文件夹 或者 “被大天朝拦住网络无法更新”。

好吧!你赢了,你去看 android SDK下载失败和更新方法 这篇吧。

更新完你的SDK再回来看吧。

其实我还没有用Android Studio时,在eclipse开发时,都是没有更新到“m2repository ”文件夹

更新完后如图:

difference-between-android-aar-and-jar-02

 

言归正传

1. 我们以appcompat-v7来举例吧,又什么你不知道appcompat-v7有什么?

请看这篇吧: Android UI开发第三十五篇——AppCompat实现Action Bar

2. 我们看到下面的图片的文件,就看到客官们的的(*.arr)文件了

difference-between-android-aar-and-jar-03

3. 我们直接双击看里面是什么?

如图,里面有一个jar,和其他类似在Eclipse的工作目录,例如res,assets,AndroidManifest.xml这些文件

difference-between-android-aar-and-jar-04

4. 如果这样的话,我们是否可以考虑当这个(*.arr) 里面的res, assets, AndroidManifest.xml是一个在eclipse中的Android 的 libs项目的文件,复制过去后再把这个项目声明为libs

5. 然后在你想要使用的项目中导入你的class.jar(当然,你需要改变成相应的名字,如果你不改我也耐不了你如何)

6. 现在你再引入刚才的libs项目,再启动一下你的项目。(如果你没有引入刚才的libs项目,估计只加入jar的话,肯定会报找不到某资源的异常)。

 

经过这六步,你还感觉用eclipse来导(*.arr)使用不麻烦的话。我只能说。你赢了。