2017-04-12 54 views
1

我已經創建了一個multidex應用程序。但在關於ProGuard的我在的build.gradle如下:Android - multiDexKeepProguard的目的是什麼?它與Gradle中的proguardFiles相比如何?

android { 
    defaultConfig { 
     ... 
     multiDexEnabled true 
    } 
    productFlavors { 
     dev { 
      // Enable pre-dexing to produce an APK that can be tested on 
      // Android 5.0+ without the time-consuming DEX build processes. 
      minSdkVersion 21 
     } 
     prod { 
      // The actual minSdkVersion for the production version. 
      minSdkVersion 14 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
     *** proguardFiles getDefaultProguardFile('proguard-android.txt'), 
               'proguard-rules.pro' 
     } 
    } 
} 
dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
} 

我的問題是關於progardFiles VS使用multiDexKeepProguard。該文件指出:

文件multiDexKeepProguard額外ProGuard的規則

文本文件中使用,以確定哪些 類編譯到主DEX文件。

如果設置,則此文件中的規則與構建系統使用的默認規則 結合使用。

因此,如果我不使用multiDexKeepProguard,那麼我的類仍然得到編譯,但可能不會在主dex文件中結束,是否正確?我不清楚這與proguardFiles有什麼不同。

Android文檔也references this

回答

0

如果您在應用程序中啓用了proguard,通常需要定義proguard規則。 proguardFiles旨在成爲progurard縮小或混淆你的應用程序的說明。

multiDexKeepProguard專門用於告訴multidex哪些文件對於在應用程序啓動時加載很重要,因此需要保留在主dex中。據我所知,它只是使用proguard語法作爲一種便利。這是可選的,通常只會在運行時遇到問題時纔會設置。

相關問題