使用 IntelliJ IDEA 开发一般 Java 应用程序时配置 Allatori 进行代码混淆

使用 IntelliJ IDEA 开发一般 Java 应用程序时通过 Allatori 进行代码混淆非常容易配置,下面总结一下本人经验,介绍一下配置方法。

首先在 IDEA 的 Module 所在硬盘目录内创建一个名为 allatori 的子目录,将 Allatori 自己的 jar 文件都复制到这个子目录下。然后在 IDEA 的 Module 所在目录内创建两个 XML 文件,一个是 Allatori 自己的混淆配置文件,命名为 config-allatori.xml;另一个是用于 Ant 构建的配置文件,命名为 build-allatori.xml。首先看 config-allatori.xml 文件的内容,基本可以作为一个模板:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <jars>
        <jar in="${artifact}" out="${artifact-obfuscated}"/>
    </jars>

    <classpath>
        <jar name="lib/mysql-connector-java-5.1.30-bin.jar"/>
        <jar name="lib/netty-all-4.0.18.Final.jar"/>
        <jar name="../lib/jgoodies-common.jar"/>
        <jar name="../lib/jgoodies-forms.jar"/>
        <jar name="../lib/jna-platform.jar"/>
        <jar name="../lib/jna.jar"/>
    </classpath>

    <keep-names>
        <class template="class Launcher">
            <field access="private+"/>
            <method template="private+ *(**)"/>
        </class>
        <class template="interface MacCameraDataCallback">
            <method template="private+ *(**)"/>
        </class>
        <class template="interface MacCameraErrorCallback">
            <method template="private+ *(**)"/>
        </class>
        <class template="interface MacCameraCaptureNativeLibrary">
            <method template="private+ *(**)"/>
        </class>
    </keep-names>

    <property name="log-file" value="log.xml"/>
</config>

下面再来看 build-allatori.xml 文件的内容,也可以作为一个模板:

<?xml version="1.0" encoding="UTF-8"?>
<project name="MacCameraCaptureTest-allatori" default="MacCameraCaptureTest-obfuscated">
    <property name="out.classes.absolute.dir" value="/Users/Dolphin/Develop/idea/PCCameraCaptureInteractivity/out/production/MacCameraCaptureTest"/>
    <property name="out.jar.absolute.dir" value="/Users/Dolphin/Develop/idea/PCCameraCaptureInteractivity/out/artifacts/MacCameraCaptureTest_jar"/>

    <property name="artifact" value="${out.jar.absolute.dir}/MacCameraCaptureTest.jar"/>
    <property name="artifact-obfuscated" value="${out.jar.absolute.dir}/MacCameraCaptureTest-obfuscated.jar"/>

    <target name="MacCameraCaptureTest-obfuscated">
        <taskdef name="allatori" classname="com.allatori.ant.ObfuscatorTask" classpath="allatori/allatori.jar"/>
        <allatori config="config-allatori.xml"/>
    </target>

    <target name="MacCameraCaptureTest-clean">
        <delete dir="${out.classes.absolute.dir}"/>
        <delete dir="${out.jar.absolute.dir}"/>
    </target>
</project>

这里主要是注意,${out.classes.absolute.dir} 以及 ${out.classes.absolute.dir}-obfuscated 所定义的 IDEA 针对项目 Module 编译产生的目标类文件以及 jar 文件所在路径一定要准确。

然后我们就要将 build-allatori.xml 加入到 IDEA 的 Ant Build 系统中,如下图所示:

点击 IDEA 右上部分 Ant Build 那个按钮,在弹出的 Dock 小窗口中点击“+”按钮,然后选择 build-allatori.xml 文件即可将其加入到 IDEA 的 Ant Build 系统中。

接下来,我们进入到 IDEA 的 Project Structure 配置中,创建好 Module 的 Artifacts,在其 Artifacts 的具体属性配置中,需要指定其 Post-processing 使用 build-allatori.xml 中定义的名为“你的module名字-obfuscated”的 target(我这里是 MacCameraCaptureTest-obfuscated),如下图所示:

注意红色区域里面,要把 Run Ant target 前面勾选中,然后点击其右边的“...”按钮,会出现选择窗口,你需要选择 build-allatori.xml 中定义的名为“你的module名字-obfuscated”的 target(我这里是 MacCameraCaptureTest-obfuscated)。

之后,点击 IDEA 菜单“Build”->“Build Artifacts...”菜单项并选择“Build”命令来进行 Module 的编译构建即可。你会在 Module 的 Artifact 生成目录下看到两个 jar 文件,其中一个名为“你的Module名字-obfuscated.jar”的文件(我这里是 MacCameraCaptureTest-obfuscated.jar),那就是混淆以后的 jar 文件了;不带“-obfuscated”后缀的 jar 文件是没有混淆的版本。

另外注意,如果需要清理 Module 已生成的类文件及 jar(包括混淆版本),可以通过 IDEA 的 Ant Build 执行 build-allatori.xml 中定义的“你的module名字-clean” target,就可以彻底清除它们。

IntelliJ IDEA 的详细介绍请点这里
IntelliJ IDEA 的下载地址请点这里

猜你喜欢

转载自www.linuxidc.com/Linux/2015-12/126096.htm