使⽤IntelliJIDEA开发⼀般Java应⽤程序时配置Allatori进⾏代码混
使⽤ IntelliJ IDEA 开发⼀般 Java 应⽤程序时通过 Allatori 进⾏代码混淆⾮常容易配置,下⾯总结⼀下本⼈经验,介绍⼀下配置⽅法。
⾸先在 IDEA 的 Module 所在硬盘⽬录内创建⼀个名为 allatori 的⼦⽬录,将 Allatori ⾃⼰的 jar ⽂件都复制到这个⼦⽬录下。然后在 IDEA 的Module 所在⽬录内创建两个 XML ⽂件,⼀个是 Allatori ⾃⼰的混淆配置⽂件,命名为 l;另⼀个是⽤于 Ant 构建的配置⽂件,命名为 l。⾸先看 l ⽂件的内容,基本可以作为⼀个模板:
1<?xml version="1.0" encoding="UTF-8"?>
2<config>
3<jars>
4<jar in="${artifact}" out="${artifact-obfuscated}"/>
5</jars>
6
7<classpath>
8<jar name="lib/mysql-connector-java-5.1.30-bin.jar"/>
9<jar name="lib/netty-all-4.0.18.Final.jar"/>
10<jar name="../lib/jgoodies-common.jar"/>
11<jar name="../lib/jgoodies-forms.jar"/>
12<jar name="../lib/jna-platform.jar"/>
idea开发安卓app教程13<jar name="../lib/jna.jar"/>
14</classpath>
15
16<keep-names>
17<class template="class Launcher">
18<field access="private+"/>
19<method template="private+ *(**)"/>
20</class>
21<class template="interface MacCameraDataCallback">
22<method template="private+ *(**)"/>
23</class>
24<class template="interface MacCameraErrorCallback">
25<method template="private+ *(**)"/>
26</class>
27<class template="interface MacCameraCaptureNativeLibrary">
28<method template="private+ *(**)"/>
29</class>
30</keep-names>
31
32<property name="log-file" value="l"/>
33</config>
这⾥我的 Module 中有标准 Java 类,也有接⼝。含有 main ⽅法的启动类 Launcher 不应被混淆,接⼝也不应被混淆,因为涉及到 JNA 的本地⽅法映射调⽤,所以这⾥显⽰了如何在 Allatori 混淆配置中进⾏相应设置的⽅法。同时注意,由于我这个 Module 除了使⽤⾃⼰专有的第三⽅库以外,还使⽤了 Module 所在项⽬的项⽬全局第三⽅库,所以在上⾯的混淆配置的 <classpath> ⼩节部分可以看到必须指定准确的第三⽅库相对或绝对路径⽤于编译混淆。因为开发⼀般 Java 应⽤程序,不必像 Android 应⽤程序那样把第三⽅库⼀同打进⽬标应⽤程序 jar ⽂件中,第三⽅库的 jar ⽂件编译后也是单独存在的,所以混淆配置中不必指定第三⽅库的类防⽌混淆。
下⾯再来看 l ⽂件的内容,也可以作为⼀个模板:
1<?xml version="1.0" encoding="UTF-8"?>
2<project name="MacCameraCaptureTest-allatori" default="MacCameraCaptureTest-obfuscated">
3<property name="out.classes.absolute.dir" value="/Users/Dolphin/Develop/idea/PCCameraCaptureInteractivity/out/production/MacCameraCaptureTest"/>
4<property name="out.jar.absolute.dir" value="/Users/Dolphin/Develop/idea/PCCameraCaptureInteractivity/out/artifacts/MacCameraCaptureTest_jar"/>
5
6<property name="artifact" value="${out.jar.absolute.dir}/MacCameraCaptureTest.jar"/>
7<property name="artifact-obfuscated" value="${out.jar.absolute.dir}/MacCameraCaptureTest-obfuscated.jar"/>
8
9<target name="MacCameraCaptureTest-obfuscated">
10<taskdef name="allatori" classname="com.allatori.ant.ObfuscatorTask" classpath="allatori/allatori.jar"/>
11<allatori config="l"/>
12</target>
13
14<target name="MacCameraCaptureTest-clean">
15<delete dir="${out.classes.absolute.dir}"/>
16<delete dir="${out.jar.absolute.dir}"/>
17</target>
18</project>
这⾥主要是注意,${out.classes.absolute.dir} 以及 ${out.classes.absolute.dir}-obfuscated 所定义的 IDEA 针对项⽬ Module 编译产⽣的⽬标类⽂件以及 jar ⽂件所在路径⼀定要准确。
然后我们就要将 l 加⼊到 IDEA 的 Ant Build 系统中,如下图所⽰:
点击 IDEA 右上部分 Ant Build 那个按钮,在弹出的 Dock ⼩窗⼝中点击“+”按钮,然后选择 l ⽂件即可将其加⼊到 IDEA 的 Ant Build 系统中。
接下来,我们进⼊到 IDEA 的 Project Structure 配置中,创建好 Module 的 Artifacts,在其 Artifacts 的具体属性配置中,需要指定其 Post-processing 使⽤ l 中定义的名为“你的module名字-obfuscated”的 target(我这⾥是 MacCameraCaptureTest-obfuscated),如下图所⽰:
注意红⾊区域⾥⾯,要把 Run Ant target 前⾯勾选中,然后点击其右边的“...”按钮,会出现选择窗⼝,你需要选择 l 中定义的名
为“你的module名字-obfuscated”的 target(我这⾥是 MacCameraCaptureTest-obfuscated)。
之后,点击 IDEA 菜单“Build”->“”菜单项并选择“Build”命令来进⾏ Module 的编译构建即可。你会在 Module 的 Artifact ⽣成⽬录下看到两个 jar ⽂件,其中⼀个名为“你的Module名字-obfuscated.jar”的⽂件(我这⾥是 MacCameraCaptureTest-obfuscated.jar),那就是混淆以后的 jar ⽂件了;不带“-obfuscated”后缀的 jar ⽂件是没有混淆的版本。
另外注意,如果需要清理 Module 已⽣成的类⽂件及 jar(包括混淆版本),可以通过 IDEA 的 Ant Build 执⾏ l 中定义的“你的
module名字-clean” target,就可以彻底清除它们。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。