gradle打包依赖的jar(如何使用Android Studio打包混淆的Jar)

2024-07-20 08:13:52 2

gradle打包依赖的jar(如何使用Android Studio打包混淆的Jar)

本文目录

如何使用Android Studio打包混淆的Jar

使用AS打包混淆Jar包,百度一下,一片一片的,但是很多都是零零散散的写得不是很详细或是直接拷贝,按照他们的教程测试总不是很顺利,所以这里我就把我个人学习AS打包混淆Jar的成果总结出来,希望对大家有帮助。个人觉得写得还是比较详细的

使用gradle混淆打包Jar

使用AS开发项目,引入第三方库是非常方便的,我们只需要在build.gradle中配置一行代码就可以轻松引入我们需要的开发库。那么gradle可以帮我们混淆打包Jar吗?答案是当然可以!

那么我们如何打包Jar呢?其实我们在编译项目的时候,AS已经帮我们在目录build/intermediates/bundles/release/classes.jar打好了Jar。那么我们需要做的就是把Jar进行混淆的工作了。这里以个人项目bannerDemo 为例,混淆步骤如下:

在你的library的build.gradle文件中加入如下代码:

task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {// 未混淆的jar路径injars ’build/intermediates/bundles/release/classes.jar’// 混淆后的jar输出路径outjars ’build/outputs/cocolove2-banner-1.1.0.jar’// 混淆协议configuration ’proguard-rules.pro’}

配置混淆协议

1.我们先把AS自带的协议配置进来中文注释,笔者添加

***隐藏网址******隐藏网址***native 《methods》;***隐藏网址***void set*(***);*** get*();}# We want to keep methods in Activity that could be used in the XML attribute onClick-keepclassmembers class * extends android.app.Activity {public void *(android.view.View);***隐藏网址***public static ** values();public static ** valueOf(java.lang.String);}-keepclassmembers class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator CREATOR;}-keepclassmembers class **.R$* {public static 《fields》;}# The support library contains references to newer platform versions.# Don’t warn about those in case this app is linking against an older# platform version.  We know about them, and they are safe.-dontwarn android.support.**# Understand the @Keep support annotation.-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {@android.support.annotation.Keep 《methods》;}-keepclasseswithmembers class * {@android.support.annotation.Keep 《fields》;}-keepclasseswithmembers class * {@android.support.annotation.Keep 《init》(...);}

2.AS自带的配置文档还是不够的,我们还需要加入如下配置这里只展示基本操作,在实际开发中可能需要更多依赖,要根据具体情况引入自己需要的依赖包

#下面代码中的xx是指我个人的配置路径,涉及个人信息,这里以xx代替#引入依赖包rt.jar(jdk路径)-libraryjars /xxx/xx/xx/jdk1.8.0_77.jdk/Contents/Home/jre/lib/rt.jar#引入依赖包android.jar(android SDK路径)-libraryjars /xx/xx/xx/Android/sdk/platforms/android-24/android.jar#如果用到Appcompat包,需要引入-libraryjars /xxx/xxx/xx/xxx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/appcompat-v7/24.1.1/jars/classes.jar-libraryjars /xx/xx/xx/xx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/support-v4/24.1.1/jars/classes.jar#忽略警告-ignorewarnings#保证是独立的jar,没有任何项目引用,如果不写就会认为我们所有的代码是无用的,从而把所有的代码压缩掉,导出一个空的jar-dontshrink#保护泛型-keepattributes Signature

3.加入自己不想混淆的配置根据实际需求配置

-keep class com.cocolove2.library_banner.view.**{*;}

在命令行执行命令混淆Jar,提示BUILD SUCCESFUL表示成功!

//mac./gradlew makeJar//windowsgradlew makeJar

示例展示

  • 我这里以混淆library-banner 库为例

  • 1.首先我们要看看下我们的buildTool的配置,如下图:

    buildTools#Gradle

    如果你的项目的buildTool#Gradle配置如上图,那你打包混淆的第一步已经完成了,而如果选择的是本地的gradle,当你执行./gradlewmakeJar时,系统会先下载gradle,不知是网络不好还是被墙掉了,我每次尝试下载都是等了很久,最终也没成功。

    2.在项目目录下执行./gradlew makeJar打包输出混淆的Jar,如下图

    QQ20160827-0@2x.png

    QQ20160827-1@2x.png

    3.查看混淆结果.

    QQ20160827-2@2x.png

    混淆报错解决办法个人遇到的

  • #log提示缺少依赖Jar,或者路径不对
  • 解决办法:乖乖的引入缺少的依赖jar和修改路径
  • #提示如下异常 java.io.IOException: Can’t read [D:\Program
  • Files\Java\jdk1.8.0_91\jre\lib\rt.jar] (Can’t process class (Unsupported class version number
  • (maximum 51.0, Java 1.7)))
  • 解决办法:
  • 下载最新proguard(支持Java 8的版本),然后将下载的文件解压。
  • 将andorid sdk/tools/proguard/lib中的jar包,替换为刚下载解压文件中的lib包。
  • proguard5.2.1下载地址

  • 阅读

