Android分包方案

来源:互联网 发布:视频转图像matlab编程 编辑:程序博客网 时间:2024/06/08 16:56

最近加入一个新团队, 项目巨大!!!!好吧,其实也不是巨大,只是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'
MultiDexApplication
4.让你的application类最终继承 MultiDexApplication 类.

结论:分包就是这么简单, 65K问题解决, 我们又能愉快的编译了.

PS:昨天4399挂了一个码农.就在我附近.快哭了 同学们要注意身体, 愿天堂没有产品经理, 善哉善哉..

1 0