2016-12-03 105 views
-2

there在什麼情況下會在Android .apk文件中創建多個.dex文件?

我目前正在學習Ajadx項目,並且發現可能存在多個classes.dex文件。 有沒有人知道爲什麼,也許有關它的不斷髮展的Android發展歷史? 謝謝!

+1

首先閱讀https://developer.android.com/studio/build/multidex.html –

+0

相關 - http://stackoverflow.com/questions/7750448/dex-file-in-android –

回答

3

Java的最大.dex(Dalvik Executable)操作(而非dex大小)爲4g(平均值,4 GegaBytes)。

「啓用multidex」意味着系統可以根據需要創建多個dex文件。

何時發生dex操作? 只要你創建apk,就會發生(意思是,在apk構建中)。

最大單個指標大小是65K(平均值,65KiloByte)。

注意:如果您的應用程序中有太多的併發執行,則8K dex文件可能會跨越65K dex操作。即使設置總(最大)dex操作大小爲4g,也可能會出現類似錯誤。看到這張圖片, MultidexEnabled: false error。在構建項目中很好,但是,當您嘗試構建APK時會出現此錯誤。

要解決這個問題,您需要啓用multidex。在啓用multidex之後,當您構建時,Android Studio會從第一個65K dex操作內存中生成相應的第一個dex文件,第二個65K dex操作內存中的第二個dex文件等等。

現在,當您更改build.gradle以啓用multidex時,您可以構建APK。 現在,你的apk文件已經準備就緒。你解壓縮你的apk文件並進入該文件夾。你可以看到類似下面的圖片。看到這張圖片 folder structure which contains dex files

你看,有兩個dex文件:classes.dex和classes2.dex。第一個classes.dex文件(在我的例子中)是8.3MB,它是第一個65K併發dex操作的輸出。並且,第二個classes2.dex文件是剩餘dex操作的輸出(我們不知道確切的但我們知道它小於65K)。

通過這種方式,總dex文件的總體dex操作是4g(4GB),您在此處詢問。

希望我給你答案。

相關問題