1. jar与aar
从维基百科摘一段:
JAR文件(Java归档,英语:Java ARchive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便分发Java平台应用软件或库
AAR(Android Archive)包是一个Android库项目的二进制归档文件,与jar文件相比,aar文件可以包含Android资源和一个清单文件,除了java的方法外,还可以捆绑布局和可绘制对象等共享资源
*.jar与*.aar的文件均是以ZIP文件格式以基础,我们可以将文件后缀名改为.zip并解压查看文件结构:
jar:
aar:
2. Module的导入
- 直接导入现有的Module: File ➡ New ➡ Import Module
- 新建Module: File ➡ New ➡ New Module, 选择Android Library,在Android视图下对新添加的Module添加你所需要加的Activity和资源文件等:
3. jar的打包
对于需要导入的jar包,将其添加到Project视图的libs文件夹下,并添加依赖:
File ➡ Project Structure ➡ 选择对应module的dependencies ➡ 点击+号 ➡ Jar dependency ➡ 选择对应*.jar文件,确认
随后在该Module的build.gradle文件中添加以下代码:
//task to delete the old jar
task deleteOldJar(type: Delete) {
delete 'release/Test.jar'
}
//task to export contents as jar
task exportJar(type: Copy) {
from('build/intermediates/bundles/default/')
into('release/')
include('classes.jar')
rename('classes.jar', 'Test.jar')
}
exportJar.dependsOn(deleteOldJar, build)
其中from的目录为原jar包的位置,选中该Module,build ➡ Make Module xxx后可以在build/intermediates/bundles/default/
,如果没有bundles目录,可以在buile/intermediates/packaged-classes
中找到jar包,设置目录为该位置即可
添加完后更新gradle,在右侧Gradle菜单中打开该Module ➡ other ➡ exportJar,双击执行,运行完后在release可以找到生成的jar包
需要注意的是这样生成的jar包只包含源代码的.class文件,并没有包含资源文件,若要包含资源文件的话,build.gradle中添加的代码修改如下:
//task to delete the old jar
task deleteOldJar(type: Delete) {
delete 'release/Test.jar'
}
//task to export contents as jar
task exportJar(type: Jar) {
from zipTree(file('build/intermediates/bundles/default/classes.jar'))
from fileTree(dir:'src/main',includes:['assets/**']) //包含assets目录中的资源文件
baseName = "Test.jar"
destinationDir = file('release')
}
exportJar.dependsOn(deleteOldJar, build)
4. aar的打包
使用Android Studio可以直接打包aar,相较于jar打包更方便,而且也能够包含资源文件,其实在上一步的Make Module后,在build/outputs/aar
目录下就可以找到aar包了