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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章