Android工程方法数超过65535的解决办法

  • Error:Execution failed for task ‘:ttt:transformClassesWithDexForDebug‘.
    com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

    很不幸,今天被我遇到了,集成了一个Udesk客服功能,导入它的moudle,里面乱七八糟导入了一大堆第三方。作为一个第三方客服,你这样真的好么?

解决方案

  1. Gradle 配置:app的build.gradle中

      android {
          defaultConfig {
          applicationId "com.xxx.xxx"
          minSdkVersion 14
          targetSdkVersion 21  
    
          multiDexEnabled true  //加上这句话
          }
      }
  2. Gradle 配置:app的build.gradle中
      dependencies {
          compile ‘com.android.support:multidex:1.0.1‘
      }
  3. 自己的Application 类重写方法:
      @Override
      protected void attachBaseContext(Context base) {
          super.attachBaseContext(base);
          MultiDex.install(this);
      }

    也可以继承android.support.multidex.MultiDexApplication类,不用重写上面方法

  4. 如果你的应用中包含引用的lirary工程或moudle,需要将预编译设置为false:
     android {
          // ...
          dexOptions {
              preDexLibraries = false
          }
     }
  5. 当运行时如果看到如下错误:

    UNEXPECTED TOP-LEVEL ERROR:
    java.lang.OutOfMemoryError: Java heap space

    在dexOptions中有一个字段用来增加java堆内存大小:

      android {
          // ...
          dexOptions {
              javaMaxHeapSize "2g"
          }
      }
时间: 2024-11-07 01:13:04

Android工程方法数超过65535的解决办法的相关文章

Android开发中方法数超过65535的简单解决方法

有时候我们的项目会依赖很多第三方的Module,当方法数超过了65535的时候会在打包成apk的时候失败. 对于这种情况,Google官方提供了一个补丁包,将我们的项目进行分包处理. 第一步: 修改项目中所有需要打包的Module的build.gradle. 1.添加 multiDexEnabled = true.如: defaultConfig { applicationId "com.biketo.rabbit" minSdkVersion 15 targetSdkVersion

APK方法数超过65535及MultiDex解决方案

以下参考自官方文档配置方法数超过 64K 的应用 随着 Android 平台的持续成长,Android 应用的大小也在增加.当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限.早期版本的构建系统按如下方式报告这一错误: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 较新版本的 Android 构

使用android-support-multidex解决Android方法数超过65535的问题

随着应用不断更新,业务的不断增加, 应运而生的应用可能需要集成了各种第三方library,相信很多人都遇到过如下类似的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501) at com.android.

android 方法数超过65k,解决dex方法数超过65536

最近有朋友在问我,为什么我就加了一个类/一个库突然跑不起来了. 排查方式: 1.确认你的代码/引用没有问题 2.检查是否是65k问题 今天主要是解决 排查方式2的步骤,这个原因主要是因为你的apk包方法数过大. 现在解决这个已经很方便了: 方式一(繁琐):程序分包,这个比较繁琐:需要对jvm加载Class的方式有足够的了解 方式二(快速,使用AS): 1.使用google提供的分包库 implementation 'com.android.support:multidex:1.0.2' impl

Android工程gen目录无法生成的解决办法汇总

Android中的gen文件时链接程序和XML中资源定义的桥梁,所以如果gen文件夹为空可能有以下的几个原因: 1.XML文件错误,这时可以检查res文件夹中的文件是否有错误 2.导入新的Android工程,可能是Android版本的不正确报错,这时可以右击工程选择属性,然后选择Android一个版本就可以了 3.导入的android版本存在编码错误,原来人家写的是utf8 结果导入默认为gbk了

解决安卓中单个dex方法数超过65535的方法

1.百度下载  60K-methods.jar包,复制至libs文件夹中,添加到gradle中 2.在build.gradle中的defaultConfig{}下添加 multiDexEnabled true 3.  方法一.在manifest文件中,application下添加  android:name= "android.support.multidex.MultiDexApplication" 方法二.新建Application类,在onCreate方法中,添加方法 Multi

彻底解决Android 应用方法数不能超过65K的问题

尊重原创 :http://blog.csdn.net/yuanzeyao/article/details/41809423 作为一名Android开发者,相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 可能有些同学会说,解决这个问题很简单,我们

解决Android 应用方法数不能超过65K的问题

作为一名Android开发者,相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 可能有些同学会说,解决这个问题很简单,我们只需要在Project.proterty中配置一句话就Ok啦, dex.force.jumbo=true 是的,加入了这句话

安卓应用方法数超过64k解决办法:分割Dex

你的安卓项目功能很强大,对接了好多第三方开源库,项目越做越完善,代码越敲越爽.可是突然有一天报异常了. 错误:The number of method references in a .dex file cannot exceed 64K. 编译器提醒你,你的项目方法数超过64k了. AndroidStudio会提醒你: Learn how to resolve this issue at https://developer.android.com/tools/building/multidex