最近加入一个新团队, 项目巨大!!!!好吧,其实也不是巨大,只是module依赖比较多, 整整12个- - ,从来没遇到过这么多的依赖, 编译速度被拖得好惨....
也是因为这样, 出现了65K 问题 . 就是整个项目,也就是整个.dex文件中的方法数超过65535个了, 承载不下了. 这个原因往往出现在 中型以至大型项目才会有.
这是个局限. 那么需要将一个.dex包拆分成两个包了.原理是这样:在拆分过程中, 编译器会将启动所需要的类放在一个包(此称main.dex), 而另外暂时不用到的类放到第二个包(此称second.dex)。
但是,这时候又有另外一个问题产生了, android应用启动只会启动一个main.dex包, 不会同时加载两个.dex包,所以需要我们在代码中手动引导加载第二个second.dex包.
原理简单粗暴介绍到这,下面直接上步骤。
1.在项目中所有需要打包的module下得build.gradle文件中添加 一句话 multiDexEnabled = true
defaultConfig { applicationId "com.biketo.rabbit" minSdkVersion 15 targetSdkVersion 22 versionCode 956 versionName "0.9.5.6" multiDexEnabled = true }
2.在android节点下加入如下图, 来保证分包后的编译环境
dexOptions { javaMaxHeapSize "2g" jumboMode = true }
3.导入multixdex support包,用来操作引打包过程(很重要,前面的配置都是为它而生).
//分包依赖库 compile 'com.android.support:multidex:1.0.0'
MultiDexApplication4.让你的application类最终继承 MultiDexApplication 类.
结论:分包就是这么简单, 65K问题解决, 我们又能愉快的编译了.
PS:昨天4399挂了一个码农.就在我附近. 同学们要注意身体, 愿天堂没有产品经理, 善哉善哉..