Android Error:The number of method references in a .dex file cannot exceed 64K.

Myth丶恋晨 2022-06-03 10:46 204阅读 0赞

在导入Umeng 数据统计和push 后编译正式包出现该问题。

我一直都知道app里面的方法数是有限制的差不多64000,具体的就未曾考证了
在遇到这个问题之前,一直以为这个一个多么遥远的距离
其实并不是的,稍有不慎这个异常出来了
当前并不是你真的有编写了64k的方法数量了
大部分都是因为包的重复导入,当前就算是真的超过64k的方法,本文也将提出解决方案

参考文章

分割Dex 文件解决方法限制

  • 首先在app的build.gradle中

    (1)在dependencies中添加

    1. compile 'com.android.support:multidex:1.0.1'

    (2)在 defaultConfig 中添加

    multiDexEnabled true

    android {
    compileSdkVersion 23
    buildToolsVersion ‘23.0.2’

    defaultConfig {

    1. applicationId "XXXXXX"
    2. minSdkVersion 11
    3. targetSdkVersion 23
    4. versionCode 29
    5. versionName "2.66"
    6. multiDexEnabled true

    }
    buildType{

    1. release {
    2. minifyEnabled false
    3. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    4. }

    }
    dependencies {

    1. compile fileTree(include: ['*.jar'], dir: 'libs')
    2. .......
    3. com.android.support:multidex:1.0.1' }

(3)在 AndroidManifest.xml 中的 application 标签中添加

  1. <?xml version="1.0" encoding="utf-8"?>2
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.android.multidex.myapplication">
  4. <application
  5. ...
  6. android:name="android.support.multidex.MultiDexApplication">
  7. ...
  8. </application>
  9. </manifest>

如果你的应用程序继承 Application , 那么你需要重写Application attachBaseContext方法

  1. @Override
  2. protected void attachBaseContext(Context base) {
  3. super.attachBaseContext(base);
  4. MultiDex.install(this) ;
  5. }

这样的话就可以和64K说拜拜了

发表评论

表情:
评论列表 (有 0 条评论,204人围观)

还没有评论,来说两句吧...

相关阅读