将SDK更新为25开始提供ClassNotFoundException错误消息

时间:2017-01-13 06:34:29

标签: android performance android-layout android-fragments noclassdeffounderror

我在我的项目中使用了SDK 23,一切正常。

当一切正常时,这是我的gradle文件。

    compileSdkVersion 23
    buildToolsVersion "23.0.3"

defaultConfig {
      applicationId 'com.example.app'
        minSdkVersion 21
        targetSdkVersion 23
        multiDexEnabled true
}

dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.android.support:support-v4:23.3.0'
    compile 'com.android.support:cardview-v7:23.3.0'
    compile 'com.android.support:recyclerview-v7:23.3.0'
}

我已将其更新为API 25

compileSdkVersion 25
buildToolsVersion "25.0.0"

defaultConfig {
      applicationId 'com.example.app'
        minSdkVersion 21
        targetSdkVersion 25
        multiDexEnabled true
}

dependencies {
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:design:25.0.0'
compile 'com.android.support:support-v4:25.0.0'
compile 'com.android.support:cardview-v7:25.0.0'
 compile 'com.android.support:recyclerview-v7:25.0.0'
}

所以现在它成功运行了项目,但我的一项使用Google VR的活动已经开始向我提供以下错误消息。

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.example.app, PID: 32413
                                                                 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/vr/sdk/widgets/video/VrVideoView$Options;
                                                                     at com.example.app.ThreeSixtyActivity.<init>(ThreeSixtyActivity.java:97)
                                                                     at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                     at java.lang.Class.newInstance(Class.java:1650)

 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.vr.sdk.widgets.video.VrVideoView$Options" on path: DexPathList[[zip file "/data/app/com.example.app-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.app-2/lib/arm, /vendor/lib, /system/lib]]
                                                                     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)

   Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

这是给出错误消息的行

/** Configuration information for the video. **/
private Options videoOptions = new Options();

错误只发生在棒棒糖设备上,Marshmallow工作正常。

1 个答案:

答案 0 :(得分:0)

唯一真正有助于使用最新库的是:

public class AppClass extends Application {

//this will initialize multidex in your own Application class
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

}