使用 IntelliJ IDEA 開發一般 Java 應用程式時配置 Allatori 進行代碼混淆,intellijallatori

來源:互聯網
上載者:User

使用 IntelliJ IDEA 開發一般 Java 應用程式時配置 Allatori 進行代碼混淆,intellijallatori

使用 IntelliJ IDEA 開發一般 Java 應用程式時通過 Allatori 進行代碼混淆非常容易配置,下面總結一下本人經驗,介紹一下配置方法。

首先在 IDEA 的 Module 所在硬碟目錄內建立一個名為 allatori 的子目錄,將 Allatori 自己的 jar 檔案都複製到這個子目錄下。然後在 IDEA 的 Module 所在目錄內建立兩個 XML 檔案,一個是 Allatori 自己的混淆設定檔,命名為 config-allatori.xml;另一個是用於 Ant 構建的設定檔,命名為 build-allatori.xml。首先看 config-allatori.xml 檔案的內容,基本可以作為一個模板:

 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"/>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="log.xml"/>33 </config>

這裡我的 Module 中有標準 Java 類,也有介面。含有 main 方法的啟動類 Launcher 不應被混淆,介面也不應被混淆,因為涉及到 JNA 的本地方法映射調用,所以這裡顯示了如何在 Allatori 混淆配置中進行相應設定的方法。同時注意,由於我這個 Module 除了使用自己專有的第三方庫以外,還使用了 Module 所在項目的項目全域第三方庫,所以在上面的混淆配置的 <classpath> 小節部分可以看到必須指定準確的第三方庫相對或絕對路徑用於編譯混淆。因為開發一般 Java 應用程式,不必像 Android 應用程式那樣把第三方庫一同打進目標應用程式 jar 檔案中,第三方庫的 jar 檔案編譯後也是單獨存在的,所以混淆配置中不必指定第三方庫的類防止混淆。

下面再來看 build-allatori.xml 檔案的內容,也可以作為一個模板:

 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="config-allatori.xml"/>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 檔案所在路徑一定要準確。

然後我們就要將 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,就可以徹底清除它們。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.