Android Studio 如何打包和引用 aar

来源:互联网 发布:淘宝可以货到付款不 编辑:程序博客网 时间:2024/05/21 22:59
文章将会讲解android studio中如恶化打包和引用aar的问题

这边文章来自个人网易博客,直接复制到SCDN。为什么图片都显示不出来呢(很纠结)。

欢迎大家我的网易博客。

http://bgwan.blog.163.com/blog/static/239301016201673035518338/
文章将会讲解android studio中如恶化打包和引用aar的问题

首先:

jar包与aar包的区别

  • jar是java字节码文件(class文件)的归档文件,其不包含android中的资源文件等信息;

  • aar是android中特有的归档文件,既包含字节码文件也包含android的资源文件等;

关于如何打包jar的请自行google。
1。构建项目
要输出aar的包,必须将项目配置成library 。
Android Studio 打包及引用 aar - Nakama - Bgwan
 
在gradle文件中进行输出AAR。如下
apply plugin: 'com.android.library'

如果需要输出apk文件则是下面这个样子:

apply plugin: 'com.android.application'

将 Module 配置为 library 后,构建输出一个 aar 文件,根据渠道和 BuildType 的不同,在相应的目录下可以找到。比如对 BuildType 为 debug 的配置,输出为:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar。一份 aar 文件其实就是一份 zip 包,和 jar 不同的是,它将一些资源文件、第三方库文件、so 文件等等都打包在内,而代码文件编译后压缩在在 classes.jar 中。

2。 运行输出AAR包。

aar在想对应的module这个文件下面,如图。

Android Studio 打包及引用 aar - Nakama - Bgwan

 

3。导入aar项目。

这种方式比较简单,打开一个project struture ,添加一个新 Module,然后选择 Import *.JAR or *.AAR Package 的方式导入:

Android Studio 打包及引用 aar - Nakama - Bgwan

 导入成功以后就可以在project目录中看到刚刚导入的项目了,里面有awaarssnst-debug.aar这个文件,和android studio ,以及gradle的配置文件。如图

Android Studio 打包及引用 aar - Nakama - Bgwan

然后,就可以在 gradle 中配置依赖了,其他 Module 可以引用这个 Module 了,依赖方式使用 compile project 的方式即可。

缺点:如果没有原项目,被依赖的 aar 无法 F3 跟进去,无法看到资源文件内容以及目录层级等等缺陷(其实我们可以反编译)。

4。使用配置依赖的方式引用。

这里官网查过,使用aar有两种方式。

1)app的gradle.buid配置文件中,如下代码(被注释掉的地方为个人aar应用的utils)

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile(name: 'AndroidUtils', ext: 'aar')
// compile project(":AndroidUtils")
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
compile 'com.android.support:cardview-v7:23.1.1'
}

首先需要将 aar 文件放入引用 Module 的 libs 目录下,和一般的 jar 文件类似。然后在 gradle 配置文件中把 libs 目录加入依赖:(再对比下面发生的变化)

repositories {
flatDir {
dirs 'libs' //this way we can find the .aar file in libs folder
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile(name: 'AndroidUtils', ext: 'aar')
// compile project(":AndroidUtils")
compile project(":awaarssnst-debug")
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
compile 'com.android.support:cardview-v7:23.1.1'
}

在 gradle 的依赖配置中加入 compile(name: 'xxx', ext: 'aar') 这一句,依赖即可关联完毕。

构建一下工程,在 Module 的 build/intermediates/exploded-aar 目录下,可以看到有一些临时文件生成,如图:

Android Studio 打包及引用 aar - Nakama - Bgwan

 

如果android studio安装了反编译工具则可以按F3进入代码,查看源代码文件,如果有这部分文件则可以编译修改代码进行有话。

细心的朋友已近看到我这里有两个aar,是的,其中一个AndroidUtils就是个人封装的Utils的工具类,带有资源,方便自己对代码进行集中管理,一些常用的东西都封装在了里面。比如里面含有一个搜集用户错误的Log日志系统,还有一些常用的字符串的校验,以及MD5加密算法的,如果想要研究的话,可以自己动手封装自己的AAR库。


5。总结很重要。

以上就实战的分析了android如何创建AAR,以及引用的AAR的两种方式,细心的读者可能发现了,我并没有明说,第二种引用的方式,其实再仔细点你就会发现我已经指出来compile project(":AndroidUtils") .

一个是compile project 一个compile ;一个控制权在你的手中,一个在别人手中。你觉得哪个好。

说明:项目中出现的awNightDay项目是一个 实现了关于 如何实现知乎和简书的夜间模式以及它的切换效果,其中内用用到了AAR引用的日志系统。

https://github.com/qydq/awNightDay


参考链接:

http://jingyan.baidu.com/article/ca2d939d0faed1eb6c31ced9.html

http://blog.csdn.net/qq_23547831/article/details/51966166




这里感谢 ,一帆枫叶作者,个人一直在拜读他的文章,写的很好,大家可以去看看,以上是他的链接。





0 0
原创粉丝点击