Too many classes in --main-dex-list

在解決完方法數超過65535的問題後,因爲項目一直在更新增長代碼,後來在使用android studio生成apk時會報出:android

com.android.dex.DexException:Too many classes in --main-dex-list, main dex capacity exceededapp

 此異常是說生成的第一個classes.dex文件中類超限了。。。。。。ide

解決此問題目前的一個思路是(已測試成功):測試

在build。gradle中添加一下配置內容gradle

    afterEvaluate {ui

        tasks.matching {lua

            it.name.startsWith('dex')spa

        }.each { dx ->debug

            if (dx.additionalParameters == null) {code

                dx.additionalParameters = []

            }


          //容許生成多個dex文件

            dx.additionalParameters += '--multi-dex' // enable multidex         

            // 設置multidex.keep文件中class爲第一個dex文件中包含的class,若是沒有下一項設置此項無做用

            dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString()

             //此項添加後第一個classes.dex文件只能包含-main-dex-list列表中class  

            dx.additionalParameters += '--minimal-main-dex'   

        }

    }


固然,咱們不能本身去一個一個添加classes.dex中的class,要否則還不得累死。。。。

multidex.keep文件中的內容經過如下方式獲取:當運行項目報標題錯誤時,進入如下目錄:

   項目\build\intermediates\multi-dex\release(或debug)\maindexlist.txt

  將maindexlist.txt中沒有再application中初始化的類刪除一部分以後,剩餘的複製到multidex.keep文件中,將multidex.keep放到項目目錄下就ok了。

multidex.keep中部分文件:

android/media/ThumbnailUtils.class
android/support/multidex/MultiDex$V14.class
android/support/multidex/MultiDex$V19.class
android/support/multidex/MultiDex$V4.class
android/support/multidex/MultiDex.class
相關文章
相關標籤/搜索