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原則,進行改善:

  1. Review your app's direct and transitive dependencies

  2. 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。

詳細操作可參考

https://developer.android.com/studio/build/shrink-code.html

http://fecbob.pixnet.net/blog/post/36288880

延伸閱讀

8)Removing unused resources

http://hukai.me/android-performance-patterns-season-4/

results matching ""

    No results matching ""