抛出ClassNotFoundException但应用程序不会崩溃

时间:2017-11-09 08:00:56

标签: android gradle classnotfoundexception runtimeexception multidex

我们发布的应用中存在一个让我们发疯的问题。

该应用在过去两年中一直在Google Play中流畅运行。我们在几周前更新了Android Studio和一些库,并且“Android Vitals”从那时起显示了很多错误。据我们所知,该应用程序 NOT 崩溃(该应用程序有很多评论,但没有一个提到崩溃问题)。已在许多设备上测试过,并取得了成功。

所有类型的设备(三星Galaxy,HTC,索尼等)及各种版本(Android 4,5,6,7)都会报告“崩溃”。

所有“崩溃”都会像这样通知:

java.lang.RuntimeException: 
          at android.app.ActivityThread.handleReceiver (ActivityThread.java:2739)
          at android.app.ActivityThread.access$1900 (ActivityThread.java:153)
          at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1452)
          at android.os.Handler.dispatchMessage (Handler.java:102)
          at android.os.Looper.loop (Looper.java:154)
          at android.app.ActivityThread.main (ActivityThread.java:5523)
          at java.lang.reflect.Method.invoke (Native Method)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:739)
          at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:629)
    Caused by: java.lang.ClassNotFoundException:
          at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
          at java.lang.ClassLoader.loadClass (ClassLoader.java:511)
          at java.lang.ClassLoader.loadClass (ClassLoader.java:469)
          at android.app.ActivityThread.handleReceiver (ActivityThread.java:2734)

enter image description here

我对最近发生的事情一无所知。和 MultiDex 有什么关系吗?自从Android Studio更新后,我们遇到了一些问题 MultiDex 构建apk,看起来Android Studio缓存无法正常使用classes.dex(classes.dex的大小比classes2.dex小,以解决这个问题我们必须更改multiDex配置一次,重建,再次将multiDex配置更改为正确的参数并再次重建一次)。

这是gradle配置:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'

    defaultConfig {
...
        minSdkVersion 15
        targetSdkVersion 25
        multiDexEnabled true

        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }

    sourceSets.main {
        java.srcDir "src"
        res.srcDir "res"
        jniLibs.srcDir "libs"
        manifest.srcFile "AndroidManifest.xml"
        assets.srcDir "assets"
    }

    dexOptions {
        javaMaxHeapSize "4g"
        incremental false
        jumboMode false
        preDexLibraries false
    }

    signingConfigs {
        ...
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            debuggable false
            jniDebuggable false
            renderscriptDebuggable false
            minifyEnabled false
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

repositories {
    ...
}

configurations {
    provided
}

dependencies {
    compile 'com.android.support:multidex:1.0.1'
    ...
}

为MultiDex配置了清单:

<application
        android:allowBackup="true"
        android:name="android.support.multidex.MultiDexApplication"
        android:icon="@mipmap/ic_launcher">
...

请帮助!!

0 个答案:

没有答案