gradle打包Android程序,如何打包时不包含依赖包

你有用到v4吗?没用到去掉dependencies不就好了吗?如果有用到,那么不打入v4,apk运行可是会报错的啊。这不是到处jar包吧。

把依赖库打包进JAR中的方法

在自己为Android APP编写需要的Java library的时候,往往会在library中依赖第三方的库,举个例子:***隐藏网址*** 在功能开发完成,编译成class文件以后,如果只是使用 jar 来打包我们自己source file生成的class文件 当把这样生成JAR file放入APP工程后,由于JAR中没有对应的依赖,会有以下问题: 那么在生成JAR包时,把对应library的依赖也一同打包进JAR是比较好的解法。 使用Android Studio没有找到现成的方法,目前对gradle也不够熟悉,没法自己动手通过编写gradle task来解决问题。 那么使用 IDEA 的 Build Artifacts 就成为一个很好的方法。 初始的时候, Build -》 Build Artifacts 是灰色的。

gradle打包依赖的jar(如何使用Android Studio打包混淆的Jar)

本文编辑:admin

更多文章:


dave是什么意思?Dave这个单词是什么意思

dave是什么意思?Dave这个单词是什么意思

本文目录dave是什么意思Dave这个单词是什么意思Dave三单形式英文名Dave的含义是什么啊Dave的含义dave是什么意思Dave: n. 戴夫例句:Dave: I know what you mean. 戴夫: 我知道你的意思。Ma

2024年4月2日 21:15

hibernate的优缺点(急:Hibernate 的hql优缺点)

hibernate的优缺点(急:Hibernate 的hql优缺点)

本文目录急:Hibernate 的hql优缺点Hibernate 和 JDBC 的优缺点使用hibernate的优缺点hibernate的优缺点ibatis、hibernate 、JPA 的优缺点昭通java培训学校告诉你开发主流框架有哪些

2024年7月23日 20:18

springboot找不到启动类(SpringBoot启动类报错,有什么办法解决吗)

springboot找不到启动类(SpringBoot启动类报错,有什么办法解决吗)

本文目录SpringBoot启动类报错,有什么办法解决吗spring boot启动找不到ServletWebServerFactory beanspringboot项目一运行就报找不到spring-boo2019-01-13 Springb

2024年7月16日 22:38

警告 did you mean strncmp(如果问句是:Did you get what I mean如何只回答get it.是否正确)

警告 did you mean strncmp(如果问句是:Did you get what I mean如何只回答get it.是否正确)

本文目录如果问句是:Did you get what I mean如何只回答get it.是否正确matlab出现Warning: MATLAB did not appear to successfully set the search p

2024年7月16日 20:58

primary school是什么意思(primary school什么意思)

primary school是什么意思(primary school什么意思)

