(转载)Android 方法数超过64k、编译OOM、编译过慢解决方案。
Android 方法数超过64k、编译OOM、编译过慢解决方案。
目前将项目中的leancloud的即时通讯改为环信的即时通讯。当引入easeui的时候 出现方法数超过上限的问题。
搜索一下问题,解决方法很简单。
这里简单记录一下,顺序记录一下此解决方案导致的另一个问题。
一、解决方法数超过64k的问题
问题描述:
Error:The number of method references in a .dex file cannot exceed 64K.
Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
解决方案:
1、app目录下 build.gradle
dependencies {
.....
compile 'com.android.support:multidex:1.0.1'
}
2、在 defaultConfig 中添加

defaultConfig {
applicationId "com.maiji.magkaredoctor"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
}

3、在自己的写的继承Application的类中中添加方法
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this) ;
}
二、编译OOM的问题
引入环信的easeui,导致编译速度突然变慢,而且编译经常OOM

查询了很多方法,测试都没有解决问题。最终解决办法
app目录下的build.gradle文件的android{} 中添加
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
另外一个提高编译速度的方法:
在app目录下的build.gradle文件的android{}中添加

tasks.whenTaskAdded { task ->
if (task.name.contains("lint")
|| task.name == "clean"
|| task.name.contains("Aidl")
|| task.name.contains("mockableAndroidJar")
|| task.name.contains("UnitTest")
|| task.name.contains("AndroidTest")
|| task.name.contains("Ndk")
|| task.name.contains("Jni")
) {
task.enabled = false
}
}

注意,这里是取消这些任务,比如你项目中用到了Ndk,那你就别写 task.name.contains("Ndk") 了。
切记:项目第一次编译的时候不要加这段代码,当第一次编译完之后再加,否则会出问题。
(转载)Android 方法数超过64k、编译OOM、编译过慢解决方案。的更多相关文章
- Android 方法数超过64k、编译OOM、编译过慢解决方案。
目前将项目中的leancloud的即时通讯改为环信的即时通讯.当引入easeui的时候 出现方法数超过上限的问题. 搜索一下问题,解决方法很简单. 这里简单记录一下,顺序记录一下此解决方案导致的另一个 ...
- Android工程方法数超过64k,The number of method references in a .dex file cannot exceed 64K.
最近将一个老的Eclipse项目转到Android Studio后,用gradle添加了几个依赖,项目可以make,但是一旦run就报错 Error:The number of method refe ...
- 配置方法数超过 64K 的应用
随着 Android 平台的持续成长,Android 应用的大小也在增加.当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限.早期版本的构建 ...
- APK方法数超过65535及MultiDex解决方案
以下参考自官方文档配置方法数超过 64K 的应用 随着 Android 平台的持续成长,Android 应用的大小也在增加.当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 ...
- Android方法数methods超过65536
当Android App中的方法数超过65535时,如果往下兼容到低版本设备时,就会报编译错误: Cannot fit requested classes in a single dex file. ...
- Android方法数不能超过65535
为什么方法数不能超过65535?搬上Dalvik工程师在SF上的回答,因为在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只给了16bits ...
- Dex文件方法数超过65536怎么破?
你的应用中的Dex 文件方法数超过了最大值65536的上限,会提示你: UNEXPECTED TOP-LEVEL EXCEPTION:java.lang.IllegalArgumentExceptio ...
- Multidex (方法数超过限制的处理)
报错 : Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 ...
- Android的方法数超过65535问题
Under the Hood: Dalvik patch for Facebook for Android 先来看一段中文内容 Hack Dalvik VM解决Android 2.3 DEX/Line ...
随机推荐
- Windows server 2008R2系统登录密码破解
服务器密码忘记,或者被恶意修改,系统被入侵,都是很让人烦心的事情,我试过很多方法,包括使用PE工具删除C盘Windows\System\config里面的SAM文件,可是过程都相当华美,结果都相当杯具 ...
- eoLinker上线两周年+ AMS V4.0 发布:全新UI界面,带来领先的API开发管理解决方案!
2018年7月,eoLinker 发布了<eoLinker AMS 2018年年中用户调研问卷>,前后经历一周的时间,共收集到超过1000份有效调查问卷.超过300个有效改进意见. eoL ...
- Python画三维图-----插值平滑数据
一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...
- 15.5.4 【Task实现细节】一个入口搞定一切
如果你反编译过异步方法(我非常希望你会这么做),会看到状态机中的 MoveNext() 方法 非常长,变化非常快,像是一个计算有多少 await 表达式的函数.它包含原始方法中的所有逻辑, 和处理所有 ...
- 51nod1289 大鱼吃小鱼
有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右).问足够长的时间之后 ...
- 学习Linux服务的方法
1.服务的概述:名字.功能.特点.原理.端口号 2.安装 3.配置文件的位置 4.服务器启动.关闭的脚本,查看端口 5.此服务的使用方法 6.修改配置文件,案例部署 7.排错调优
- 42.query string分词
主要知识点: 1.queery string 分词 2.38节中搜索结果解析 3,测试分词器 一.query string分词 query string必须以和index建立时相同的analy ...
- Qt Quick编程(1)
说道QML,不得不先说一下ECMAScript: ECMAScript语言的标准是由Netscape.Sun.微软.Borland等公司基于JavaScript和JScript锤炼.定义出来的. EC ...
- 2019-04-02 cast and covert
convert 专用于SQLServer,cast对于其它数据库的兼容性更好 convert 处理日期和时间值更厉害 语法不一样: cast(itemvalue as decimal(19,6)) c ...
- oculus network error ovr53225466
最近调试oculus,搬运代码到win10平台,发现最近FB对oculus的服务程序进行了更新,必须要登陆账号才能进行调试. 于是安装oculusclient,但是登陆的过程中出现了问题,如果不用代理 ...