如何把项目打包成aar文件或jar文件

4,127

在Android开发中我们往往为了节省开发时间,会用直接引入其他工程中的module,避免重在新工程中开发,尤其一个团队多项目时候用到特别多,当然也有包括引入第三方jar包或者aar文件,有的时候会以jar包形式引入,有的时候以aar包形式引入,那种两种有啥区别呢,那我们简单的来讲讲这两个概念...

1.什么是aar包?

xxx.aar,AAR(Android Archive)是一个Android库项目的二进制归档文件,里面不仅包含工程代码也还包含工程资源文件,例如各种字体大小,字符串资源,图片等,当然每个工程所包含的资源文件不用,最后编译出来的aar文件里面包含的内容也不尽相同,例如有的工程有aidl业务处理,但是大部分都包括:AndroidManifest.xml,classes.jar,res,R.txt,你可以随便找一个aar文件将后缀名字改成.zip或者.rar压缩包形式,然后解压查看解压后的内容,


(网上直接引用一张图片)


2.aar文件和jar文件有什么区别?

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

反之 xxx.aar则包含所有资源,class以及res资源文件;

所以如果你有资源文件需要,那么你就以aar文件形式引入到工程中去,反之直接引入jar即可;

3.使用方式

如何使用别人提高好的jar包和aar文件呢?

xxx.jar文件:将其拷贝到:libs目录,并在AndroidStudio项目中build.gradle中添加:

dependencies {

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

}

重新编译一次项目既可完成加载,(可在工程的External Libraries目录下查看)。

xxx.aar:有两种方式,分别为本地加载以及网络加载,由于网络加载涉及到发布到mavenCentral托管的问题这里不做讨论;在这里给大家说一种本地加载的方式,简单快捷。

第一步:将aar文件拷贝到:libs目录

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


repositories {

   flatDir {

       dirs 'libs'

   }

}


dependencies {

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

}

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

同样编译成功后可以在工程的External Libraries目录下查看;

那么到此你算成功引入了别人提供的jar文件和aar包了;

那么就会引用不行啊,有时候需要我们自己打包文件,那么下面的步骤就是教你如何打成引用包...请看大屏幕,哦,不对,请看下文...

4.如何将项目打成aar文件?

1.一般我们的module的build.gradle文件中存在apply plugin和applicationId,是创建时默认生成的,需要对build.gradle(一定是要打的module对应的)进行修改,

  • 将apply plugin: 'com.android.application'改为apply plugin: 'com.android.library';
  • 去掉applicationId

如图:


此时再点击右侧的assembleRelease,看到module层的outputs文件夹下生成了.aar文件,

即:xxx.aar文件位置为:module(你对应的)/build/outputs/aar/xxx.aar

当然执行右侧的assebleDebug脚本则生成debug版的aar文件,执行asseble会生成release和debug两个版本的aar,名字也会有所体现,目录还是在 module(你对应的)/build/outputs/aar/下;

如图:


看到这里就已经差不多了,那么jar文件如何生成的呢? 

在module下的intermediates文件夹,也生成了一个bundles文件夹,.jar文件也可以用这里生成的,这个就是生成的jar包,现在是不是很明白了;

如图:


到这儿了其实已经将aar文件打包说完了,当然我们在创建module的时候可以直接以Libiary形式创建,具体操作就是在工程中右键--选择Module--选择Android Library,然后看看我们module的build.gradle文件,意外又惊喜发现这行代码 apply plugin: 'com.android.library',因为我们创建的时候指定了Module类型为Library形式,这也是为什么我们要把其他项目的Module的build.gradle文件Application改成Library, 此时改Module也没有ApplicationId,因为Libiary包没有应用Id;


 到此,我们基本对打aar文件有了整体了解;

最后,提前祝大家 新年快乐! 18年即将过去,这一年发生了很多,昨天即将被定格,让我们以新的姿态迎接19,希望所有的人都能在19年离梦想更进一步,工作和学习更加顺利快乐!

感谢!