ProGuard 主要功能,可以壓縮程式去除用不到的資源,優化和混淆程式碼。 (shrinks, optimizes, obfuscates) ProGuard 工具目前已在 Android SDK 中(Android/sdk/tools/proguard),可以透過 Gradle 設定編譯發行APP應用程式。 ProGuard 處理程式碼流程: Shrink(壓縮) ProGuard 會遞歸地確定哪些類別和類別成員被使用,沒用到則會被丟棄移除。 Optimize(優化) ProGuard 會進一步分析和優化方法。比如一些無用的參數會被丟棄,一些方法會做內聯。 Obfuscate(混淆) 這個過程就是進行重命名了,把原來包含註釋意義的類別名、方法名等進行無意義重新命名為,如:a,b,c,d,e,f…等。 Preverify(預校驗) 這個步驟是將預校驗信息添加到類中。 混淆程式碼,只是增加反編譯窺看原始碼難度,但有心人士,還是有可能破譯。 ProGuard 為 GuardSquare 公司開源工具,該公司另外一套 DexGuard 為進階混淆工具須額外購買付費,且價格相當高昂,不便宜。 在開發中的程式 buildTypes 為 debug 模式,一般情況下不會開啟 Proguard。 release 模式為正式對外發佈版本,才會開啟。 Gradle 混淆開啟方法 android { buildTypes { debug { minifyEnabled false //關閉,混淆 shrinkResources false //關閉,去除用到的資源 proguardFiles getDefaultProguardFile( 'proguard-android.txt' ), 'proguard-rules.pro' } release { minifyEnabled true //開啟,混淆 shrinkResources true...