将依赖的第三方库打包进自己的jar包

1、先将第三方的库包拿到,然后添加jar包到项目的libs。

2、项目的build.gradle脚本添加下面的task:

 1 task buildJar(dependsOn: ['compileReleaseJavaWithJavac'], type: Jar) {
 2     appendix = "sample"
 3     baseName = "demo"
 4     version = "1.0.0"
 5     classifier = "release"
 6 //后缀名
 7     extension = "jar"
 8 //最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension]
 9 //    archiveName = "AndroidDemo.jar"
10 //需打包的资源所在的路径集
11     def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"];
12 //初始化资源路径集
13     from srcClassDir
14     from (project.zipTree("libs/第三方库包.jar"))
15     destinationDir = file("build/libs")
16     //去除路径集下部分的资源19     exclude "**/**/BuildConfig.class"
20     exclude "**/**/BuildConfig\$*.class"
21     exclude "**/R.class"
22     exclude "**/R\$*.class"
23     //只导入资源路径集下的部分资源
24     include "**/*.class"
25     include "第三方库的包名/**/*/class"27 }

3、添加好第三方包,以及包名。

4、执行task。

jar 包 混淆:

1、打非混淆的jar包:

 1 task buildJar(dependsOn: ['compileReleaseJavaWithJavac'], type: Jar) {
 2     appendix = "sample"
 3     baseName = "demo"
 4     version = "1.0.0"
 5     classifier = "release"
 6 //后缀名
 7     extension = "jar"
 8 //最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension]
 9 //    archiveName = "AndroidDemo.jar"
10 //需打包的资源所在的路径集
11     def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"];
12 //初始化资源路径集
13     from srcClassDir
14 //去除路径集下部分的资源
15  exclude "**/**/BuildConfig.class"
16  exclude "**/**/BuildConfig\$*.class"
17  exclude "**/R.class"
18  exclude "**/R\$*.class"
19 //只导入资源路径集下的部分资源
20     include "**/*.class"
21 }

2、混淆的jar 包:

(1)修改混淆文件:proguard-rules.pro

(2)执行如下task:

 1 task proguardJar(dependsOn: ['buildJar'], type: ProGuardTask) {
 2 //Android 默认的 proguard 文件
 3     configuration android.getDefaultProguardFile('proguard-android.txt')
 4 //manifest 注册的组件对应的 proguard 文件
 5     configuration project.buildDir.absolutePath + "/intermediates/proguard-rules/release/aapt_rules.txt"
 6     configuration 'proguard-rules.pro'
 7     String inJar = buildJar.archivePath.getAbsolutePath()
 8 //输入 jar
 9     injars inJar
10 //输出 jar
11     outjars inJar.substring(0, inJar.lastIndexOf('/')) + "/proguard-${buildJar.archiveName}"
12 //设置不删除未引用的资源(类,方法等)
13     dontshrink
14     Plugin plugin = getPlugins().hasPlugin(AppPlugin) ?
15             getPlugins().findPlugin(AppPlugin) :
16             getPlugins().findPlugin(LibraryPlugin)
17     if (plugin != null) {
18         List<String> runtimeJarList
19         if (plugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
20             runtimeJarList = plugin.getRuntimeJarList()
21         }
22         else if(android.getMetaClass().getMetaMethod("getBootClasspath")) {
23             runtimeJarList = android.getBootClasspath()
24         } else {
25             runtimeJarList = plugin.getBootClasspath()
26         }
27         for (String runtimeJar : runtimeJarList) {
28 //给 proguard 添加 runtime
29             libraryjars(runtimeJar)
30         }
31     }
32 }

转载于:https://www.cnblogs.com/CharlesGrant/p/7002170.html

android studio gradle 打jar 包 (混淆+第三方库包)相关推荐

  1. android studio gradle 添加jar,android studio学习----通过gradle来导入jar包

    转载地址:http://www.th7.cn/Program/Android/201507/495477.shtml File->Project Structure 可以打开下面的图: 1.通过 ...

  2. android studio gradle 打出jar,同时将依赖的第三方jar打包在一起

    新版本的android studio 将编译之后的class文件放到了 build/intermediates/javac 目录下. 引用的时候 from('build/intermediates/j ...

  3. Android Studio 怎样打JAR包

    Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目 ...

  4. Android Studio 如何打JAR包

    Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用.  在AS中可以通过修改gradle才处理.  我们新建一个项目MakeJar,在 ...

  5. Android Studio 引用系统 jar 包的正确姿势

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 Android Studio 如何引用 jar 包,相信大家都会操作的,现在问题来了,对于系统里的 jar,比如 fra ...

  6. Android Studio gradle下载依赖包失败的解决办法

    Android Studio gradle下载依赖包失败 的解决办法 使用Android Studio在第一次导入项目或者配置完Kotlin后,会一直Build,因为需要下载一些项目中配置的依赖和gr ...

  7. Android Studio下导出jar包和aar包

    Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...

  8. Android studio 中引用jar的其实是Maven?(一)

    由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显 ...

  9. Android Studio(5)---引用jar及so文件

    Android Studio(5)---引用jar及so文件 Android studio的项目,明明把第三方的jar文件拷贝到了module的libs文件夹下,为何还是无法再代码中调用jar包中的A ...

最新文章

  1. 一口气用 Python 写了13个小游戏,摸鱼达人!
  2. docker管理平台 shipyard安装
  3. java gdal postgresql_使用GDAL/OGR操作Postgresql数据库
  4. CH9102 USB转串口应用体验
  5. Getphonenumber获得电话号码的例子
  6. linux以http方式搭建git服务器
  7. android 热更新jar,Android热更新之so库的热更新
  8. java 接口 回调_Java接口回调机制详解
  9. 在google中Flash被屏蔽无法使用
  10. Win11控制面板里没有高清音频管理器怎么办?
  11. Scratch跑酷游戏
  12. lombok报错Ambiguous method call. Both
  13. 传奇GOM引擎授权过期解决方法.
  14. 使用UltraISO制作光盘镜像
  15. excel自动求和_瞬间搞定一月数据汇总!这个Excel求和公式太牛了
  16. php 查询每个一号,SPOT系列卫星参数一览表 - 高分一号、高分二号卫星查询遥感数据购买 - 新闻资讯 - 遥感卫星影像数据查询中心-北京揽宇方圆-购买高分卫星影像...
  17. 关于MLPerf的一些调查
  18. linux命令 移动/复制文件/目录到指定目录下
  19. 手把手教你清理 windows C盘文件
  20. P3386 【模板】二分图匹配(匈牙利模板)

热门文章

  1. oracle 9.2 imp 表空间,如何imp到不同于原表空间的表空间?
  2. ddt python_python之ddt模式随记
  3. android 多媒体文件信息,Android 获取多媒体信息
  4. PyCharm中直接使用Anaconda已安装的库
  5. SparkSql引起的一场灾难
  6. maters鸿蒙系统,Flutter入门进阶之旅(十)DialogToast
  7. mongo源码学习(四)服务入口点ServiceEntryPoint
  8. mysqlbinlog: unknown variable 'default-character-s
  9. C#利用正则表达式实现字符串搜索
  10. gim-实时通讯框架