当前位置: 首页 > 面试题库 >

Maven,Proguard和组装问题

甄成弘
2023-03-14
问题内容

我正在尝试使Maven与ProGuard一起工作。

我要实现以下目标:

  • 在我的源文件上运行ProGuard并生成混淆的类

  • 创建一个引用主类的清单文件,以便我可以将其作为jar执行

  • 解压缩所有关联的库jar,并创建一个包含所有库的巨大jar。该文件只能与.class和.xml文件联系。

  • 将它们组装为.zip和tar.gz文件,其中包括各种README.txt文件等。

到目前为止,我有这样的事情:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.class.path.MainClass</mainClass>
                    </manifest>
                </archive>
                <includes>
                    <include>**/*.class</include>
                    <include>**/*.xml</include>
                </includes>
            </configuration>
        </plugin>

        <plugin>
            <groupId>com.pyx4me</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <configuration>
                <options>
                    <option>-allowaccessmodification</option>
                </options>
                <obfuscate>true</obfuscate>
                <injar>classes</injar>
                <outjar>${project.build.finalName}.jar</outjar>
                <outputDirectory>${project.build.directory}</outputDirectory>
                <proguardInclude>src/main/assembly/proguard.conf</proguardInclude>
                <libs>
                    lib/rt.jar</lib>
                </libs>
            </configuration>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>proguard</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <id>assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>assembly</goal>
                    </goals>
                    <configuration>
                        <descriptors>
                            <descriptor>
                                src/main/assembly/bin.xml
                            </descriptor>
                        </descriptors>
                    </configuration>
                </execution>
            </executions>
        </plugin>

但我没有喜悦。谁能给我任何模糊的指示?

预先感谢,马特


问题答案:

这是对我有用的配置

<plugin>
    <groupId>com.pyx4me</groupId>
    <artifactId>proguard-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>proguard</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <obfuscate>true</obfuscate>
        <options>
            <option>-allowaccessmodification</option>
            <option>-keep public class com.class.path.MainClass { public *; public static *; }</option>
        </options>
        <injar>${project.build.finalName}.jar</injar>
        <outjar>${project.build.finalName}-small.jar</outjar>
        <outputDirectory>${project.build.directory}</outputDirectory>
        <libs>
            <lib>${java.home}/lib/rt.jar</lib>
            <lib>${java.home}/lib/jsse.jar</lib>
        </libs>
        <addMavenDescriptor>false</addMavenDescriptor>
    </configuration>
</plugin>

最终的jar是finalName-small.jar



 类似资料:
  • 在启用proguard时,我会得到以下警告

  • 问题内容: 我正在尝试使ProGuard成为我们Maven构建过程的一部分。问题在于,官方的Maven插件正在使用不支持Java 7的ProGuard 4.3。是否有任何简便的方法可以使该插件改为使用Proguard 4.8? 我试过为插件指定依赖关系,但ProGuard似乎为Maven模块提供了新结构(proguard-base,proguard- parent等),因此插件不能使用任何大于4.

  • 我有一个Xamarin表单项目,我正试图通过与VST的持续集成与HockeyApps集成。我的应用程序使用Java1.8进行编译,并使用ProGuard压缩android apk文件。但是当java试图编译应用程序时,它发现安装的proguard版本与java 1.8不兼容。错误如下:。。。无法处理类[android/app/ActivityTracker.class]不支持的类版本号[52.0]

  • 我看到了所有这些,所以也遵循了给出的几个步骤,但我无法解决这个问题。奇怪的是,我仍然有这个问题: 当我尝试构建我的项目时,出现1个错误和176个警告。 这是我的proguard文件: 我的build.gradle档案: 我如何解决这个问题?

  • 谈到flexjson库,我在使用dexguard时遇到了问题。在尝试使用JSONDeserializer反序列化时,我一直遇到以下错误。 是否有人有适当的规则,flexjson在Android发布apks中混淆后正常工作? 类似于gson lib的东西。

  • 我已经按照以下步骤安装了ApacheMaven。 > JDK和JAVA_HOME确保安装了JDK,并将“JAVA_HOME”变量添加为Windows环境变量。 下载Apache Maven访问Maven官网链接,下载Maven zip文件,例如:apache-maven-3.2.2-bin.zip.解压缩到你要安装Maven的文件夹。 假设您解压缩到这个文件夹–C:\Program Files\A