美文网首页
gradle打包指定包和类的jar

gradle打包指定包和类的jar

作者: 爸比好酷 | 来源:发表于2018-01-11 10:07 被阅读117次

    在开发sdk生成jar在eclipse里相对比较容易操作,只要导出class时指定哪里导出就可以,
    但在用AndroidStudio开发时要导出jar就没那么容易,需要写gradle脚本,但gradle脚本
    的入门成本还是比较高,网上也有打包jar的脚本参考,但大多是通过生成classes.jar重命名
    来生成,这样生成的jar是包含工程里所有类的,有时我们需要指定一些包和类来生成jar。
    下面是参考脚本:

      task clearJar(type: Delete) { 
            delete 'libs/sdk.jar' 
      } 
    
      task makeJar(type:org.gradle.api.tasks.bundling.Jar) {
            //指定生成的jar名
            baseName 'sdk'
            //从哪里打包class文件
            from('build/intermediates/classes/debug/org/cmdmac/cloud/pluginsdk/')
            //打包到jar后的目录结构 
            into('org/cmdmac/cloud/pluginsdk/')
            //去掉不需要打包的目录和文件 
            exclude('test/', 'BuildConfig.class', 'R.class')
            //去掉R$开头的文件 
            exclude{ it.name.startsWith('R$');} 
        } 
    
        makeJar.dependsOn(clearJar, build)
    

    在build.gradle写上后,只要在命令行执行gradle makeJar就可以在build/libs目录下找到这个jar

    如果要实现只打某个包下面的某些子包或者文件可参考如下示例:

        task makeSdkJar(type:org.gradle.api.tasks.bundling.Jar) {
            baseName 'pluginsdk'
            //只打包org.cmdmac下的org.cmdmac.pluginsdk.impl和org.cmdmac.gamecenter,其他子包不会被打包进去
            from('build/intermediates/classes/debug/org/cmdmac/') {
                include 'pluginsdk/impl'
                include 'gamecenter'
            }
            into('org/cmdmac/')
        //    exclude('R.class')
        //    exclude{ it.name.startsWith('R$');}
        }

    相关文章

      网友评论

          本文标题:gradle打包指定包和类的jar

          本文链接:https://www.haomeiwen.com/subject/iwlznxtx.html