序 本文主要研究下如何使用proguard混淆springboot代码 maven com.github.wvengen...插件,使用的proguard-base版本是5.3.3 这里使用java8,因此libs那里照常配置rt.jar,jce.jar,如果是java9的话,则需要换成相应的模块。...##对于类成员的命名的混淆采取唯一策略 -adaptclassstrings ## 混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代 -dontusemixedcaseclassnames...## 混淆时不生成大小写混合的类名,默认是可以大小写混合 -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile...@Autowired usage ProGuard 最全混淆规则说明
序 本文主要研究一下如何使用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%的,但混淆后的代码可以使那些不法份子难以阅读,这样也能对代码的保护做出贡献...) 本文的重头戏,使用Maven集成的ProGuard插件,混淆配置不用单独建立文件 使用插件的什么功能,当然是混淆--> proguard 不混淆所有的set/get方法,毕竟项目中使用的部分第三方框架(例如Shiro)会用到大量的set/get映射--> -keepclassmembers...classes-pg.jar 混淆后的classes文件,里面包含完整的项目结构 proguard_map.txt 混淆内容的映射 proguard_seed.txt 参与混淆的类 混淆完成后,将classes-pg.jar
在压缩阶段,Proguard从这些入口点开始递归确定哪些类或类成员要被使用,其余的都会被丢弃。 在优化阶段,ProGuard进一步优化代码。...在其他优化中,可以将不是入口点的类和方法设为私有,静态或最终,可以删除未使用的参数,并且可以内联一些方法。 在混淆阶段,ProGuard会重新命名不属于入口点的类和类成员。...所以当处理使用处理过的库的应用程序时,混淆器可以再次检测到它(尽管ProGuard本身不需要这个)。 只有在混淆时才适用。...其不推荐使用的名称是-defaultpackage。 只有在混淆时才适用。 警告:如果在别处移动它们,则在其包目录中查找资源文件的类将不再正常工作。如有疑问,请不要使用此选项,以免触及包装。...然后ProGuard确保一些功能与Android兼容。 例如,如果您正在处理Android应用程序,则应该指定此选项。 一般规则 -verbose 指定在处理期间写出更多信息。
混淆代码: 使用 ProGuard 工具可以对代码进行混淆,使得反编译出来的代码很难阅读和理解。...使用方式:在 build.gradle 文件中配置 proguard-rules.pro 文件,然后在项目构建时执行混淆。...使用方式:通过工具将 APK 文件与壳程序整合在一起,然后进行签名和打包。 数据加密: 将部分敏感数据进行加密处理,如字符串、文件、库等,以避免数据泄露。...iOS APP加固代码实现 以下是使用 ProGuard 工具对 iOSAPP 进行代码混淆的示例: 在项目 build.gradle 文件中添加以下代码: buildTypes { release...// 不略过非公共库类 -verbose // 输出详细信息 # 第三方库混淆规则 # 自定义混淆规则 在 proguard-rules.pro 文件中添加自定义的混淆规则。
依赖库模块 ( Library Modules ) Android 依赖库包 ( AAR Libraries ) Java 依赖库 ( JAR Libraries ) ; 应用模块 和 依赖库 放在一起进行编译...; 每个资源的值 , 存在子 app\build\intermediates\runtime_symbol_list\debug\R.txt 中 , 现在在 build 目录中不生成 R.java 了...混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 ) 【Android 安全】DEX 加密 ( Proguard 混淆 |...混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat...命令执行目录 | 暴露更少信息 ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 博客资源 :
这对于开发者来说非常有用,因为他们可能需要在混淆后的代码上进行调试或分析。然而,为了保护代码,混淆表通常不会与混淆后的代码一起发布,而是由开发者私下保管。...Minecraft Minecraft Java版本身作为一个使用Java编写的收费游戏,自然是需要使用混淆技术来保护源码程序的。...因此,除了混淆,你还应该使用其他方法来保护你的应用,例如:服务器端验证、使用安全的API、常规更新应用等。...ProGuard 使用 ProGuard 来混淆Android应用一般需要以下几个步骤: 启用ProGuard:在Android项目中,找到build.gradle文件,然后在android节中,找到buildTypes...配置ProGuard规则可能会比较复杂,因为你需要找到一个平衡,使得你的代码得到足够的保护,同时不破坏你的应用的功能。如果你的应用在混淆后崩溃或者出现问题,你可能需要调整你的ProGuard规则。
'), 'proguard-rules.pro' } } 了解了在哪里配置混淆代码之后,下面我们一起来看一下怎样混淆代码 首先,我们先来看一下 Android 默认的代码混淆配置...建议使用此选项,因为根据proguard-android-optimize.txt中的描述,优化可能会造成一些潜在风险,不能保证在所有版本的Dalvik上都正常运行。...因此,一般也不混淆。...---- Android 混淆语法介绍 看完简单的代码示例,下面我们一起拉看一下混淆的语法。...比如proguard-android.txt中使用的-dontwarn android.support.**就可以匹配android.support包下的所有内容,包括任意长度的子包。
如果在开发的时候遇到非泛型 类型“IEnumerable”不能与类型参数一起使用,那么就是变量的命名空间没弄对 在 dotnet 里面有 System.Collections.IEnumerable 和...System.Collections.IEnumerable 那么请修改代码里面的命名空间 System.Collections.Generic.IEnumerable 就可以通过编译 如果是使用...IEnumerable 提示 不能与类型实参一起使用,那么只需要添加 using 就可以 using System.Collections.Generic; 除了 IEnumerable 对于...IEnumerator 也一样,如果遇到非泛型 类型“System.Collections.IEnumerator”不能与类型实参一起使用,那么看代码里面是通过 System.Collections.IEnumerator
的源码都被一起混淆了,因此生命周期方法当然也不例外了。...-dontwarn android.support.** 这个就是默认的混淆配置文件了,我们来一起逐行阅读一下。...-dontwarn android.support.** 表示对android.support包下的代码不警告,因为support包中有很多代码都是在高版本中使用的,如果我们的项目指定的版本比较低在打包时就会给予警告...除此之外,proguard中的通配符也比较让人难懂,proguard-android.txt中就使用到了很多通配符,我们来看一下它们之间的区别: 通配符 描述 匹配类中的所有字段 混淆Jar包的支持在很早之前就有了,不管你使用多老版本的SDK,都能在 /tools目录下找到proguard这个文件夹。
通过试验,gradle 2.2之后,defaultProguardFile没有使用sdk目录下的proguard-android.txt,而是使用了gradle自带的proguard-android.txt...: 参见Proguard官方字段解读 不使用大小写混写类名 -dontusemixedcaseclassnames 默认情况下混淆的类名可以包含大小写字符的混合。...不忽略公共类库 -dontskipnonpubliclibraryclasses 指定不去忽略非public的library classes。从Proguard 4.5开始,是默认的设置。...使用微信的资源混淆方案有两种方法,第一种方式为修改gradle,第二种方式为直接使用命令行。...请参见ProGuard官方问题解答; 参考文献: 1、Android 项目的代码混淆,Android proguard 使用说明 2、google 混淆官方文档 3、混淆官方网址 4、Android混淆快速配置之
(很多老的混淆文件里会加,现在已经没必要) proguard-android.txt已经存在一些默认混淆规则,没必要在 proguard-rules.pro 重复添加 混淆简介 Android中的“混淆...”可以分为两部分,一部分是Java 代码的优化与混淆,依靠 proguard混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系,但一般我们都会放一起用...不混淆某个类 -keep public class com.biaobiao.example.Test { *; } 不混淆某个包所有的类 -keep class com.biaobiao.test....** { *; } } 不混淆某个类的子类 -keep public class * extends com.biaobiao.example.Test { *; } 不混淆所有类名中包含了...最后附上一个我在实际项目中的混淆方案 proguard-android.txt文件内容 # 代码混淆压缩比,在0~7之间 -optimizationpasses 5 # 混合时不使用大小写混合,混合后的类名为小写
请注意,只有在使用注解支持库时,才能使用此注解。 在使用-keep选项时,有许多事项需要考虑;如需了解有关自定义配置文件的详细信息,请阅读ProGuard 手册。...问题排查一章概述了您可能会在混淆代码时遇到的其他常见问题。 请注意,您每次使用 ProGuard 创建发布构建时都会覆盖mapping.txt文件,因此您每次发布新版本时都必须小心地保存一个副本。...文件: -dontusemixedcaseclassnames: 表示混淆时不使用大小写混淆类名。...com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService: 表示不混淆上述声明的两个类...转发+点赞+订阅,第一时间获取最新知识点 Android架构师之路很漫长,一起共勉吧!
其实这两者之间并没有什么关联,只不过习惯性地放在一起来使用。那么,说了这么多,Android 平台上到底该如何开启混淆呢? 2.1 启用混淆 .........不难看出,我们一般在打 release 包时才启用混淆,因为混淆会增加额外的编译时间,所以不建议在 debug 模式下启用。此外,需要注意的是:只有在启用混淆的前提下开启资源压缩才会有效!...根据 Java 官方介绍,Proguard 对应的具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能的工具 它能够检测并删除无用的类、变量、方法和属性 它能够优化字节码并删除未使用的指令...其实,我们在使用代码混淆时,ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译时出错,我们应该通过 keep 命令保留一些元素不被混淆。...本文中使用的混淆字典可以在proguard_tradition.txt查看并下载 https://github.com/Moosphan/SelfAssetRepository/blob/master/
ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。...Proguard作用 Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系...,但一般我们都会放一起讲)。...*; } 4.2 不混淆某个包所有的类 -keep class com.android.proguard.example.** { *; } 4.3 不混淆某个类的子类 -keep public...void test(java.lang.String); } 4.8 不混淆某个类的内部类 -keep class com.android.proguard.example.Test$* {
其实这两者之间并没有什么关联,只不过习惯性地放在一起来使用。那么,说了这么多,Android 平台上到底该如何开启混淆呢? 启用混淆 .........不难看出,我们一般在打 release 包时才启用混淆,因为混淆会增加额外的编译时间,所以不建议在 debug 模式下启用。此外,需要注意的是:只有在启用混淆的前提下开启资源压缩才会有效!...根据 Java 官方介绍,Proguard 对应的具体中文定义如下: 它是一个包含代码文件压缩、优化、混淆和校验等功能的工具 它能够检测并删除无用的类、变量、方法和属性 它能够优化字节码并删除未使用的指令...其实,我们在使用代码混淆时,ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译时出错,我们应该通过 keep 命令保留一些元素不被混淆。...其他不应该被混淆的 自定义控件不需要被混淆 JavaScript 调用 Java 的方法不应混淆 Java 的 native 方法不应该被混淆 项目中引用的第三方库也不建议混淆 混淆后的堆栈跟踪 代码经过
一共就两步 第一步, 在项目路径下,新增一份文件 proguard.cfg : proguard.cfg #指定Java的版本 -target 1.8 #proguard会对代码进行优化压缩,他会删除从未使用的类或者类成员变量等...# 对于类成员的命名的混淆采取唯一策略 -useuniqueclassmembernames #混淆时不生成大小写混合的类名,默认是可以大小写混合 -dontusemixedcaseclassnames...,哪些枚举保留,哪些方法名不混淆等等。...-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 -->...-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 -->
这个列表可以看到我们想要保护的类或者成员有没有被真正的保护到,尤其是那些使用通配符匹配的类。 代码压缩配置 ---- -dontshrink 声明不压缩输入文件。...混淆配置 ---- -dontobfuscate 声明不混淆。默认情况下,混淆是开启的。除了keep配置中声明的类,其它的类或者类的成员混淆后会改成简短随机的名字。...相同 -overloadaggressively 混淆的时候大量使用重载,多个方法名使用同一个混淆名,但是他们的方法签名不同。...如果没有这个配置,在第一次打包混淆之后,他们两个方法可能会被赋予不同的混淆名。如果说下一次添加代码的时候有一个类同时实现了两个接口,那么混淆的时候必然会将两个混淆后的方法名统一起来。...这意味着该元素参与优化阶段,但是不参与压缩和混淆阶段。特殊用途的时候使用。 allowobfuscation 与前几个类似,修饰-keep,只参与混淆阶段,但是不参与压缩和优化阶段。
proguard-android.txt’是Android SDK中自带的一个基本Progurad配置文件,默认是空白的,需要由开发者自行添加哪些需要混淆哪些不混淆,形如: -ignorewarning...在混淆的步骤中,ProGuard会对非EntryPoint的类和方法进行重命名。 Proguard使用 Proguard工具目录结构 ?...如果将bin目录添加到环境变量中,就可以直接在命令行中执行proguard,proguardgui和retrace命令了,避免每次都要输入java -jar + proguard.jar的使用 使用proguard.jar...,LineNumberTable 不混淆,需要保留的东西 # 保留所有的本地native方法不被混淆 -keepclasseswithmembernames class * { native 混淆必须对项目不造成任何崩溃问题。
' } } 如上在buildTypes为release版本时,设置minifyEnabled为true,即使用proguard-rules.pro混淆脚本进行混淆。...解读一个混淆配置 proguard的语法规则可参考参考链接ProGuard在线说明手册 下面是我对一个配置加上了注释,详细看过了之后,便可以打造自己的简单配置了。...#显示混淆的log,帮助排错 -verbose #代码混淆采用的算法,一般不改变,使用谷歌默认算法即可 -optimizations !...public interface com.umeng.socialize.sensor.** -keep public interface com.umeng.scrshot.** #不混淆该类及其成员变量...Android 代码混淆 选项说明 使用proguard混淆android代码
领取专属 10元无门槛券
手把手带您无忧上云