介绍 之前介绍了如何使用命令行将Jar包根据配置文件进行ProGuard,以及ProGuard的过程,会遇到的问题等。接下来会介绍常用的ProGuard如何配置参数。...不常用的可以在官网中查询如何使用。 java -jar proguard.jar @myconfig.pro Filter 每一个类、属性、方法都会有一个全名,例如java.lang.String。...指定的Library应该至少包含一个Class文件被Application Class文件中使用extended继承了。...所以你不能使用这个option。如果因为这个option无法找到那个class的话 ,ProGuard会打印出来Warning的。...的使用
序 本文主要研究下如何使用proguard混淆springboot代码 maven com.github.wvengen...插件,使用的proguard-base版本是5.3.3 这里使用java8,因此libs那里照常配置rt.jar,jce.jar,如果是java9的话,则需要换成相应的模块。...另外指定proguard的阶段为package,springboot打包在repackage阶段 proguard.cfg 主要的重点在这个proguard.cfg配置 -target 1.8 ##指定...java版本号 -dontshrink ##默认是开启的,这里关闭shrink,即不删除没有使用的类/成员 -dontoptimize ##默认是开启的,这里关闭字节码级别的优化 -useuniqueclassmembernames...##对于类成员的命名的混淆采取唯一策略 -adaptclassstrings ## 混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代 -dontusemixedcaseclassnames
最近公司有一个项目,是外包项目,由于对方也有技术人员,出于技术上的保密,需要对class文件进行二次处理,于是网上找了好久,只发现Proguard是用的最广泛而且网上资料最多的。...2)到http://proguard.sourceforge.net/下载proguard,目前我下载并使用的是proguard5.1(注:本人下载频道也有proguard5.1)。...3)解压proguard5.1,执行 bin目录下的proguardgui.bat ? 然后会弹出如下图所示窗口 ?...5)下面开始添加支持库,这个地方很重要,很多同学刚开始使用这个工具的时候就是这里老是出问题。 点击右边的“add”。 ?...11) 设置基本完成,关掉proguard窗口,找到刚刚保存的配置文件,开始手动修改部分配置。
尽管有很多其他工具供开发者们使用,但是 ProGuard 作为 Android Gradle 构建过程的一部分,已经打包在 SDK 中。 当我们构建应用时,使用 ProGuard 有很多好处。...如何使用 ProGuard?...这会在下面的场景中发生: 当 ProGuard 移除过多的类 在某些情况下,ProGuard 并不知道一个类或者方法被使用了,例如这个类仅在反射时被使用或者仅在 XML 中被引用。...ProGuard 和 混淆后的堆栈 我之前提及到,在构建过程中 ProGuard 会在处理类文件时输出映射关系和日志文件。当您需要保留构建产物时,您应当保存好这些文件和 APK 在一起。...这些映射文件不能被其他的构建所使用,而只会在与它们一起生成的 APK 配合使用时才能确保正确。有了这些映射关系,您才能有效地 debug 用户设备的发生的崩溃。
ProGuard是android提供的一个免费的工具,它能够移除工程中一些没用的代码,或者使用语义上隐晦的名称来重命名代码中的类、字段和函数等,达到压缩、优化和混淆代码的功能。...具体来说,使用ProGuard工具,可以达到下面两个目的: 删除了源文件中没有调用的那部分代码,最大化的精简了字节码文件,使得最终生成的apk文件更小。...更多的理解,可以参考ProGuard工具的官方文档地址:http://developer.android.com/tools/help/proguard.html ProGuard工具的集成与使用环境...根据ProGuard的具体使用环境,我分在Eclipse工具和android源码两种编译环境浅谈ProGuard的使用方法。...Android源码环境中ProGuard使用 在Google发布的android源码中,面对那么多代码和文件目录,此时该如何混淆代码与配置混淆文件呢?
将下面的配置复制到你的 proguard-rules.pro 文件中: ##---------------Begin: proguard configuration for Gson --------...Proguard # removes such information by default, so configure it to keep all of it.....** { ; } # Prevent proguard from stripping interface information from TypeAdapterFactory, #...object members always null -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName...Gson 官方混淆地址:https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg
希望可以帮助大家更好的学习和使用代码混淆。...'), 'proguard-rules.pro' proguard是什么 Java官网对Proguard的定义 ProGuard is a free Java class file shrinker,...如何解决 将序列化和反序列化的类排除混淆 使用@SerializedName注解字段 @SerializedName(parameter)通过注解属性实现了 序列化的结果中,指定该属性key为parameter...一个简单的用法为 1 2 3 4 5 public class Item { @SerializedName("name") public String name; @SerializedName.../tools/proguard/bin/retrace.sh mapping映射表 Proguard进行混淆之后,会生成一个映射表,文件名为mapping.txt,我们可以使用find工具在Project
序 本文主要研究一下如何使用proguard混淆java9代码 maven com.github.wvengen...runtime 这里使用...[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass) [proguard...[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#unexpectedclass) [proguard...如果没有使用到log4j的话,可以在progurard.cfg文件中配置dontwarn忽略 can’t find referenced class [proguard] Warning: cn.example.Demo
Maven WEB 项目使用ProGuard进行混淆,最佳解决方案 近期公司的Android项目做了混淆,虽说对于保护代码并不是100%的,但混淆后的代码可以使那些不法份子难以阅读,这样也能对代码的保护做出贡献...本文中介绍的项目使用了主流的一些框架: Spring 4.1.1.RELEASE SpringMVC 4.1.1.RELEASE JackSon 2.5.0 MyBatis 3.3.0 Shiro 1.2.3...Maven集成的ProGuard插件,混淆配置不用单独建立文件 proguard </goals...classes-pg.jar 混淆后的classes文件,里面包含完整的项目结构 proguard_map.txt 混淆内容的映射 proguard_seed.txt 参与混淆的类 混淆完成后,将classes-pg.jar
buildTypes { release { //开启代码混淆 minifyEnabled true //开启资源混淆,移除未使用的资源...//proguard-rules.pro:自定义混淆文件 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...'), 'proguard-rules.pro' } } } 配置混淆文件 在app的proguard-rules.pro文件中编写混淆代码即可 混淆语法 命令 作用...######################################### # 代码混淆压缩比,在0~7之间,默认为5,一般不做修改 -optimizationpasses 5 # 混合时不使用大小写混合...com.google.gson.JsonDeserializer -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName
上周的文章已经教会大家如何搭建自己的mock proxy,那么今天我们就一起看下这个工具如何应用到项目中吧~!...具体使用 自动化目录结构 ?...解决方案(一) 使用Python multiprocess模块进行多进程启动,创建两个进程一个进程负责一个工具启动,想象很丰满现实很骨感呀,安装的时候Pycharm 出现了报错: ?...解决方案(二) 通过组内分享得知Python OS库可以直接调用python文件进行启动,这可是一根救命稻草,开始尝试使用OS库: dir = os.path.dirname(os.getcwd())
) private String id; @SerializedName("Name") private String name; @SerializedName...@SerializedName("Meta") private Map meta; @SerializedName("Port")...; @SerializedName("Check") private Check check; @SerializedName("Checks") private...OperationException(rawResponse); } } //...... } AgentConsulClient的agentServiceRegister方法使用...timeout、deregisterCriticalServiceAfter、tlsSkipVerify、status属性 AgentConsulClient的agentServiceRegister方法使用
urlopen(URL) as remote, open(JSON, 'wb') as local: local.write(remote.read()) 突然才发现,原来多个with语句可以写到一起
为什么还需要结合nginx一起使用? 原因: (1)、tomcat处理html的能力不如nginx,处理静态内容的速度不如nginx,所以静态页面交给nginx,动态请求交给tomcat处理。...(2)、tomcat接受的最大并发数有限,接连接数过多,会导致tomcat处于"僵尸"状态,对后续的连接失去响应,需要利用nginx的高并发,低消耗的特点与tomcat一起使用。...2 Nginx优点 2.1、动静分离&反向代理 nginx是一种轻量级,高性能,多进程的web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用tomcat来实现,nginx作为代理服务器的同时...,也使用其作为静态资源的服务器。...2.2、负载均衡 为了解决并发,我们可以使用负载均衡,也就是我们多增加几个tomcat服务器,当用户访问的时候,请求可以提交到空闲的tomcat服务器上。
") val errorCode: Int = 0, @SerializedName("errorMsg") val errorMsg: String?...= null, @SerializedName("data") val data: T? = null ) // 2....定义模型数据 data class Article( @SerializedName("id") val id: Int = 0, @SerializedName("link")...= null, @SerializedName("author") val author: String?...对文章有何见解,或者有何技术问题,欢迎在评论区一起留言讨论!
要想学好爬虫,必须把基础打扎实,之前发布了两篇文章,分别是使用XPATH和requests爬取网页,今天的文章是学习Beautiful Soup并通过一个例子来实现如何使用Beautiful Soup爬取网页...Beautiful Soup要和其他的解析器搭配使用,例如Python标准库中的HTML解析器和其他第三方的lxml解析器,由于lxml解析器速度快、容错能力强,因此一般和Beautiful Soup搭配使用...Hello Beautiful SoupHello ''' soup = BeautifulSoup(html,'lxml') 只需把第二个参数写成"lxml"即可使用...因此首先使用css选择器获取到class为article下面的所有li节点: soup.select(".article li") 然后查看每首歌曲的html代码: ?...这三个选择器可以混合搭配使用。
图2 显示天气情况 这款App使用前面章节介绍的UI技术、网络技术,并且使用Kotlin语言编写。其中有一些Library使用了Java编写,实际上,这款App是Kotlin和Java的结合体。...下面看一下MainActivity使用的布局文件(activity_main.xml)。...第4个方法用于分析描述天气信息的JSON数据,而且未使用Android SDK标准的API进行分析,而是使用了gson开源库对JSON数据进行分析,并返回一个Weather对象,Weather类与其他相关类的定义需要符合...Suggestion { @SerializedName("comf") public Comfort comfort; @SerializedName("cw") public...以上内容实现了一个Android App,尽管这个App不算大,但完全可以演示使用Kotlin开发Android App的完整过程。本章实现的App综合使用了UI、Activity、布局、网络等技术。
cmdCode) { thisNaNdCode = cmdCode; } public void setCsn(int csn) { this.csn= csn; } } 2、使用...当前屏最后一条告警记录流水号为44531611,查询下一屏告警记录时与服务端约定请求条件为{“FieldName”:”logId”,”Operator”:”<”, “value”:44531611},使用...假如监控TOPN的命令码为22,每次监控40条最新的告警记录,在获取这40条最新的告警记录时使用的排序条件为“按网元发生时间”和“告警流水号”进行降序排序,其JSON对象为{"CmdCode":22,...【思路】: 很容易想到的是把相同的数据作为Java的属性字段(如CmdCode、Limit、SortCond),不同的数据作为子类属性字段(如EndlessTableCond、VersionID),使用...Gson的@Since注释,但这样会影响代码的易读性,不建议使用,有兴趣的读者可以了解一下Gson的API 实例8:服务端返回给客户端的数据只是一个数组,如[96301,0,1,"链路断连","BTS"
= null) { // Customer 的 cname 属性 serializedName = data.getCname...().getBytes("UTF-8"); serializedSize = serializedName.length; }else...说明 如果发送到 Kafka 的对象不是简单的字符串或整型,那么可以使用序列化框架来创建消息记录,如 Avro、Thrift 或 Protobuf,或者使用自定义序列化器。...建议使用通用的序列化框架,因为自定义的序列化器和反序列化器把生产者和消费者紧紧地耦合在一起,很脆弱,并且容易出错。...关于 Kafka 如何使用 Avro 序列化框架,可以参考以下三篇文章: Kafka 中使用 Avro 序列化框架(一):使用传统的 avro API 自定义序列化类和反序列化类 Kafka 中使用
实际上,你可以使用同一个Adapter。只需把Activity所持有的Layout变为相应的GridView即可: <?xml version="1.0" encoding="utf-8"?
领取专属 10元无门槛券
手把手带您无忧上云