在android项目中遇到 aar文件的使用,现总结aar相关的使用方法:
(一)aar与jar的区别
(1) jar 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
jar是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。
Jar的优点:安全性、减少下载时间、传输平台扩展、包密封、包版本控制、可移植性。
打jar包时,项目里的res文件无法使用,若想用图片文件,可以将图片文件放进assets文件里面打进jar包再进行调用,但必须注意jar里面assets文件夹里面的文件不能和调用项目里面assets文件夹里面的文件重名。
jar打包方法,不详细展开,参见:https://blog.youkuaiyun.com/u013895206/article/details/52692415
jar在AS中的使用:
在项目build.gradle中添加:
dependencies {
compile fileTree(include: ['*.jar'], dir:'libs')
}
(2)aar是Android库项目的二进制归档文件,包含所有资源,class以及res资源文件全部包含。将aar解压(后缀改为.zip,再解压文件)后,可以看到每个aar解压后的内容可能不完全一样,但是都会包含AndroidManifest.xml,classes.jar,res,R.txt。下图为我解压的一个aar文件内容:
(二 )aar的优势
对比发现,jar只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件;而aar包含所有资源 ,class 以及 res 资源文件。所以除了 Java 类与方法外,还可以捆绑布局和可绘制对象等共享资源。
(三 )module生成aar方法
在AS项目中,可能会用到第三方库,有时候配置相对比较麻烦且容易出错,比较简明的方式 可以选择打包成aar文件,然后调用该aar文件。第三方库生成aar文件方法:
(1)在项目主目录的build.gradle中添加:
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
(2)点击右上方的gradle,并展开,找到需要生成aar文件的 第三方库,然后找到下图所示位置,运行assembleRelease则会生成 -release.arr,运行assembleDebug则会生成 -debug.arr,运行 assemble会同时生成上述两种arr文件
(四)aar在AS中的使用
(1)将aar文件拷贝到libs目录
(2)在主项目的build.gradle 文件中添加:
repositories {
flatDir {
dirs'libs'
}
}
dependencies {
compile(name:'***', ext:'aar')
}
参考:
https://www.jianshu.com/p/0a2572a63ed5
https://www.jianshu.com/p/1777a634db5e
https://blog.youkuaiyun.com/qq_17441227/article/details/80361243
https://blog.youkuaiyun.com/u013895206/article/details/52692415