第一步:引入
compile 'com.android.support:multidex:1.0.0'
第二步:启动引入的包
multiDexEnabled = true
第三部:写配置
dexOptions {//dex配置 javaMaxHeapSize "2g" preDexLibraries = false additionalParameters = ['--multi-dex', '--main-dex-list=' + project.rootDir.absolutePath + '/app/maindexlist.txt', '--minimal-main-dex', '--set-max-idx-number=50000'] }
====================================================================================================================================
好了,现在来解释一下第三部的内容
javaMaxHeapSize "2g" ---------> 增大配给的内存
'--set-max-idx-number=50000' ---------> 自定义方法数量(可以突破65535的限制)
'--main-dex-list=' + project.rootDir.absolutePath + '/app/maindexlist.txt' ----->指向你所写的详细配置(第一个包需要保留的类)
maindexlist.txt里面的内容
// multidex android/support/multidex/MultiDex.class android/support/multidex/MultiDexApplication.class android/support/multidex/MultiDexExtractor$1.class android/support/multidex/MultiDexExtractor.class android/support/multidex/MultiDex$V14.class android/support/multidex/MultiDex$V19.class android/support/multidex/MultiDex$V4.class android/support/multidex/ZipUtil$CentralDirectory.class android/support/multidex/ZipUtil.class // 我主包中包含的类 demo/com/mydemo/application/AppApplication.class demo/com/mydemo/activity/MainActivity.class demo/com/mydemo/utils/FixDexUtil.class demo/com/mydemo/utils/MyConstants.class
首先,引入的multidex包里面的类需要保留在分包的主包里面
第二,主包中你需要保留的类,
AppApplication.class和MainActivity.class是必须保留在主包里面的,其他的自定义
第三,在AppApplication.class中你需要考虑两种情况
第1种情况.AppApplication extends Application
你需要 一个方法
protected void attachBaseContext(Context context) { super.attachBaseContext(context); MultiDex.install(this); }
第2种情况AppApplication extends MultiDexApplication