在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的方式。