美文网首页
解决MultiDex过程引发的主包过大

解决MultiDex过程引发的主包过大

作者: Young91 | 来源:发表于2016-09-01 01:19 被阅读0次

    Plugin


    https://github.com/eyyoung/DexFixPlugin

    主包过大起因


    官方MultiDex在分包过程中会分析Application依赖的类,并认为Application依赖的类需要放入主包中,否则由于非主包中的类未加载,将触发Class Not Found Exception.

    但当Application依赖的类过多的时候,会导致主包过大,引发打包失败,抛出"Too many classes in –main-dex-list"

    官方MultiDex不仅分析Application直接依赖类,也会分析AndroidManifest中存在的Activity,Service等依赖的类,此操作非必要,但更容易引发"Too many classes in –main-dex-list".

    相关源码


    https://android.googlesource.com/platform/tools/base/+/gradle_2.0.0/build-system/gradle-core/src/main/groovy/com/android/build/gradle/internal/transforms/MultiDexTransform.java

    https://android.googlesource.com/platform/tools/base/+/gradle_2.0.0/build-system/gradle-core/src/main/groovy/com/android/build/gradle/internal/scope/VariantScopeImpl.java

    https://android.googlesource.com/platform/dalvik/+/master/dx/src/com/android/multidex/MainDexListBuilder.java

    相关原理


    通过注入additionalParameters参数,指定maindexlist,maindexlist通过MainDexListBuilder类生成,MainDexListBuilder可通过Proguard规则生成

    相关文章

      网友评论

          本文标题:解决MultiDex过程引发的主包过大

          本文链接:https://www.haomeiwen.com/subject/zhjcettx.html