Java代码混淆工具ProGuard是比较流行的,集成到Maven中需要使用相关插件。
通过比较,笔者认为IDFC Maven ProGuard Plug-in是较好些(也是ProGuard官方推荐)。
下面是pom的一个配置示例,这个示例是对项目中一个公共lib(有其特殊性)进行混淆,除了plugin之外的配置,还有一个.pro的配置文件(存放在${basedir}/src/main/config/${project.artifactId}-maven.pro)。
<plugin> <groupId>com.idfconnect.devtools</groupId> <artifactId>idfc-proguard-maven-plugin</artifactId> <version>1.0.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>obfuscate</goal> </goals> </execution> </executions> <configuration> <inputFile>${project.build.outputDirectory}</inputFile> <libraryJarPaths> <libraryJarPath>${java.home}/lib/jce.jar</libraryJarPath> </libraryJarPaths> <excludeManifests>false</excludeManifests> <excludeMavenDescriptor>false</excludeMavenDescriptor> <outputArtifacts> <outputArtifact> <file>${project.build.finalName}.${project.packaging}</file> </outputArtifact> </outputArtifacts> </configuration> <dependencies> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard-base</artifactId> <version>4.11</version> </dependency> </dependencies> </plugin>
-renamesourcefileattribute SourceFile -dontskipnonpubliclibraryclassmembers -keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keep public class * { public protected *; -dontskipnonpubliclibraryclassmembers -keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keep public class * { public protected *; } -keepclassmembernames class * { java.lang.Class class$(java.lang.String); java.lang.Class class$(java.lang.String, boolean); } -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers,allowoptimization enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); }
相关推荐
在实际使用中,为了确保ProGuard Maven插件正确运行,开发者需要根据项目的具体需求,细心配置插件的参数,例如指定输入的类路径、输出的目标路径,以及编写混淆规则文件(`proguard.cfg`)。混淆规则文件用于指示...
本篇文章将详细讲解如何使用Maven插件`proguard-maven-plugin`来对可执行JAR文件进行混淆。 首先,我们需要理解ProGuard是一个强大的Java类文件混淆器,它可以删除无用的代码,缩短类和方法的名称,以及重新打包类...
1. 添加ProGuard依赖:在项目的`pom.xml`文件中,我们需要添加ProGuard Maven插件。通常,我们会使用`maven-shade-plugin`来结合ProGuard工作,因为它可以方便地整合到构建流程中。例如: ```xml <groupId>...
文章首先介绍了混淆的必要性,然后详细介绍了 WEB 项目的结构和 Maven 配置文件(pom.xml),最后展示了如何使用 ProGuard 插件对项目进行混淆。 一、混淆的必要性 随着移动互联网的发展,代码的保护变得越来越...
ProGuard本身并不直接支持Maven,但我们可以借助`maven-shade-plugin`插件来间接使用它: ```xml <groupId>org.apache.maven.plugins <artifactId>maven-shade-plugin <version>3.2.4 <phase>package ...
要在Spring Boot的Maven工程中使用ProGuard,我们需要添加`maven-proguard-plugin`插件到`pom.xml`文件中。配置大致如下: ```xml <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-...
在`pom.xml`文件中,我们需要添加`maven-jar-plugin`插件来打包Java项目。以下是一个基本的配置示例: ```xml <groupId>org.apache.maven.plugins <artifactId>maven-jar-plugin <version>3.2.0 ...
**ProGuard** 是一款强大的Java字节码混淆、优化、预校验和分析工具,它可以帮助开发者保护应用程序,减少...通过Maven的插件机制和ProGuard的配置文件,我们可以灵活地控制混淆和优化的过程,以适应不同的项目需求。
"obfuscation-maven-plugin"是一个专门用于进行代码混淆的Maven插件,它整合了qprotect工具,为Java开发者提供了方便的混淆编译解决方案。 **Maven插件的作用** Maven是Java项目管理的神器,它通过配置文件pom.xml...
这个ZIP文件包含了ProGuard版本7.4.0的所有必要文件和配置。 下载和使用方法: 下载ZIP文件: 点击下载按钮获取proguard-7.4.0.zip文件。确保你选择了适合你操作系统的版本。 解压文件: 下载完成后,使用解压软件...
科尔多瓦插件保护 Cordova插件可激活ProGuard和缩小功能,以... cordova plugin add cordova-plugin-proguard此命令将配置您的build.gradle文件并将proguard-custom.txt复制到${androidPlatformDirectory}/assets/www
ProGuard可以轻松地与Maven、Gradle等构建工具集成,自动处理混淆、优化和压缩过程。在Gradle中,只需在`build.gradle`文件中添加相关配置即可。 ### 6. 结论 ProGuard作为Java和Android开发中的重要工具,不仅...
此外,通过使用如ProGuard这样的插件,还可以进行代码混淆和优化。 10. **报告生成**:Maven可以生成多种项目报告,如Javadoc、测试覆盖率、单元测试报告等,帮助开发者了解项目的状态。 总之,Apache Maven 3.3.6...
混淆过程中,你需要提供一个ProGuard配置文件(通常命名为`proguard.conf`),指定哪些类和方法需要保留,以免混淆过程中导致运行错误。在`<configuration>`标签内,添加`资源配置`引用这个文件。 **步骤4:执行...
在Android开发中,ProGuard是默认集成在构建系统中的,可以通过Gradle插件配置混淆参数。对于大型项目,合理的混淆策略可以显著减小APK的大小,同时提高应用的安全性。然而,混淆也可能导致意外的错误,因此在发布前...
对于Android开发者,这通常在`build.gradle`文件中完成,并且Google的Android插件已经内置了对ProGuard的支持。 总的来说,ProGuard是Java和Android开发中不可或缺的工具,它提供了强大的代码保护和性能优化功能,...
在现代的开发环境中,如Gradle或Maven,ProGuard 可以通过插件集成到构建流程中。在Android Studio中,ProGuard 配置通常在 `build.gradle` 文件中设置。 ```groovy android { buildTypes { release { ...
在Maven项目的pom.xml文件中,我们需要添加`maven-compiler-plugin`和`maven-proguard-plugin`插件。`maven-compiler-plugin`负责编译Java源代码,而`maven-proguard-plugin`则处理混淆过程。 ```xml ...
结合使用`Minuere`和其他Maven插件,如`Proguard`或`Shade`,可以进一步优化JAR文件。例如,`Proguard`提供更精细的代码混淆和优化功能,而`Shade`则可以将所有依赖合并到一个大JAR中,方便部署。 总之,`Minuere`...
同样,JBCO的配置也需要集成到构建流程中,通过Maven插件配置加密配置文件,然后执行相应的打包命令。 3. **操作步骤**: - 对于代码混淆,首先需要安装混淆工具,如ProGuard,然后在构建配置文件中添加混淆插件和...