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") 了。

  切记:项目第一次编译的时候不要加这段代码,当第一次编译完之后再加,否则会出问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

day07.HDFS学习【大数据教程】

分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析;

1194
来自专栏安恒网络空间安全讲武堂

hackme.inndy.tw的19道web题解(上)

目录 写在前面... hide and seek. guestbook. LFI .homepage. ping. scoreboard. log...

36510
来自专栏Kubernetes

Kubernetes 1.8抢占式调

Author: xidianwangtao@gmail.com 阅读本博文前,建议先阅读解析Kubernetes 1.8中的基于Pod优先级的抢占式调度...

43514
来自专栏落影的专栏

CocoaPods移除和XCode子工程依赖图文教程

本文以GPUImage的工程为示例,去除管理依赖的CocoaPods,改用子工程依赖的方式。目的就是复用代码,多个工程可以使用同一份GPUImage的代码。 1...

3287
来自专栏Ceph对象存储方案

不重启修复磁盘乱序

1683
来自专栏数据小魔方

多表合并——MS Query合并报表

今天要跟大家分享的仍然是多表合并——MS Query合并报表! excel中隐藏着一个强大的查询工具——MS Query,但是隐藏的很深,可能很多人都不知道。它...

4077
来自专栏Coding01

推荐一款 phpcs 插件规范 Laravel 代码 (规范从本地写代码到版本控制)

我相信每个公司都有一套完备的代码规范标准,但标准是标准,如何能有效的让所有人遵守,那就要工具的辅助和实时提醒了。

794
来自专栏Hadoop数据仓库

HAWQ技术解析(十二) —— 查询优化

        即便对SELECT等数据库查询语句已经很熟悉了,但HAWQ里的查询有其自己的特点,还是需要研究一下。 一、HAWQ的查询处理流程        ...

3966
来自专栏木头编程 - moTzxx

PHP 学习筆記[2] —— 自学PHP 笔记整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

732
来自专栏塔奇克马敲代码

Windows环境下的RTKPlot_Qt版本编译时遇到的问题和解决方法

1155

扫码关注云+社区