Android Studio打Jar包方式(可混淆)

一、普通生成Jar包

  task makeJar(type: Copy){
        //删除之前的旧jar包
        delete 'build/libs/androidJar.jar'
        //从该目录取出jar包
        from('build/intermediates/bundles/default/')
        //将jar输出的目录
        into('build/libs/')
        //将classes.jar放入build/libs/目录下
        include('classes.jar')
        //自定义jar的名字
       rename('classes.jar','androidJar.jar')
  }
//使用makeJar命令执行该task
  makeJar.dependsOn(build)

二、 普通生成Jar包自定义类名jar生成方式,可以去除资源

  task makeJar(dependsOn: ['compileReleaseJavaWithJavac'], type: Jar) {
         appendix = "demo"
         baseName = "androidJar"
         version = "1.0.0"
         classifier = "release"
         //后缀名
         extension = "jar"
         //最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].  [extension]
           //archiveName = "androidJar"
         //需打包的资源所在的路径集
         def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"];
         //初始化资源路径集
         from srcClassDir
         //去除路径集下部分的资源
         exclude "com/dgcredit/libs/BuildConfig.class"
         exclude "com/dgcredit/libs/BuildConfig\$*.class"
         exclude "**/R.class"
         exclude "**/R\$*.class"
         //只导入资源路径集下的部分资源
         include "com/dgcredit/libs/**/*.class"
         //注: exclude include 支持可变长参数
         }

  //使用makeJar命令执行该task
  makeJar.dependsOn(build)

三、混淆后的jar生成方式,可以去除资源

     task makeGuardJar(type: proguard.gradle.ProGuardTask) {
     // 未混淆的jar
         injars 'build/intermediates/bundles/default/classes.jar'
     // 混淆后的jar路径
         outjars 'build/libs/androidJar.jar'
     // 具体需要keep住的类
         configuration 'proguard-rules.pro'
     }


 //使用makeGuardJar命令执行该task
  makeGuardJar.dependsOn(build)

四、备注

  后续会上传相关Demo到Github,欢迎Star
  GitHub
  该文章仅供学习交流所用,转载须注明出处xo


转载于:https://www.jianshu.com/p/faf90ce6bc87

猜你喜欢

转载自blog.csdn.net/weixin_42602900/article/details/126662249
今日推荐