android studio 从idea无gradle结构变成gradle编译环境,到multidex分包引流总结
2017-05-24 15:41
316 查看
最近,公司的项目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 格式如下:(如果你的资源文件有报错,就看一下是否依赖库文件)
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 文件中)
然后,在主项目的module 的 build中 添加 apply plugin: 'me.tatarka.retrolambda'
配置到这里项目基本上就没有什么错误了, 点一下build 项目,看一下项目现在可以跑起来了吗。
在项目成功转变成gradle项目之后,就着手进行分包引流, 用multidex 来自动分包的方法,在网上有很多,这里我就不赘述了,http://blog.csdn.net/yanzhenjie1003/article/details/51818269 我参考的一下,步骤也很清晰。
到现在这个问题终于是解决了,但别得意,使用multidex 也有注意事项,也就是说,如果你想很好的用multidex ,还是要进行一下必要的优化的!!
我们公司的项目是比较老的项目了,最早的项目结构是用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 文件中)
然后,在主项目的module 的 build中 添加 apply plugin: 'me.tatarka.retrolambda'
配置到这里项目基本上就没有什么错误了, 点一下build 项目,看一下项目现在可以跑起来了吗。
在项目成功转变成gradle项目之后,就着手进行分包引流, 用multidex 来自动分包的方法,在网上有很多,这里我就不赘述了,http://blog.csdn.net/yanzhenjie1003/article/details/51818269 我参考的一下,步骤也很清晰。
到现在这个问题终于是解决了,但别得意,使用multidex 也有注意事项,也就是说,如果你想很好的用multidex ,还是要进行一下必要的优化的!!
相关文章推荐
- Eclipse环境下 使用Gradle进行编译实现自动分包
- 解读gradle编译项目的build目录结构 - Android Studio开发
- 【android ndk】macos环境下Android Studio中利用gradle编译jni模块及配置
- 【android ndk】macos环境下Android Studio中利用gradle编译jni模块及配置
- IDEA环境gradle项目目录结构介绍
- Android Studio升级2.3.1后编译慢之gradle大坑总结
- 搭建fedora16->tiny210 Qt交叉编译环境 总结
- 搭建fedora16->tiny210 Qt交叉编译环境 总结
- sqlite使用总结(一)搭建编译与使用环境
- Ubuntu搭建android编译环境总结
- 命令行下JDK自带编译javac和执行java,以及环境变量的原理总结
- VS2010编译环境一些选项的设置(总结)
- Gradle自动化编译Android项目总结
- windows7_QtCreator2.4.1_Qt4.8.0_Qwt6.0.1_msvc2010 编译环境搭建的总结
- android studio gradle结构项目引入本地代码
- android NDk环境编译-----原创总结
- OSGI项目持续集成(环境搭建, 编译和发布总结)
- Java学习总结(一)—— >Java环境变量的配置,DOS窗口的带包编译,Jdk1.5的两个新特性(可变参数和增强的for循环)