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规则生成
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。