DON'T USE ENUM, SO WE SHOULD?
@use ProGuard
使用ProGuard工具不僅可以幫我們對enum和其他method進行最佳化處理,還會對code進行瘦身、混淆等動作。它會移除未使用到的code,還會對class名稱和mehod名稱做混淆擾亂,避免被decompiler。
在Google I\/O 2015大會影片上,舉了一個例子,有一個app在未經過Proguard工具compiler的package是8.4Mb size,但經過Proguard處理之後的package僅僅是4.1Mb size。
假若經過Proguard工具compiler的package size超過Android規定65536 mehtods的上限,這是就要遵循以下2原則,進行改善:
Review your app's direct and transitive dependencies
Remove unused code with ProGuard
否則就要改用MultiDex解決。
ProGuard 使用說明
在build.gradle文件中,minifEnable設為true即可,如下所示
但是Proguard不足聰明判斷哪些class和哪些method是不能夠被混淆的。
所以我們需要手動的把這些需要保留的class與method名稱添加到Proguard的相對映的文件中,如下圖所示:
dump.txt
- 描述.apk檔中,所有class間的內部結構。
mapping.txt
- 提供原始和混淆class, method, field名稱後的對映關係。
- 此檔極為重要,在release版本,收到一個bug報告,需透過它翻譯被混淆的code。
seeds.txt
- 列出未被混淆的classes和成員。
usage.txt
- 列出混淆後.apk檔被刪除的code。
詳細操作可參考
延伸閱讀
8)Removing unused resources