Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 4.2、Android Studio壓縮你的代碼和資源

4.2、Android Studio壓縮你的代碼和資源

編輯:關於Android編程

為了讓你的APK文件盡可能的小,你需要在構建的時候開啟壓縮來移除無用的代碼和資源。

代碼壓縮可在ProGuard中使用,可以檢測和清除無用的類,變量,方法和屬性,甚至包括你引用的庫。ProGuard同樣可以優化字節碼,移除無用的代碼,並且模糊剩下的類,變量和方法。代碼模糊可以讓增加APK逆向工程的成本。

資源壓縮可在Andorid的Gradle插件中使用,可以清除你打包的APP中無用的資源,包含你引用的庫中的無用的資源。

壓縮你的代碼
為了啟用ProGuard的代碼壓縮,需要在build.gradle中添加minifyEnabled true。

需要注意的是,代碼壓縮會拖慢構建速度,所以,如果可能的話,盡量避免在debug構建是使用。

如下:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(‘proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}

注意:Android Studio在使用Instant Run時會禁用ProGuard。

自定義哪些代碼需要保留
在很多情況下,ProGuard很難正確的去分析,它可能會清除你的app需要的代碼。
1、 當你的app從AndroidManifest.xml中引用一個類時
2、 當你的app調用一個JNI方法
3、 當你的app使用反射來控制代碼

為了避免這個問題,需要使用-keep,如下:
-keep public class MyClass

同樣,可以添加@Keep注解來實現。

壓縮你的資源
資源壓縮需要跟代碼壓縮一起才能正常使用。在代碼壓縮出去所有的無用的代碼之後,才能辨別哪些資源仍然未被使用。如下:

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

自定義哪些資源需要保留
如果這裡有些特別的資源你需要保留或丟棄,在你的項目中創建一個包含標簽的XML文件,用tools:keep指明需要保留的資源,用tools:discard指明需要丟棄的文件。
比如:

<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*" tools:discard="@layout/unused2"></resources></code>
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved