前言
聚合类型的手游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)
注释:
-
以上代码块与
android{}
平级。 -
task 标示新建一个任务。
-
type 标示该项任务的类型,可能有的类型有:
Jar\Delete\Copy等,其他的可网上查找一下,
-
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。