android studio gradle 打jar 包 (混淆+第三方库包)
将依赖的第三方库打包进自己的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 包 (混淆+第三方库包)相关推荐
- android studio gradle 添加jar,android studio学习----通过gradle来导入jar包
转载地址:http://www.th7.cn/Program/Android/201507/495477.shtml File->Project Structure 可以打开下面的图: 1.通过 ...
- android studio gradle 打出jar,同时将依赖的第三方jar打包在一起
新版本的android studio 将编译之后的class文件放到了 build/intermediates/javac 目录下. 引用的时候 from('build/intermediates/j ...
- Android Studio 怎样打JAR包
Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目 ...
- Android Studio 如何打JAR包
Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用. 在AS中可以通过修改gradle才处理. 我们新建一个项目MakeJar,在 ...
- Android Studio 引用系统 jar 包的正确姿势
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 Android Studio 如何引用 jar 包,相信大家都会操作的,现在问题来了,对于系统里的 jar,比如 fra ...
- Android Studio gradle下载依赖包失败的解决办法
Android Studio gradle下载依赖包失败 的解决办法 使用Android Studio在第一次导入项目或者配置完Kotlin后,会一直Build,因为需要下载一些项目中配置的依赖和gr ...
- Android Studio下导出jar包和aar包
Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...
- Android studio 中引用jar的其实是Maven?(一)
由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显 ...
- Android Studio(5)---引用jar及so文件
Android Studio(5)---引用jar及so文件 Android studio的项目,明明把第三方的jar文件拷贝到了module的libs文件夹下,为何还是无法再代码中调用jar包中的A ...
最新文章
- 一口气用 Python 写了13个小游戏,摸鱼达人!
- docker管理平台 shipyard安装
- java gdal postgresql_使用GDAL/OGR操作Postgresql数据库
- CH9102 USB转串口应用体验
- Getphonenumber获得电话号码的例子
- linux以http方式搭建git服务器
- android 热更新jar,Android热更新之so库的热更新
- java 接口 回调_Java接口回调机制详解
- 在google中Flash被屏蔽无法使用
- Win11控制面板里没有高清音频管理器怎么办?
- Scratch跑酷游戏
- lombok报错Ambiguous method call. Both
- 传奇GOM引擎授权过期解决方法.
- 使用UltraISO制作光盘镜像
- excel自动求和_瞬间搞定一月数据汇总!这个Excel求和公式太牛了
- php 查询每个一号,SPOT系列卫星参数一览表 - 高分一号、高分二号卫星查询遥感数据购买 - 新闻资讯 - 遥感卫星影像数据查询中心-北京揽宇方圆-购买高分卫星影像...
- 关于MLPerf的一些调查
- linux命令 移动/复制文件/目录到指定目录下
- 手把手教你清理 windows C盘文件
- P3386 【模板】二分图匹配(匈牙利模板)
热门文章
- oracle 9.2 imp 表空间,如何imp到不同于原表空间的表空间?
- ddt python_python之ddt模式随记
- android 多媒体文件信息,Android 获取多媒体信息
- PyCharm中直接使用Anaconda已安装的库
- SparkSql引起的一场灾难
- maters鸿蒙系统,Flutter入门进阶之旅(十)DialogToast
- mongo源码学习(四)服务入口点ServiceEntryPoint
- mysqlbinlog: unknown variable 'default-character-s
- C#利用正则表达式实现字符串搜索
- gim-实时通讯框架