本文目录primary school什么意思primary school和elementary school有什么区别primary school是不是小学的意思primary school什么意思primary school 英[ˈ

2024年7月2日 21:25

specific所有形式(举例说明specific和specified有什么区别)

specific所有形式(举例说明specific和specified有什么区别)

“specific所有形式”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看specific所有形式(举例说明specific和specified有什么区别)!本文目录举例说明specific和specified有什么区别区分

2024年7月17日 19:00

eclipse新手入门(eclipse怎么样 初学者必看的eclipse使用指南)

eclipse新手入门(eclipse怎么样 初学者必看的eclipse使用指南)

本文目录eclipse怎么样 初学者必看的eclipse使用指南初学Java应该用什么版本的Eclipse简要介绍下eclipse的概念以及基本的使用Eclipse从入门到精通的内容简介初学者学习JavaEE都要学什么Eclipse怎么用(

2024年6月29日 12:18

正切函数值域的求法(正切函数的定义域和值域是什么)

正切函数值域的求法(正切函数的定义域和值域是什么)

本文目录正切函数的定义域和值域是什么正切怎么求求正切函数的取值范围和定义域正切函数怎样求tanx的值域是什么怎么理解正切的定义域和值域正切函数的值域正切函数的定义域和值域是什么y=tanx的定义域是:{x|x≠kπ+π/2,k∈Z}值域是:

2024年7月22日 03:26

scanf输入多个数据用空格隔开吗(C语言中用scanf加循环初始化数组,为什么每个数之间可以用空格隔开)

scanf输入多个数据用空格隔开吗(C语言中用scanf加循环初始化数组,为什么每个数之间可以用空格隔开)

本文目录C语言中用scanf加循环初始化数组,为什么每个数之间可以用空格隔开C语言输入两个数之间是用空格隔开还是用逗号scanf函数在输入数据时默认的分隔符有哪些c语言中怎么区别输入多个数字,中间用空格隔开,和输入一个按一下回车结构体数据

2024年5月16日 09:43

ps照片处理教程(求PS处理图片的基本步骤,是最基本的步骤哦)

ps照片处理教程(求PS处理图片的基本步骤,是最基本的步骤哦)

本文目录求PS处理图片的基本步骤,是最基本的步骤哦怎样用ps处理照片教程怎么用PS 修照片怎么用PS把多张图片合成一张效果图ps后期处理教程PS照片变得清晰、干净教程ps人物抠图教程求PS处理图片的基本步骤,是最基本的步骤哦1、调色:主要针

2024年5月16日 17:33

灰色裤子搭配什么颜色上衣(灰色裤子配什么颜色上衣)

灰色裤子搭配什么颜色上衣(灰色裤子配什么颜色上衣)

大家好,如果您还对灰色裤子搭配什么颜色上衣不太了解,没有关系,今天就由本站为大家分享灰色裤子搭配什么颜色上衣的知识,包括灰色裤子配什么颜色上衣的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录灰色裤子配什么颜色上衣灰

2024年8月24日 23:00

ftell fp(文件 ftell(fp)函数 fprintf(fp,”%d“,ftell(fp));是什么意思)

ftell fp(文件 ftell(fp)函数 fprintf(fp,”%d“,ftell(fp));是什么意思)

本文目录文件 ftell(fp)函数 fprintf(fp,”%d“,ftell(fp));是什么意思C语言 int flen; fseek(fp,0L,SEEK_END); /* 定位到文件末尾 */    flen=ftell(fp);

2024年6月10日 12:42

24种颜色的英文单词是?国际24种颜色指哪些

24种颜色的英文单词是?国际24种颜色指哪些

大家好,如果您还对24种颜色不太了解,没有关系,今天就由本站为大家分享24种颜色的知识,包括24种颜色的英文单词是的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录24种颜色的英文单词是国际24种颜色指哪些24种颜色

2024年7月13日 12:35

多线程运算能力(天玑9000处理器怎么样)

多线程运算能力(天玑9000处理器怎么样)

本文目录天玑9000处理器怎么样多线程和多核之间的差异CPU x 4740属性服务器和普通电脑在硬件配置上的区别是什么天玑9000处理器怎么样天玑9000是联发科推出的一款高端移动处理器,它采用了12纳米工艺制造,集成了8核心64位ARM

2024年7月21日 05:23

斯诺克最新赛程表?斯诺克赛程安排时间表

斯诺克最新赛程表?斯诺克赛程安排时间表

“斯诺克赛程”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看斯诺克最新赛程表?斯诺克赛程安排时间表!本文目录斯诺克最新赛程表斯诺克赛程安排时间表2023年斯诺克世界锦标赛赛程是怎样的2022年斯诺克英国锦标赛赛程斯诺克赛程2

2024年9月27日 21:10

s7 300plc视频教程(西门子S7-200 PLC从入门到精通 视频教程 68讲)

s7 300plc视频教程(西门子S7-200 PLC从入门到精通 视频教程 68讲)

本文目录西门子S7-200 PLC从入门到精通 视频教程 68讲怎样使用西门子S7-300编程读取PLC程序西门子plc教程视频你有吗有西门子S7-300或400PLC的视频教程吗本人需要哪里有免费的PLC西门子视频教程!是S7-300/4

2024年7月21日 08:41

jsp需要学吗(如何学习jsp建议现在学习jsp,在学习的时候要注意什么,给点建)

jsp需要学吗(如何学习jsp建议现在学习jsp,在学习的时候要注意什么,给点建)

各位老铁们,大家好,今天由我来为大家分享jsp需要学吗,以及如何学习jsp建议现在学习jsp,在学习的时候要注意什么,给点建的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,

2024年7月13日 07:40

rainfall(rainfall是什么意思)

rainfall(rainfall是什么意思)

本文目录rainfall是什么意思rainfall是可数名词吗rainfall是什么意思啊英语rain和rainfall区别是什么rainfall是什么意思1.下雨,降雨 Rainfall is abundant in the region

2024年7月19日 19:47

evb是什么意思(什么是evb保温材料)

evb是什么意思(什么是evb保温材料)

本文目录什么是evb保温材料芯片evb板是什么意思evb和pcb板有什么区别evb板子是什么意思什么是evb保温材料保温砂浆是指由阻隔型保温材料和砂浆材料混合而成的,用于构筑建筑表面保温层的一种建筑材料。EVB保温砂浆,本质为无机玻化微珠保

2024年6月26日 04:03

csv文件是什么意思(淘宝CSV文件是什么东西可以在CSV文件里面编辑宝贝吗)

csv文件是什么意思(淘宝CSV文件是什么东西可以在CSV文件里面编辑宝贝吗)

本文目录淘宝CSV文件是什么东西可以在CSV文件里面编辑宝贝吗csv是什么文件淘宝CSV文件是什么东西可以在CSV文件里面编辑宝贝吗可以,其是用相应的助理软件(淘宝助理)直接导出相应的csv文件,将自己网店商品的相关数据(如商品属性图片等信

2023年12月19日 17:20

近期文章

additive identity(additive identity是什么意思)
2024-09-30 07:50:16
本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1731
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1153
标签列表

热门搜索