在gradle中排除支持v4以删除重复但是获取java.lang.NoClassDefFoundError:android.support.v7.app.AppCompatDelegateImplV14

时间:2015-06-19 09:03:19

标签: android android-gradle android-appcompat

我有一个基于Eclipse的老项目,我把它转换为基于android studio。转换成功,但我在添加其他依赖项时遇到问题,首先我得到错误java.exe finished with non-zero exit value 2,因为重复依赖支持v4,我试图排除模块支持v4,但现在我得到java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV14 这是我的build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':SlidingMenu')
    compile project(':PhotoView')
    compile project(':viewpager')
    compile project(':StackBlur')
    compile project(':FacebookSDK')
    compile files('libs/LibAllShareInterface_2.0.0.jar')

//        Exclude module support-v4 to remove duplicate
    compile ('com.android.support:appcompat-v7:22.2.0') { exclude module: 'support-v4' }
    compile('com.android.support:design:22.2.0') { exclude module: 'support-v4' }
    compile('com.squareup.picasso:picasso:2.5.2') { exclude module: 'support-v4' }
    compile('com.android.support:recyclerview-v7:21.0.0') { exclude module: 'support-v4' }
    compile('com.android.support:cardview-v7:22.2.0') { exclude module: 'support-v4' }
    compile('com.android.support:support-annotations:22.2.0') { exclude module: 'support-v4' }

}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

虽然我不是gradle专家,而且我自己也遇到了一些问题,但是我能够使用您的依赖关系重现一个抱怨appcompat-v4的错误。

您似乎完全从所有依赖项中排除了support-v4,并且由于需要support-v4,您必须单独将其指定为依赖项,或者更改它:

compile ('com.android.support:appcompat-v7:22.2.0') { exclude module: 'support-v4' }

到此:

compile ('com.android.support:appcompat-v7:22.2.0')

所以你不要完全从你的项目中排除support-v4。

我做了第二个,项目可以构建(一个只定义了这些依赖项的示例项目)。