android studio 从idea无gradle结构变成gradle编译环境,到multidex分包引流总结

        最近,公司的项目jar包太多,马上就要出现65536错误,这个错误我就不不多说,主要就是方法数过多,因为我们难免会以来第三方包,这就导致项目越来越大,总有一天会超出这个限制。

        我们公司的项目是比较老的项目了,最早的项目结构是用idea创建编译的,虽然我们也是用AS写,但确实是没有gradle的,这点大家不用怀疑。我在网上也找了很久,想在不动项目结构的基础上做到分包,但能力有限,也尝试很多次网上说的方法,可惜最后都失败了。网上最多的就是用gradle来管理multidex,因此我只好谋求把项目变成用gradle来管理。

        变成gradle项目的方法网上也有很多,但无外乎两种:一、新建一个gradle项目,把之前的项目文件一一复制过来;二、eclipse项目可以直接import到AS,AS会自动生成gradle文件。上面说了,我的项目并不是eclipse项目,所以我只能新建一个gradle项目,然后就走上我解决诸多错误的道路。。

        我在这几天里,尝试了复制项目文件以及直接import module,最后走通的个人觉得好走的路还是直接import module,这样不用担心你复制文件不全。下面记录下主要的步骤:

1、新建一个gradle项目;

2、File -----> New -----> import Module  选中你原来的项目的module, 不管是主项目的还是library 都先import进来;

3、module 都导入进来之后,需要在settings.gradle 里把新项目自动生成的app module 删除,只剩下你导入的module,然后sync now ,这时会提醒你app没有引用,是否删除,选择 yes 就行;

4、修改好settings.gradle 之后就该动主项目的build.gradle 了,在最下边的dependencies 里 添上你的library module 格式如下:(如果你的资源文件有报错,就看一下是否依赖库文件)

 
  
compile project(':zjdg_library')
compile project(':unicorn')

5、改到这里,我的项目出现了很多乱码,主要原因是项目里有UTF-8 ,同时还有GBK。这就导致乱码出现,这时千万别一个一个去改乱码,gradle编译乱码是跟JDK有关系的,java8支持lambda格式,如果出现乱码就是你的Project Language Level 低有关系,这时你只需要在application 主项目module里配置用JavaVersion 1.8即可,具体如下:

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
如果你仅仅配置到这,还是会报错,大概意思是你的应用是不支持java8 的,那么继续配置:

(     classpath 'me.tatarka:gradle-retrolambda:3.2.0'      放在Project 的 build 文件中)

android studio 从idea无gradle结构变成gradle编译环境,到multidex分包引流总结_第1张图片
然后,在主项目的module 的 build中 添加 apply plugin: 'me.tatarka.retrolambda' 


配置到这里项目基本上就没有什么错误了, 点一下build 项目,看一下项目现在可以跑起来了吗。


        在项目成功转变成gradle项目之后,就着手进行分包引流, 用multidex 来自动分包的方法,在网上有很多,这里我就不赘述了,http://blog.csdn.net/yanzhenjie1003/article/details/51818269 我参考的一下,步骤也很清晰。

         到现在这个问题终于是解决了,但别得意,使用multidex 也有注意事项,也就是说,如果你想很好的用multidex ,还是要进行一下必要的优化的!!



你可能感兴趣的:(个人随笔)