Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發環境 >> Android Studio(十八):壓縮你的代碼和資源

Android Studio(十八):壓縮你的代碼和資源

編輯:Android開發環境

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

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

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

  壓縮你的代碼

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

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

  如下:

XML/HTML代碼
  1. android {  
  2.     buildTypes {  
  3.         release {  
  4.             minifyEnabled true  
  5.             proguardFiles getDefaultProguardFile(‘proguard-android.txt'),  
  6.                     'proguard-rules.pro'  
  7.         }  
  8.     }  
  9.     ...  
  10. }  

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

  自定義哪些代碼需要保留

  在很多情況下,ProGuard很難正確的去分析,它可能會清除你的app需要的代碼。

  1、 當你的app從AndroidManifest.xml中引用一個類時

  2、 當你的app調用一個JNI方法

  3、 當你的app使用反射來控制代碼

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

  -keep public class MyClass

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

  壓縮你的資源

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

XML/HTML代碼
  1. android {  
  2.     ...  
  3.     buildTypes {  
  4.         release {  
  5.             shrinkResources true  
  6.             minifyEnabled true  
  7.             proguardFiles getDefaultProguardFile('proguard-android.txt'),  
  8.                     'proguard-rules.pro'  
  9.         }  
  10.     }  
  11. }  

  自定義哪些資源需要保留

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

  比如:

XML/HTML代碼
  1. <?xml version=1.0" encoding="utf-8"?>  
  2. <resources xmlns:tools="http://schemas.android.com/tools"  
  3.     tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"  
  4.     tools:discard="@layout/unused2" />
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved