Android Studio 生成 jar 及jar和aar的区别

时间:2021-07-27 09:16:39
在Android开发中,对于常用的功能性代码,除了封装成module使用外,常常还会生成jar,供不同的app来使用。

在Android Studio中,通常可以通过在build.gradle中写task来实现。


//dependsOn 可根据实际需要增加或更改
task buildJar(dependsOn: ['compileReleaseJavaWithJavac'], type: Jar) {

// appendix = "demo"
baseName = "xxx-sdk"
// classifier = "release"
version sdkVersion
//后缀名
extension = "jar"
//最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension]
// archiveName = "MDCCode.jar"

//需打包的资源所在的路径集
def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"];
//初始化资源路径集
from srcClassDir

//去除路径集下部分的资源
//exclude "com/topcode/mdccodesdk/MainActivity.class"
//exclude "com/topcode/mdccodesdk/MainActivity\$*.class"
//exclude "com/topcode/mdccodesdk/BuildConfig.class"
//exclude "com/topcode/mdccodesdk/BuildConfig\$*.class"
//exclude "**/R.class"
//exclude "**/R\$*.class"

//只导入资源路径集下的部分资源
//include "com/**/*.class"

//注: exclude include 支持可变长参数
}

然后在Gradle中选择相应的task执行,便会在build的libs路径下生存相应的jar。

由于jar只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件,所以资源文件较少的情况下使用jar较为方便,同时jar支持eclipse的快速引入,虽然Android Studio已成主流,但还是不乏eclipse开发者,少量的资源文件可以手动添加到项目的assets路径下进行引用。

相比于jar,aar主要应用于Android Studio,eclipse引入aar相较于jar简直不友好。aar包含所有资源,包括class以及res资源文件,所以如果项目类似UI库,最好使用aar的方式。