Android支持庫版本不一致而出現的奇怪bug

錯誤信息如下:

12-26 23:08:15.983 1355-1355/com.example.recyclerviewtest E/InputEventReceiver: Exception dispatching input event.
12-26 23:08:15.983 1355-1355/com.example.recyclerviewtest D/AndroidRuntime: Shutting down VM


                                                                            --------- beginning of crash
12-26 23:08:15.986 1355-1355/com.example.recyclerviewtest E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: com.example.recyclerviewtest, PID: 1355
                                                                            java.lang.NoSuchMethodError: No static method getMatrix(Landroid/view/View;)Landroid/graphics/Matrix; in class Landroid/support/v4/view/ViewCompat; or its super classes (declaration of 'android.support.v4.view.ViewCompat' appears in /data/data/com.example.recyclerviewtest/files/instant-run/dex/slice-com.android.support-support-v4-23.4.0_6f063f634fe1c9ddbce1f9c9d7c1d57e21e3c4c6-classes.dex)
                                                                                at android.support.v7.widget.RecyclerView$LayoutManager.getTransformedBoundingBox(RecyclerView.java:8100)
                                                                                at android.support.v7.widget.OrientationHelper$2.getTransformedEndWithDecoration(OrientationHelper.java:402)
                                                                                at android.support.v7.widget.LinearLayoutManager.recycleViewsFromStart(LinearLayoutManager.java:1275)
                                                                                at android.support.v7.widget.LinearLayoutManager.recycleByLayoutState(LinearLayoutManager.java:1347)
                                                                                at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1400)
                                                                                at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1193)
                                                                                at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:1043)
                                                                                at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:1596)
                                                                                at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2704)
                                                                                at android.view.View.dispatchTouchEvent(View.java:9399)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2549)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2240)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                                at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2469)
                                                                                at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1785)
                                                                                at android.app.Activity.dispatchTouchEvent(Activity.java:2867)
                                                                                at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
                                                                                at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2430)
                                                                                at android.view.View.dispatchPointerEvent(View.java:9619)
                                                                                at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4465)
                                                                                at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4331)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3865)
                                                                                at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3918)
                                                                                at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3884)
                                                                                at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4010)
                                                                                at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3892)
                                                                                at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4067)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3865)
                                                                                at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3918)
                                                                                at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3884)
                                                                                at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3892)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3865)
                                                                                at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6164)
                                                                                at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6138
12-26 23:08:16.028 1355-1355/com.example.recyclerviewtest I/Process: Sending signal. PID: 1355 SIG: 9

此時我的gradle配置如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "com.example.recyclerviewtest"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:recyclerview-v7:24.2.1'
    testCompile 'junit:junit:4.12'
}

由於其中的兩個支持庫com.android.support:appcompat-v7:23.4.0com.android.support:recyclerview-v7:24.2.1不是相同的版本,所以出現了一些奇怪的錯誤信息。後來我把支持庫改成相同的版本後,錯誤就消失了。
在此記錄下來,希望別人在遇到相同的坑時能有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章