天天看點

如何修正64K問題

配置方法數超過 64K 的應用

随着 Android 平台的持續成長,Android 應用的大小也在增加。當您的應用及其引用的庫達到特定大小時,您會遇到建構錯誤,指明您的應用已達到 Android 應用建構架構的極限。早期版本的建構系統按如下方式報告這一錯誤:

規避 64K 限制

在将您的應用配置為支援使用 64K 或更多方法引用之前,您應該采取措施減少應用代碼調用的引用總數,包括由您的應用代碼或包含的庫定義的方法。下列政策可幫助您避免達到 DEX 引用限制:

  • 檢查您的應用的直接和傳遞依賴項 - 確定您在應用中使用任何龐大依賴庫所帶來的好處大于為應用添加大量代碼所帶來的弊端。一種常見的反面模式是,僅僅為了使用幾個實用方法就在應用中加入非常龐大的庫。減少您的應用代碼依賴項往往能夠幫助您規避 dex 引用限制。
  • 通過 ProGuard 移除未使用的代碼 - 為您的版本建構啟用代碼壓縮以運作 ProGuard。啟用壓縮可確定您傳遞的 APK 不含有未使用的代碼。

使用這些技巧使您不必在應用中啟用 Dalvik 可執行檔案分包,同時還會減小 APK 的總體大小。

配置您的應用進行 Dalvik 可執行檔案分包

将您的應用項目設定為使用 Dalvik 可執行檔案分包配置需要對您的應用項目進行以下修改,具體取決于應用支援的最低 Android 版本。

如果您的 

minSdkVersion

 設定為 21 或更高值,您隻需在子產品級 

build.gradle

 檔案中将 

multiDexEnabled

 設定為 

true

,如此處所示:

       minSdkVersion 21  
         targetSdkVersion 26
           
        multiDexEnabled true
           

   但是,如果您的 

minSdkVersion

 設定為 20 或更低值,則您必須按如下方式使用 Dalvik 可執行檔案分包支援庫:

  修改子產品級 

build.gradle

 檔案以啟用 Dalvik 可執行檔案分包,并将 Dalvik 可執行檔案分包庫添加為依賴項,如此處所示:

android {                 {      
   defaultConfig { 
        minSdkVersion 15   
        targetSdkVersion 26
        multiDexEnabled true   compile 'com.android.support:multidex:1.0.3'