Gradle无法找到android支持v4的符号

时间:2015-12-15 16:41:56

标签: android gradle android-gradle build.gradle

我正在迁移一个曾经使用Maven进行依赖管理的Android项目到Gradle。

我是Gradle的新手,我遇到了Gradle无法编译项目的问题,因为它无法说它找不到一堆符号,而且所有符号都是support-v4库的一部分。< / p>

我认为我正确地添加了依赖项,因为我遵循了一堆教程。它们在我的build.gradle文件中列出的方式如下:

dependencies {
    compile ('com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar') {
        exclude module: 'support-v4'
    }
    compile ('com.facebook.android:facebook-android-sdk:4.1.0') {
        exclude module: 'support-v4'
    }

    compile (
        'com.android.support:appcompat-v7:22.2.1',
        'com.android.support:support-v4:22.2.1',
        'com.android.support:recyclerview-v7:22.2.1',
        'com.android.support:cardview-v7:22.2.1',
        'com.google.android.gms:play-services:8.3.0',
        'com.github.satyan:sugar:1.3',
        'se.emilsjolander:stickylistheaders:2.5.2',
        'br.com.estudio89:sentry:1.0-SNAPSHOT',
        'br.com.estudio89:syncing:1.0.17',
        'br.com.estudio89:push_messaging:1.0.3',
        'com.joanzapata.android:android-iconify:1.0.9',
        'com.squareup.picasso:picasso:2.5.2',
        'info.hoang8f:android-segmented:1.0.5',
        'joda-time:joda-time:2.7',
        'com.afollestad:material-dialogs:0.7.5.1',
        'com.facebook.rebound:rebound:0.3.8',
        'commons-net:commons-net:3.3',
        files("src/main/libs/YouTubeAndroidPlayerApi.jar")
    )

}

我花了很多时间试图解决这个问题,但我不能。

尝试从命令行构建项目时遇到的错误之一如下:

error: cannot find symbol
        menuSettings = MenuItemCompat.getActionView(menu.findItem(R.id.action_settings));
                                     ^
  symbol:   method getActionView(MenuItem)
  location: class MenuItemCompat

我做错了什么? Maven可以使用相同的依赖项编译项目。

非常感谢!

2 个答案:

答案 0 :(得分:1)

我最终搞清楚了......

依赖项com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar将support-v4作为依赖项(作为jar包含在库中)。我知道这一点,因此我将行exclude module: 'support-v4'添加到该依赖项中。但是,似乎排除不起作用,gradle实际上正在编译这个旧版本的支持库,而不是我在build.gradle文件中实际指定的版本。

我做的是从使用github上托管的库切换到另一个回购:fr.avianey.com.viewpagerindicator:library:2.4.1

我想这是一个非常特定于我的项目的错误,但我决定在这里发布,以防其他人遇到同样的问题。

答案 1 :(得分:0)

您正在使用:

 compile ('com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar') {
        exclude module: 'support-v4'
    }

这种排除不起作用。
你是从jitpack获得这个库 This library 将支持库添加为jar ,而不是作为gradle依赖项。

这意味着pom文件没有依赖关系,你不能用gradle排除jar文件,因为jar在aar文件中(没有pom,gradle怎么能知道应该排除这些文件?)

您可以检查jitpack repo中的文件: