Android Multidex找不到类

Android Multidex找不到类,android,android-multidex,Android,Android Multidex,当我达到64K方法限制时,我在我的应用程序中激活了Multidex 我正在两个不同的设备上进行测试: 三星Galaxy S7(API 24) 阿尔卑斯山A733(API 19,谷歌服务未更新) 在第一个应用程序中,一切正常,但在第二个应用程序中,我发现了这些错误,整个应用程序冻结(不会崩溃) 错误 E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.google

当我达到64K方法限制时,我在我的应用程序中激活了Multidex

我正在两个不同的设备上进行测试:

  • 三星Galaxy S7(API 24)
  • 阿尔卑斯山A733(API 19,谷歌服务未更新)
在第一个应用程序中,一切正常,但在第二个应用程序中,我发现了这些错误,整个应用程序冻结(不会崩溃)

错误

E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.google.android.gms.internal.zzcfr.zzazv
E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.google.android.gms.internal.zzcfr.zzs
E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
我是这样做的:

在我的简历中,我补充道:

  • multiDexEnabled true
  • 编译'com.android.support:multidex:1.0.1'
    ,因为我将API 16定为Minsdk版本
在我的自定义应用程序类中

  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
为了解决这个问题,我创建了一个
multidex config.txt
文件,该文件与引用它的build.gradle位于同一文件夹中

multidex-config.txt(已编辑)

然后在渐变中:

buildTypes {

    debug {
        multiDexKeepFile file('multidex-config.txt')
        //...
    }

    debugStaging {
        initWith(buildTypes.debug)
        //...
    }

    release {
        multiDexKeepFile file('multidex-config.txt')
        minifyEnabled false
        //...
    }
}
我想我错过了什么。有线索吗

编辑 渐变文件

android {
    compileSdkVersion 26

    defaultConfig {
        //...
        minSdkVersion 16
        targetSdkVersion 25
        multiDexEnabled true
        versionCode 10
        //...
    }

    buildTypes {
        //...
        debug {
            //...
            multiDexKeepFile file('multidex-config.txt')
        }

        debugStaging {
            initWith(buildTypes.debug)
            //...
        }

        release {
            //...
            multiDexKeepFile file('multidex-config.txt')
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //...
        }
    }

    dexOptions {
        maxProcessCount 6
        javaMaxHeapSize "2g"
        jumboMode true
    }
    //...
}

ext {
    //...
}

dependencies {
    //...
    implementation 'com.android.support:multidex:1.0.2'
   //...
}

// Required by Firebase
apply plugin: 'com.google.gms.google-services'

multidex-config.txt的格式似乎与中描述的格式不同

似乎-keep不应该在这里。它的一部分 multiDexKeepProguardmultiDexKeepFile

android {
    compileSdkVersion 26

    defaultConfig {
        //...
        minSdkVersion 16
        targetSdkVersion 25
        multiDexEnabled true
        versionCode 10
        //...
    }

    buildTypes {
        //...
        debug {
            //...
            multiDexKeepFile file('multidex-config.txt')
        }

        debugStaging {
            initWith(buildTypes.debug)
            //...
        }

        release {
            //...
            multiDexKeepFile file('multidex-config.txt')
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //...
        }
    }

    dexOptions {
        maxProcessCount 6
        javaMaxHeapSize "2g"
        jumboMode true
    }
    //...
}

ext {
    //...
}

dependencies {
    //...
    implementation 'com.android.support:multidex:1.0.2'
   //...
}

// Required by Firebase
apply plugin: 'com.google.gms.google-services'
格式应该是

com/example/MyClass.class
com/example/MyOtherClass.class

由于阿尔卑斯山A733拥有API 19,(任何API级别低于20的应用程序),您的应用程序因错误
java.lang.NoClassDefFoundError而崩溃。

您可以共享您的gradle文件吗?multiDexEnabled写在哪里?你的Mindk版本是什么?此外,你需要在清单文件中添加MultiDexApplication类。@ArnabKar我已经添加了整个gradle(减去不相关/条件相同的数据)。@Radhey如前所述,我的min SDK是16。有3种方法可以为应用程序添加多索引:通过清单,通过扩展
MultiDexApplication
类,或者通过添加
Multidex.install(此)。我选择了最后一个选项是的,你是对的。我混合了multiDexKeepFile和multiDexKeepProguard的格式。所以我改变了它,但仍然得到了错误(我将用新的实现更新我的问题),从库中保留类的格式和保留自己的类的格式相同吗?是的,完全相同