Gradle自定义打jar包脚本

前言

聚合类型的手游SDK打包涉及多渠道打包,有需求是将渠道的java代码,根据不同的需求(规则)生成不同的jar包,而不是全部都放进一个jar包中。所以需要自己写脚本自定义打jar包。

前提

保证module 是 library的模式

通过合并文件的方式

def zipFile = file(''build/intermediates/packaged-classes/debug/classes.jar'') // 待打包文件位置
task deleteBuild(type:Delete){
	delete 'build/test.jar'  // 删除之前生成的jar包
}

task makeJar(type:Jar){
	from zipTree(zipFile)
	from fileTree(dir:'src/main',includes:['assets/**']) //包含assets文件
	baseName = 'test.jar'
	destinationDir = file('build/')
}

makeJar.dependsOn(deleteBuild,build)
注释:
  1. 以上代码块与 android{}平级。

  2. task 标示新建一个任务。

  3. type 标示该项任务的类型,可能有的类型有:

    Jar\Delete\Copy等,其他的可网上查找一下,
    
  4. dependsOn 设置task 依赖,以上代码表示执行makeJar时,会先执行deleteBuild,再执行build,最后执行makeJar.

直接生成jar包

task makeJar(type: Jar) {
    archiveName = 'test.jar'  //jar包名称
    from('build/intermediates/classes/debug/**/') //需要打jar的目录
    from('XXX') // 需包含的其他目录
    destinationDir = file('build/lib')  //将生成的jar存放的位置
}

复制已有的jar包

task makeJar(type:Copy){
    delete 'build/sgsdk_jinshan_4.0.7.jar'
    from('build/intermediates/packaged-classes/debug/')
    into('build/')
    include('classes.jar')
    //去掉不需要打包的目录和文件
//    exclude('kingsoft_pass/', 'BuildConfig.class', 'R.class')
//    exclude('sample/', 'BuildConfig.class', 'R.class')
    rename('classes.jar','sgsdk_jinshan_4.0.7.jar')
}
注释:

如果需要自定义编译class文件,可以使用gradle的已有命令脚本compileJava。

你可能感兴趣的:(Android)