混淆就是對發布出去的程式進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能,而混淆後的代碼很難被反編譯,即使反編譯成功也很難得出程式的真正語義。被混淆過的程式代碼,仍然遵照原來的檔案格式和指令集,執行結果也與混淆前一樣,只是混淆器將代碼中的所有變數、函式、類的名稱變為簡短的英文字母代號,在缺乏相應的函式名和程式注釋的況下,即使被反編譯,也將難以閱讀。同時混淆是不可逆的,在混淆的過程中一些不影響正常運行的信息將永久丟失,這些信息的丟失使程式變得更加難以理解。
混淆器的作用不僅僅是保護代碼,它也有精簡編譯後程式大小的作用。由於以上介紹的縮短變數和函式名以及丟失部分信息的原因, 編譯後jar檔案體積大約能減少25% ,這對當前費用較貴的無線網路傳輸是有一定意義的。