2017-04-19 81 views
1

我用來接收DexIndexOverflowException幾天以前,我所做的是:啓用Multidex

一)在我build.gradle文件中添加multiDexEnabled true到defaultConfig。

b)在依賴項部分添加compile 'com.android.support:multidex:1.0.1'

之後,一切都再次運行OK。

今天,我讀的d.android.com網站用戶指南(鏈接here)和它說,我也應該覆蓋MultiDexApplication類(因爲我已經從Application延伸)。

我的問題是:因爲我沒有延伸MultiDexApplication通過只做上面提到的兩件事情,我怎麼可能不接受我以前收到的例外?我現在該怎麼辦?即使現在一切正常,我是否應該嘗試並延長MultiDexApplication

+0

您是否使用pre lolipop設備測試了您的應用程序? –

+0

是的,我做了,它的工作沒有任何問題 – Mes

+0

可能是你沒有超過65536方法dex檢查也doc:http://stackoverflow.com/documentation/android/1887/multidex-and-the-dex-method-限制/ 6155 /使能multidex#噸= 20170420104458307849 –

回答

1

你的代碼必須接近方法的數量限制,我建議使整個實現。否則,您可以查看您的依賴關係,並刪除那些未使用的並使用ProGuard。良好的實踐是有益的,如果可能的話更喜歡使用方法private

您有一些使用MultiDex的可能性。

最小的支持MultiDex的應用程序。要使用傳統multidex 庫,有3種可能性:

  • 將此類聲明爲AndroidManifest.xml中的應用程序。
  • 讓您的應用程序擴展這個類。
  • 讓您的應用程序重寫attachBaseContext以protected void attachBaseContext(Context base)開始{super.attachBaseContext(base); MultiDex.install(本);

最後一個應該適合你。

+1

所以你能解釋爲什麼它沒有任何這些爲他工作? –

+2

我假設最終的dex沒有超過65536或他只考慮即時運行構建。要驗證這一點:首先確保您正在編譯最終APK。在構建最終APK後,在Android Studio中進入菜單Build \ Analyze APK,選擇它。然後檢查是否只有文件'classes.dex'(不是'classes2.dex'),所以選擇這個.dex文件。並查看其上存在的引用方法的數量。 – betorcs