所有的App都在CPU上裸奔梁厉。
既然機器能跑咬荷,那么機器就能識別這些代碼,混淆的意義是為了不讓別人識別听隐,因為代碼中的內(nèi)容可能是我們不想給別人看的。
jar包里的內(nèi)容只要丟到JD-GUI里就可以清楚的看到哄啄。
未混淆的代碼.png
已混淆的代碼.png
經(jīng)過混淆后變量的名稱都發(fā)生了變化雅任,一般人看不懂它的具體含義风范,也就給看懂代碼邏輯帶來了困難。這里介紹一個工具:Proguard
這個工具在window和mac下都有沪么,可以方便的混淆Android代碼硼婿。
設(shè)置輸入輸出和依賴.png
1.首先 Add input 選中想要混淆的jar包,然后Add output 選中輸出的位置禽车。
2.然后在下面一欄中Add...選中將要依賴庫寇漫、包等等。
我依賴的文件如下哭当,可以用來參考:
- Android Sdk:
/Users/pro/Development/adt-bundle-mac-x86_64-20131030/sdk/platforms/android-19/android.jar - 它工程本身的libs目錄
/Users/pro/Documents/kunlun/April26SuspendWindow/DongGeDemo/kunlun_fbsdk/libs - 它依賴的工程的libs目錄
/Users/pro/Documents/kunlun/April26SuspendWindow/Facebook-sdk-4.10/libs
3.在Shrinking中可以選擇不想混淆的部分猪腕,因為有些內(nèi)容混淆后就會報錯,比如jni或者javabean或者某些特殊的類钦勘,在這里我們設(shè)置的不混淆Library陋葡,不混淆枚舉類,可序列化代碼彻采,Bean類腐缤。最下面還可以具體添加某些不想混淆的部分。
選擇不想混淆的部分.png
4.接下來一路Next+Process肛响,如果沒有什么異常就成功了岭粤。如果此次的配置以后會經(jīng)常使用,可以點擊Save Configuration保存這次配置特笋,下次就可以直接調(diào)用了剃浇,十分方便。
混淆成功結(jié)果.png