Android中aar与jar的区别

前置:由于端内直连Jira提bug需要一个SDK,所以探索了下aar与jar的区别。

           Android中常见的第三方库包括:*.so、*.jar、*.aar,一般来说.so是C或C++语言的内容打包成的库,由于本项目是java语言,所以此处不探究so。

一、jar

       1、说明

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

             JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。

 Jar的优点:安全性、减少下载时间、传输平台扩展、包密封、包版本控制、可移植性。

            打jar包时,项目里的res文件是用不了的,若想用图片文件,可以将图片文件放进assets文件里面打进jar包再进行调用,但必须注意jar里面assets文件夹里面的文件不能和调用项目里面assets文件夹里面的文件重名。

      2、打jar包方法:

            网上方法很多也很详细,不再赘述,给个链接:http://blog.csdn.net/u013895206/article/details/52692415

 3、使用jar方式: 

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

                 dependencies { 

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

                 } 

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

二、aar

       1、说明

             Android库项目的二进制归档文件,包含所有资源,class以及res资源文件全部包含。

             将aar解压(后缀改为.zip,再解压文件)打开后,可以看到每个aar解压后的内容可能不完全一样,但是都会包含AndroidManifest.xml,classes.jar,res,R.txt。

       2、打aar包方法:

             先把想要打包成sdk的项目做成Android libraries B,不要建成Android project ;

             然后建立一个新的Android project A 去调用写好的libraries B;

              运行后,studio就自动把我们的librarys B自动打包成aar包了,这就是我们想要的sdk了(路径:module 下,build/outputs/aar/)

              如果运行后,没在目录下看到 aar,可以按照下图方式执行,执行成功后,就可以在左侧的:build/outputs/aar/ 下看到对应的 aar 文件了:

Android中aar与jar的区别_第1张图片

        3、Android Studio使用aar方式:

              第一步:拷贝到:libs目录 

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

                     repositories { 

                         flatDir { 

                             dirs'libs' 

                         } 

                     } 

                     dependencies { 

                         compile(name:'genius', ext:'aar')

                     }

三、总结

      1、如何选择?

            如果你只是一个简单的类库那么使用生成的*.jar文件即可;如果你的是一个UI库,包含一些自己写的控件布局文件以及字体等资源文件那么就只能使用*.aar文件。

2、因为端内直连Jira提bug,包含UI内容,且只是供Android使用的,同时Android Studio已经被广泛使用(Eclipse使用aar较麻烦,教程:https://www.cnblogs.com/shortboy/p/4424944.html),所以我最终选择了使用.aar作为咱们最后的SDK。

你可能感兴趣的:(Android中aar与jar的区别)