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

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

猜你喜欢

转载自blog.csdn.net/sinat_33150417/article/details/72902865