proguard的常见配置参数
-include {filename} 从给定的文件中读取配置参数
-basedirectory {directoryname} 指定基础目录为以后相对的档案名称
-injars {class_path} 指定要处理的应用程序jar,war,ear和目录
-outjars {class_path} 指定处理完后要输出的jar,war,ear和目录的名称
-libraryjars {classpath} 指定所引用的库文件(指定为库文件的不会被处理)
-dontskipnonpubliclibraryclasses 指定不去忽略非公共的库类。
-dontskipnonpubliclibraryclassmembers 指定不去忽略包可见的库类的成员。
保留选项
-keep {Modifier} {class_specification} 保护指定的类文件和类的成员
-keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好
-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。
-keepnames {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)
-keepclassmembernames {class_specification} 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)
-keepclasseswithmembernames {class_specification} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)
-printseeds {filename} 列出类和类的成员-keep选项的清单,标准输出到给定的文件
压缩选项
-dontshrink 不压缩输入的类文件
-printusage {filename}
-whyareyoukeeping {class_specification}
优化选项
-dontoptimize 不优化输入的类文件
-assumenosideeffects {class_specification} 优化时假设指定的方法,没有任何副作用
-allowaccessmodification 优化时允许访问并修改有修饰符的类和类的成员
混淆选项
-dontobfuscate 不混淆输入的类文件
-printmapping {filename}
-applymapping {filename} 重用映射增加混淆
-obfuscationdictionary {filename} 使用给定文件中的关键字作为要混淆方法的名称
-overloadaggressively 混淆时应用侵入式重载
-useuniqueclassmembernames 确定统一的混淆类的成员名称来增加混淆
-flattenpackagehierarchy {package_name} 重新包装所有重命名的包并放在给定的单一包中
-repackageclass {package_name} 重新包装所有重命名的类文件中放在给定的单一包中
-dontusemixedcaseclassnames 混淆时不会产生形形色色的类名
-keepattributes {attribute_name,...} 保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.
-renamesourcefileattribute {string} 设置源文件中给定的字符串常量
用于android的proguard配置
可以查看android-sdk-windows\tools\proguard\proguard-android.txt
proguard常见错误及解决
1. conversion to dalvik format failed with error 1
网上主要有这几种解决方案:
1. 编辑eclipse项目下的.classpath文件,改为
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>即可
2. 下载最新版本的proguard,替换android sdk下的tools\proguard(我用的就是这个方法解决的,我的android sdk是r20,其中带的proguard是4.7的,我把它更新到4.8后就好了)
3. 将tools\proguard\bin\proguard.bat文件中的call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %×替换为:
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9(我也试了这种方式,不过当时导致了另外一个错误"Expecting class path separator ';' before ... in argument number 7")
proguard4.7的官方文档(已将大部分内容翻译为中文)
分享到:
相关推荐
proguard混淆器的详细使用方法,以及配置
java代码混洗工具 proGuard 最新Proguard5.2.1混淆器,以及ProGuard使用教程
最新Proguard5.2.1混淆器,以及ProGuard使用教程
ProGuard的主要功能是压缩、优化和混淆,下面我就先介绍一下这些概念,然后再介绍ProGuard的基本使用方法。
资源是proguard6.2.2版本,里面附上了中文的使用教程,一看就懂,非常简单,不懂的可以私信问我。
1.class 与 interface 以及 enum,class 包含 interface 与 class,另外两个关键字则严 2.extends 与 imp
java 混淆器 proguard,对class文件加密, 混淆器 很好用,附使用说明
proguard使用指南:包含下载安装,介绍,混淆器原理功能,使用的方法等
java代码很容易被反编译,以下使用proguard来保护我们的代码
1.支持ant 使用proguard标签 2.支持windows环境混淆代码 3.支持Java8+ 新版本6x系列不再提供编译好的jar包 需要自己手动编译,7系列使用的gradle编译管理 国内不太好用,6x系列基本满足Java8+ 的代码混淆,具体可以...
proguard 6.2.2的魔改版本用于混淆app、jar、class等,将所有a,b,c等等的字符改成不可见字符,从而提高安全性。...在工程目录中的build.gradle中使用自定义proguard,如:classpath ':lib:' //自定义proguard工具路径。
Android Java代码混淆工具:ProGuard简介及使用.docx
proguard6.0.13最新版本的资源。proguard6.0.13最新版本的资源。
MavenWEB项目使用ProGuard进行混淆,最佳解决方案.docx
android proguard5.3.3混淆包 替换Jar包以后使 混淆的类名方法名变成空白 使用方法 直接 替换 5.3.3版本的 混淆jar包 Mac 路径为 Contents/gradle/m2repository/net/sf/proguard/proguard-base Win gradle/m2...
java 混淆器 proguard4.4 完整版 带文档
ProGuard可以免费使用,以处理您的应用程序,无论是否商业化。ProGuard代码本身受版权保护,并根据GNU通用公共许可证(GPL)第2版的条款进行分发。用户手册也受版权保护,只能以原始形式与未修改的代码一起重新分发...
使用 proguard 混淆代码只能增加阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。 springboot多maven工程结构:proguard-root 是顶级父工程,...
This ProGuard used to obfuscate Java source code.