2017-09-09 56 views
1

構建我們的應用程序代碼時出現構建錯誤DexIndexOverflowException。關於構建錯誤:DexIndexOverflowException

似乎我們的應用程序或應用程序中包含的庫中的一些代碼正在調用Google Play服務中的功能,最高呼叫次數爲65536次。

要進一步追蹤,您可以告訴我們一種深入瞭解可能對上述錯誤負責的依賴關係的方法。

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 

    //compile files('libs/commons-collections-3.2.1.jar') 
    compile(name: 'HERE-sdk', ext: 'aar') 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support:design:25.3.1' 
    compile 'com.android.support:support-v4:25.3.1' 
    compile 'com.android.support:recyclerview-v7:25.3.1' 
    compile 'com.google.android.gms:play-services-location:11.0.4' 
    compile 'com.bugfender.sdk:android:0.8.4' 
    compile 'com.google.code.gson:gson:2.2.4' 
    compile 'com.squareup.okhttp3:logging-interceptor:3.8.0' 
    compile 'com.squareup.retrofit2:retrofit:2.0.2' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
    compile 'com.github.lzyzsd:circleprogress:1.2.1' 
    compile 'com.google.firebase:firebase-core:11.0.4' 
    compile 'com.google.firebase:firebase-auth:11.0.4' 

} 
apply plugin: 'com.google.gms.google-services' 

回答

1

它不是一個單一的依賴性的問題,這個問題是因爲所有的依賴性的方法計數加你的應用程序代碼的方法數加起來超過65536

正如android docs

提到

這兩個錯誤條件都顯示一個常見數字:65,536。這個數字非常重要,它代表了單個Dalvik Executable(DEX)字節碼文件中代碼可以調用的引用的總數。本頁面解釋瞭如何通過啓用稱爲multidex的應用程序配置來移除此限制,該配置允許您的應用程序構建和讀取多個DEX文件。

對於文檔,如果不從構建文件中刪除所有不必要的依賴關係,請確保使用您在gradle.build文件中提到的所有依賴關係,如果不嘗試構建項目。

如果你仍然有問題,那麼你需要在代碼

使multidex如果你的minSdkVersion小於21,那麼你需要將其添加到構建gradle這個

android { 
defaultConfig { 
    ... 
    minSdkVersion 21 
    targetSdkVersion 26 
    multiDexEnabled true 
} 
...} 



dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
} 

,並改變base應用程序擴展MultiDexApplication如果您正在使用單獨的應用程序類(您可能因爲您正在使用crasylitics)。如果不添加以下內容到您的清單文件中

  android:name="android.support.multidex.MultiDexApplication" > 

然後嘗試重新編譯它。

榮譽

+1

謝謝您的回答..是的,我們在應用啓用multidex,也是我們正在調試代碼也看看我們是否可以刪除一些庫.. – Relsell