android library 另一种gradle打包Jar的方式

本文介绍了使用Gradle在Android项目中打包Jar文件的方法。详细展示了两种不同的打包方式:一种是在构建过程中自动完成,另一种则需要先构建项目再执行特定任务。这两种方式都包括定义打包任务、设置class文件目录、编译依赖的Jar以及指定输出路径。

在library的module中

//android 变种配置, 在build的时候会回调
android.libraryVariants.all { variant ->
    def name = variant.buildType.name
    //debug 和release
    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
        return;
    }
    //创建一个打Jar包任务
    def task = project.tasks.create "makeJar1", Jar
    //指定需要打包的class文件位置
    task.from variant.javaCompile.destinationDir
    println(">>>>>>>>>> " + variant.javaCompile.destinationDir)// F:\Work\TeddyWork\transactionsdk\app\build\intermediates\classes\release

    //依赖的jar包
    task.from configurations.compile.findAll {
        it.getName() != 'android.jar' && !it.getName().startsWith('junit') && !it.getName().startsWith('hamcrest')
    }.collect {
        it.isDirectory() ? it : zipTree(it)
    }
    task.baseName "smssdk_${buildInfo.version}"//定义jar的名字
    task.manifest {//定义manifest信息
        attributes 'Created-By': "smssdk_${buildInfo.version}_${buildInfo.vcs_version}_${buildInfo.build_time}"
    }
    //Jar任务是一个Zip任务,如果想指定输出路径, 可以如此配置
    task.destinationDir rootProject.buildDir
}

 其实和下面的打包方式是一样的

task makeJar(type: Jar, dependsOn: "assembleRelease") {
    doFirst {
        delete fileTree(BUILD_LIBS_PATH) {
            include JAR_NAME_PREFIX + "**.jar"
        }
    }
    archiveName = 'kkcoresdk.jar'
    from('build/intermediates/classes/release')
    from(project.zipTree("libs/app_kookong_data.jar"))
    from(project.zipTree("libs/app_service.jar"))
    from(project.zipTree("libs/xutils.jar"))

    destinationDir = file('build/libs')
//    exclude('com/kookong/sdk/BuildConfig.class')
    exclude('com/kookong/sdk/BuildConfig\$*.class')
    exclude('**/R.class')
    exclude('**/R\$*.class')
}

都是: 

1.定义打包jar的task

2.设置打包class的目录

3.编译所依赖的jar

4.指定输出路径

区别

第一个 通过gradle build即可生成jar

第二个 需要先执行build再执行 

转载于:https://my.oschina.net/sfshine/blog/1919630

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值